分析とインサイト
確認済みのレポートテンプレートをレンダリング
ブラウザーまたは sosoapi report render 用に、確認済みテンプレートのレンダリング入力を準備します。 指定された確認済みデータセットとバージョンを使用し、ソースは自動更新しません。 レンダリング入力は sosoapi report render --output FILE にパイプで渡せます。
POST /analytics-api/reporting/templates/render契約確認日: · sha256:d6e85a113e8fb367
概要
ブラウザーまたは sosoapi report render 用に、確認済みテンプレートのレンダリング入力を準備します。 指定された確認済みデータセットとバージョンを使用し、ソースは自動更新しません。 レンダリング入力は sosoapi report render --output FILE にパイプで渡せます。
HTTP成功は完了ではなく受理の場合があります。バックグラウンド処理はIDを保存し、同じ処理を完了まで確認します。予約・受理された投稿はプラットフォーム確認後のみ公開済みです。タイムアウトだけでは結果を判断できません。
認証と権限
トークンは所有者の権利内でのみ使えます。各要求で所属、リソース所有権、選択ワークスペース、付与機能を確認します。coreとfullは表示だけを変え、アクセスは付与しません。
リクエストのフィールド
必須とは、親オブジェクトと選択分岐内で必須という意味です。必須の子があっても任意の親は必須になりません。以下のルールとフィールド名は契約から転記しています。
| フィールド/分岐 | 型/必須 | 制約 |
|---|---|---|
$ | object親要素内で必須 |
|
workspace_id | string親要素内で必須 |
|
id | string親要素内で必須 |
|
version | integer親要素内で必須 |
|
dataset | object親要素内で必須 |
|
dataset.contractVersion | string親要素内で必須 |
|
dataset.id | string親要素内で必須 |
|
dataset.reviewedAt | string親要素内で必須 |
|
dataset.selection | object親要素内で必須 |
|
dataset.selection.workspaceId | string親要素内で必須 |
|
dataset.selection.accountIds | array親要素内で必須 |
|
dataset.selection.accountIds[] | string任意/項目 |
|
dataset.selection.platforms | array親要素内で必須 |
|
dataset.selection.platforms[] | string任意/項目 |
|
dataset.selection.startDate | string親要素内で必須 |
|
dataset.selection.endDate | string親要素内で必須 |
|
dataset.selection.timezone | string親要素内で必須 |
|
dataset.accounts | array親要素内で必須 |
|
dataset.accounts[] | object任意/項目 |
|
dataset.accounts[].id | string親要素内で必須 |
|
dataset.accounts[].workspaceId | string親要素内で必須 |
|
dataset.accounts[].platform | string親要素内で必須 |
|
dataset.accounts[].name | string親要素内で必須 |
|
dataset.accounts[].connectionStatus | string任意/項目 |
|
dataset.accounts[].healthMessage | string任意/項目 |
|
dataset.posts | array親要素内で必須 |
|
dataset.posts[] | object任意/項目 |
|
dataset.posts[].social_post_id | string親要素内で必須 |
|
dataset.posts[].workspace_id | string親要素内で必須 |
|
dataset.posts[].social_account_id | string親要素内で必須 |
|
dataset.posts[].platform | string親要素内で必須 |
|
dataset.posts[].provider_post_id | string親要素内で必須 |
|
dataset.posts[].provider_published_at | string | null親要素内で必須 | — |
dataset.posts[].provider_published_atanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provider_published_atanyOf 2 | null親要素内で必須 | — |
dataset.posts[].content_format | string | null親要素内で必須 | — |
dataset.posts[].content_formatanyOf 1 | string親要素内で必須 |
|
dataset.posts[].content_formatanyOf 2 | null親要素内で必須 | — |
dataset.posts[].permalink | string | null親要素内で必須 | — |
dataset.posts[].permalinkanyOf 1 | string親要素内で必須 |
|
dataset.posts[].permalinkanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provider_state | string親要素内で必須 |
|
dataset.posts[].first_seen_at | string親要素内で必須 |
|
dataset.posts[].last_seen_at | string親要素内で必須 |
|
dataset.posts[].scheduled_post_id | string | null親要素内で必須 | — |
dataset.posts[].scheduled_post_idanyOf 1 | string親要素内で必須 |
|
dataset.posts[].scheduled_post_idanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provenance | object親要素内で必須 |
|
dataset.posts[].provenance.provider | string親要素内で必須 |
|
dataset.posts[].provenance.source | string親要素内で必須 |
|
dataset.posts[].provenance.source_job_id | string | null親要素内で必須 | — |
dataset.posts[].provenance.source_job_idanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provenance.source_job_idanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provenance.provider_api_version | string | null親要素内で必須 | — |
dataset.posts[].provenance.provider_api_versionanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provenance.provider_api_versionanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provenance.schema_version | string | null親要素内で必須 | — |
dataset.posts[].provenance.schema_versionanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provenance.schema_versionanyOf 2 | null親要素内で必須 | — |
dataset.sources | array親要素内で必須 |
|
dataset.sources[] | object任意/項目 |
|
dataset.sources[].accountId | string親要素内で必須 |
|
dataset.sources[].platform | string親要素内で必須 |
|
dataset.sources[].resourceKind | string親要素内で必須 |
|
dataset.sources[].providerResourceId | string | null親要素内で必須 | — |
dataset.sources[].providerResourceIdanyOf 1 | string親要素内で必須 |
|
dataset.sources[].providerResourceIdanyOf 2 | null親要素内で必須 | — |
dataset.sources[].requestId | string | null親要素内で必須 | — |
dataset.sources[].requestIdanyOf 1 | string親要素内で必須 |
|
dataset.sources[].requestIdanyOf 2 | null親要素内で必須 | — |
dataset.sources[].status | string親要素内で必須 |
|
dataset.sources[].reason | string | null親要素内で必須 | — |
dataset.sources[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.sources[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope | object | null親要素内で必須 | — |
dataset.sources[].envelopeanyOf 1 | object親要素内で必須 |
|
dataset.sources[].envelope.contract_versionanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.request_idanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.platformanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.resourceanyOf 1 | object親要素内で必須 |
|
dataset.sources[].envelope.resource.kindanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.resource.social_account_idanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.resource.provider_resource_idanyOf 1 | string | null親要素内で必須 | — |
dataset.sources[].envelope.provider_api_versionanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.fetched_atanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.statusanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availabilityanyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[]anyOf 1 | object任意/項目 |
|
dataset.sources[].envelope.availability[].scopeanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].statusanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].reasonanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnosticsanyOf 1 | object任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.http_statusanyOf 1 | integer親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.failed_stepanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.provider_codeanyOf 1 | number | string任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_codeanyOf 1 / anyOf 1 | number任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_codeanyOf 1 / anyOf 2 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.provider_subcodeanyOf 1 | number | string任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_subcodeanyOf 1 / anyOf 1 | number任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_subcodeanyOf 1 / anyOf 2 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.provider_typeanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.is_transientanyOf 1 | boolean任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_request_idanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.accessanyOf 1 | object任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.login_modeanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.provider_hostanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.required_permissionsanyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.required_permissions[]anyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.current_connection_policy_permissionsanyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.current_connection_policy_permissions[]anyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissionsanyOf 1 | array | null親要素内で必須 | — |
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissionsanyOf 1 / anyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissions[]anyOf 1 / anyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissionsanyOf 1 / anyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope.availability[].diagnostics.access.grant_evidenceanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.permission_stateanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.grant_observed_atanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.app_accessanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.next_stepanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.provider_dataanyOf 1 | any JSON value | null親要素内で必須 | — |
dataset.sources[].envelope.provider_dataanyOf 1 / anyOf 1 | any JSON value親要素内で必須 | — |
dataset.sources[].envelope.provider_dataanyOf 1 / anyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope.requested_date_rangeanyOf 1 | object | null親要素内で必須 | — |
dataset.sources[].envelope.requested_date_rangeanyOf 1 / anyOf 1 | object親要素内で必須 |
|
dataset.sources[].envelope.requested_date_range.start_dateanyOf 1 / anyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.requested_date_range.end_dateanyOf 1 / anyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.requested_date_rangeanyOf 1 / anyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope.cacheanyOf 1 | object親要素内で必須 |
|
dataset.sources[].envelope.cache.authoritativeanyOf 1 | boolean親要素内で必須 |
|
dataset.sources[].envelope.cache.statusanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.cache.expires_atanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelopeanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics | array親要素内で必須 |
|
dataset.sources[].metrics[] | object任意/項目 |
|
dataset.sources[].metrics[].key | string親要素内で必須 |
|
dataset.sources[].metrics[].definition | string親要素内で必須 |
|
dataset.sources[].metrics[].unit | string親要素内で必須 |
|
dataset.sources[].metrics[].grain | string親要素内で必須 |
|
dataset.sources[].metrics[].value | number | null親要素内で必須 | — |
dataset.sources[].metrics[].availability | string親要素内で必須 |
|
dataset.sources[].metrics[].reason | string | null親要素内で必須 | — |
dataset.sources[].metrics[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement | object親要素内で必須 |
|
dataset.sources[].metrics[].measurement.kind | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.period | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.periodanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.periodanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.start | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.startanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.startanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.end | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.endanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.endanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.timezone | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].sourcePath | string親要素内で必須 |
|
dataset.coverage | object親要素内で必須 |
|
dataset.coverage.population | string親要素内で必須 |
|
dataset.coverage.postsComplete | boolean親要素内で必須 | — |
dataset.coverage.nextCursor | string | null親要素内で必須 | — |
dataset.coverage.nextCursoranyOf 1 | string親要素内で必須 |
|
dataset.coverage.nextCursoranyOf 2 | null親要素内で必須 | — |
dataset.coverage.postLimit | integer親要素内で必須 |
|
dataset.coverage.postInsightsLimit | integer親要素内で必須 |
|
dataset.coverage.omittedPostInsights | integer親要素内で必須 |
|
dataset.coverage.notes | array親要素内で必須 |
|
dataset.coverage.notes[] | string任意/項目 |
|
dataset.customMetrics | array親要素内で必須 |
|
dataset.customMetrics[] | object任意/項目 |
|
dataset.customMetrics[].id | string親要素内で必須 |
|
dataset.customMetrics[].name | string親要素内で必須 |
|
dataset.customMetrics[].version | integer親要素内で必須 |
|
dataset.customMetrics[].expression | string親要素内で必須 |
|
dataset.customMetrics[].definition | string親要素内で必須 |
|
dataset.customMetrics[].unit | string親要素内で必須 |
|
dataset.customMetrics[].grain | string親要素内で必須 |
|
dataset.customMetrics[].rounding | object親要素内で必須 |
|
dataset.customMetrics[].rounding.decimalPlaces | integer親要素内で必須 |
|
dataset.customMetrics[].rounding.mode | string親要素内で必須 |
|
dataset.customMetrics[].inputs | array親要素内で必須 |
|
dataset.customMetrics[].inputs[] | object任意/項目 |
|
dataset.customMetrics[].inputs[].requestId | string | null親要素内で必須 | — |
dataset.customMetrics[].inputs[].requestIdanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].inputs[].requestIdanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].inputs[].sourcePath | string親要素内で必須 |
|
dataset.customMetrics[].inputs[].value | number | null親要素内で必須 | — |
dataset.customMetrics[].inputs[].availability | string親要素内で必須 |
|
dataset.customMetrics[].value | number | null親要素内で必須 | — |
dataset.customMetrics[].availability | string親要素内で必須 |
|
dataset.customMetrics[].reason | string | null親要素内で必須 | — |
dataset.customMetrics[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].formula | object任意/項目 |
|
dataset.customMetrics[].formula.contractVersion | string親要素内で必須 |
|
dataset.customMetrics[].formula.id | string親要素内で必須 |
|
dataset.customMetrics[].formula.workspaceId | string親要素内で必須 |
|
dataset.customMetrics[].formula.name | string親要素内で必須 |
|
dataset.customMetrics[].formula.version | integer親要素内で必須 |
|
dataset.customMetrics[].formula.expression | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields | array親要素内で必須 |
|
dataset.customMetrics[].formula.fields[] | object任意/項目 |
|
dataset.customMetrics[].formula.fields[].identifier | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector | object親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.platform | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.key | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.definition | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.unit | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.grain | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.measurementKind | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.nativePeriod | string | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.nativePeriodanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.nativePeriodanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.timezone | string | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].aggregation | string親要素内で必須 |
|
dataset.customMetrics[].formula.rounding | object親要素内で必須 |
|
dataset.customMetrics[].formula.rounding.decimalPlaces | integer親要素内で必須 |
|
dataset.customMetrics[].formula.rounding.mode | string親要素内で必須 |
|
dataset.customMetrics[].calculation | object任意/項目 |
|
dataset.customMetrics[].calculation.contractVersion | string親要素内で必須 |
|
dataset.customMetrics[].calculation.workspaceId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.datasetId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.formulaId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.name | string親要素内で必須 |
|
dataset.customMetrics[].calculation.version | integer親要素内で必須 |
|
dataset.customMetrics[].calculation.expression | string親要素内で必須 |
|
dataset.customMetrics[].calculation.rounding | object親要素内で必須 |
|
dataset.customMetrics[].calculation.rounding.decimalPlaces | integer親要素内で必須 |
|
dataset.customMetrics[].calculation.rounding.mode | string親要素内で必須 |
|
dataset.customMetrics[].calculation.value | number | null親要素内で必須 | — |
dataset.customMetrics[].calculation.unit | string親要素内で必須 |
|
dataset.customMetrics[].calculation.status | string親要素内で必須 |
|
dataset.customMetrics[].calculation.code | string親要素内で必須 |
|
dataset.customMetrics[].calculation.reason | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.reasonanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.reasonanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.excludedInputIds | array親要素内で必須 |
|
dataset.customMetrics[].calculation.excludedInputIds[] | string任意/項目 |
|
dataset.customMetrics[].calculation.inputs | array親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[] | object任意/項目 |
|
dataset.customMetrics[].calculation.inputs[].inputId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector | object親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.platform | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.key | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.definition | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.unit | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.grain | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.measurementKind | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.nativePeriod | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.nativePeriodanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.nativePeriodanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.timezone | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].value | number | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].availability | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].reason | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement | object親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.kind | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.period | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.periodanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.periodanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.start | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.startanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.startanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.end | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.endanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.endanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.timezone | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].requestId | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].requestIdanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].requestIdanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].sourcePath | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].accountId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].providerResourceId | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].providerResourceIdanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].providerResourceIdanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].fetchedAt | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].fetchedAtanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].fetchedAtanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].identifier | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].included | boolean親要素内で必須 | — |
reviewed_fingerprint | string親要素内で必須 |
|
output | string任意/項目 |
|
locale | string任意/項目 |
|
完全な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
},
"dataset": {
"type": "object",
"properties": {
"contractVersion": {
"type": "string",
"const": "analytics-report/v1"
},
"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)$"
},
"reviewedAt": {
"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"
},
"selection": {
"type": "object",
"properties": {
"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)$"
},
"accountIds": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"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)$"
}
},
"platforms": {
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
}
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"timezone": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"workspaceId",
"accountIds",
"platforms",
"startDate",
"endDate",
"timezone"
],
"additionalProperties": false
},
"accounts": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"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)$"
},
"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)$"
},
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"name": {
"type": "string",
"maxLength": 500
},
"connectionStatus": {
"type": "string",
"maxLength": 100
},
"healthMessage": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"id",
"workspaceId",
"platform",
"name"
],
"additionalProperties": false
}
},
"posts": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "object",
"properties": {
"social_post_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)$"
},
"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)$"
},
"social_account_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)$"
},
"platform": {
"type": "string",
"enum": [
"instagram",
"facebook",
"threads",
"youtube"
]
},
"provider_post_id": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"provider_published_at": {
"anyOf": [
{
"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"
},
{
"type": "null"
}
]
},
"content_format": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
},
"permalink": {
"anyOf": [
{
"type": "string",
"maxLength": 2048,
"format": "uri"
},
{
"type": "null"
}
]
},
"provider_state": {
"type": "string",
"enum": [
"available",
"deleted",
"unavailable",
"unknown"
]
},
"first_seen_at": {
"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"
},
"last_seen_at": {
"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"
},
"scheduled_post_id": {
"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"
}
]
},
"provenance": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"instagram",
"facebook",
"threads",
"youtube"
]
},
"source": {
"type": "string",
"enum": [
"provider_api",
"provider_webhook",
"publication_outcome",
"backfill"
]
},
"source_job_id": {
"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"
}
]
},
"provider_api_version": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"schema_version": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
}
},
"required": [
"provider",
"source",
"source_job_id",
"provider_api_version",
"schema_version"
],
"additionalProperties": false
}
},
"required": [
"social_post_id",
"workspace_id",
"social_account_id",
"platform",
"provider_post_id",
"provider_published_at",
"content_format",
"permalink",
"provider_state",
"first_seen_at",
"last_seen_at",
"scheduled_post_id",
"provenance"
],
"additionalProperties": false
}
},
"sources": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"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)$"
},
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"resourceKind": {
"type": "string",
"enum": [
"account",
"post"
]
},
"providerResourceId": {
"anyOf": [
{
"type": "string",
"maxLength": 512
},
{
"type": "null"
}
]
},
"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"
}
]
},
"status": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 8000
},
{
"type": "null"
}
]
},
"envelope": {
"anyOf": [
{
"type": "object",
"properties": {
"contract_version": {
"type": "string",
"const": "provider-insights/v1"
},
"request_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)$"
},
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"resource": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"account",
"post"
]
},
"social_account_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)$"
},
"provider_resource_id": {
"type": [
"string",
"null"
]
}
},
"required": [
"kind",
"social_account_id",
"provider_resource_id"
],
"additionalProperties": false
},
"provider_api_version": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"fetched_at": {
"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"
},
"status": {
"type": "string",
"enum": [
"available",
"partial",
"unavailable"
]
},
"availability": {
"minItems": 1,
"maxItems": 64,
"type": "array",
"items": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed"
]
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"diagnostics": {
"type": "object",
"properties": {
"http_status": {
"type": "integer",
"minimum": 0,
"maximum": 599
},
"failed_step": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"provider_code": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 100
}
]
},
"provider_subcode": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 100
}
]
},
"provider_type": {
"type": "string",
"maxLength": 200
},
"is_transient": {
"type": "boolean"
},
"provider_request_id": {
"type": "string",
"maxLength": 200
},
"access": {
"type": "object",
"properties": {
"login_mode": {
"type": "string",
"enum": [
"instagram_login",
"facebook_login",
"threads_user"
]
},
"provider_host": {
"type": "string",
"maxLength": 200
},
"required_permissions": {
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"current_connection_policy_permissions": {
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"granted_permissions": {
"anyOf": [
{
"maxItems": 128,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
{
"type": "null"
}
]
},
"grant_evidence": {
"type": "string",
"enum": [
"exact",
"unknown"
]
},
"permission_state": {
"type": "string",
"enum": [
"granted",
"missing",
"unknown"
]
},
"grant_observed_at": {
"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"
},
"app_access": {
"type": "string",
"const": "unverified"
},
"next_step": {
"type": "string",
"maxLength": 1500
}
},
"required": [
"login_mode",
"provider_host",
"required_permissions",
"current_connection_policy_permissions",
"granted_permissions",
"grant_evidence",
"permission_state",
"app_access",
"next_step"
],
"additionalProperties": false
}
},
"required": [
"http_status"
],
"additionalProperties": false
}
},
"required": [
"scope",
"status"
],
"additionalProperties": false
}
},
"provider_data": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"requested_date_range": {
"anyOf": [
{
"type": "object",
"properties": {
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"start_date",
"end_date"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"cache": {
"type": "object",
"properties": {
"authoritative": {
"type": "boolean",
"const": false
},
"status": {
"type": "string",
"enum": [
"stored",
"hit",
"bypassed"
]
},
"expires_at": {
"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": [
"authoritative",
"status",
"expires_at"
],
"additionalProperties": false
}
},
"required": [
"contract_version",
"request_id",
"platform",
"resource",
"provider_api_version",
"fetched_at",
"status",
"availability",
"provider_data",
"requested_date_range",
"cache"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"metrics": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 150
},
"definition": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"grain": {
"type": "string",
"enum": [
"post",
"account"
]
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"measurement": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"period": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"start": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"end": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"period",
"start",
"end",
"timezone"
],
"additionalProperties": false
},
"sourcePath": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"key",
"definition",
"unit",
"grain",
"value",
"availability",
"reason",
"measurement",
"sourcePath"
],
"additionalProperties": false
}
}
},
"required": [
"accountId",
"platform",
"resourceKind",
"providerResourceId",
"requestId",
"status",
"reason",
"envelope",
"metrics"
],
"additionalProperties": false
}
},
"coverage": {
"type": "object",
"properties": {
"population": {
"type": "string",
"const": "discovered_posts"
},
"postsComplete": {
"type": "boolean"
},
"nextCursor": {
"anyOf": [
{
"type": "string",
"maxLength": 16384
},
{
"type": "null"
}
]
},
"postLimit": {
"type": "integer",
"minimum": 0,
"maximum": 1000
},
"postInsightsLimit": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"omittedPostInsights": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"notes": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
},
"required": [
"population",
"postsComplete",
"nextCursor",
"postLimit",
"postInsightsLimit",
"omittedPostInsights",
"notes"
],
"additionalProperties": false
},
"customMetrics": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"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)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"expression": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"definition": {
"type": "string",
"maxLength": 1000
},
"unit": {
"type": "string",
"maxLength": 100
},
"grain": {
"type": "string",
"enum": [
"post",
"account",
"compatible_sum"
]
},
"rounding": {
"type": "object",
"properties": {
"decimalPlaces": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"mode": {
"type": "string",
"const": "half_away_from_zero"
}
},
"required": [
"decimalPlaces",
"mode"
],
"additionalProperties": false
},
"inputs": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "object",
"properties": {
"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"
}
]
},
"sourcePath": {
"type": "string",
"maxLength": 2000
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
}
},
"required": [
"requestId",
"sourcePath",
"value",
"availability"
],
"additionalProperties": false
}
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"formula": {
"type": "object",
"properties": {
"contractVersion": {
"type": "string",
"const": "analytics-metric/v1"
},
"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)$"
},
"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)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 1000000
},
"expression": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"fields": {
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,63}$"
},
"selector": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,100}$"
},
"definition": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"unit": {
"type": "string",
"enum": [
"count",
"seconds",
"minutes",
"percent",
"ratio"
]
},
"grain": {
"type": "string",
"enum": [
"post",
"account"
]
},
"measurementKind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"nativePeriod": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"platform",
"key",
"definition",
"unit",
"grain",
"measurementKind",
"nativePeriod",
"timezone"
],
"additionalProperties": false
},
"aggregation": {
"type": "string",
"enum": [
"single",
"sum"
]
}
},
"required": [
"identifier",
"selector",
"aggregation"
],
"additionalProperties": false
}
},
"rounding": {
"type": "object",
"properties": {
"decimalPlaces": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"mode": {
"type": "string",
"const": "half_away_from_zero"
}
},
"required": [
"decimalPlaces",
"mode"
],
"additionalProperties": false
}
},
"required": [
"contractVersion",
"id",
"workspaceId",
"name",
"version",
"expression",
"fields",
"rounding"
],
"additionalProperties": false
},
"calculation": {
"type": "object",
"properties": {
"contractVersion": {
"type": "string",
"const": "analytics-metric/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)$"
},
"datasetId": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"formulaId": {
"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)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"expression": {
"type": "string",
"maxLength": 1000
},
"rounding": {
"type": "object",
"properties": {
"decimalPlaces": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"mode": {
"type": "string",
"const": "half_away_from_zero"
}
},
"required": [
"decimalPlaces",
"mode"
],
"additionalProperties": false
},
"value": {
"type": [
"number",
"null"
]
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "string",
"enum": [
"available",
"not_returned"
]
},
"code": {
"type": "string",
"enum": [
"ok",
"invalid_expression",
"missing_input",
"incompatible_input",
"zero_denominator",
"numeric_limit",
"workspace_mismatch",
"ambiguous_input",
"unknown_exclusion"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 500
},
{
"type": "null"
}
]
},
"excludedInputIds": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 1500
}
},
"inputs": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "object",
"properties": {
"inputId": {
"type": "string",
"minLength": 1,
"maxLength": 1500
},
"selector": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,100}$"
},
"definition": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"unit": {
"type": "string",
"enum": [
"count",
"seconds",
"minutes",
"percent",
"ratio"
]
},
"grain": {
"type": "string",
"enum": [
"post",
"account"
]
},
"measurementKind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"nativePeriod": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"platform",
"key",
"definition",
"unit",
"grain",
"measurementKind",
"nativePeriod",
"timezone"
],
"additionalProperties": false
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 8000
},
{
"type": "null"
}
]
},
"measurement": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"period": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"start": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"end": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"period",
"start",
"end",
"timezone"
],
"additionalProperties": false
},
"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"
}
]
},
"sourcePath": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"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"
}
]
},
"fetchedAt": {
"anyOf": [
{
"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"
},
{
"type": "null"
}
]
},
"identifier": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,63}$"
},
"included": {
"type": "boolean"
}
},
"required": [
"inputId",
"selector",
"value",
"availability",
"reason",
"measurement",
"requestId",
"sourcePath",
"accountId",
"providerResourceId",
"fetchedAt",
"identifier",
"included"
],
"additionalProperties": false
}
}
},
"required": [
"contractVersion",
"workspaceId",
"datasetId",
"formulaId",
"name",
"version",
"expression",
"rounding",
"value",
"unit",
"status",
"code",
"reason",
"excludedInputIds",
"inputs"
],
"additionalProperties": false
}
},
"required": [
"id",
"name",
"version",
"expression",
"definition",
"unit",
"grain",
"rounding",
"inputs",
"value",
"availability",
"reason"
],
"additionalProperties": false
}
}
},
"required": [
"contractVersion",
"id",
"reviewedAt",
"selection",
"accounts",
"posts",
"sources",
"coverage",
"customMetrics"
],
"additionalProperties": false
},
"reviewed_fingerprint": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"output": {
"default": "native",
"type": "string",
"enum": [
"native",
"pdf"
]
},
"locale": {
"default": "en",
"type": "string",
"enum": [
"en",
"zh-Hant"
]
}
},
"required": [
"workspace_id",
"id",
"version",
"dataset",
"reviewed_fingerprint"
],
"additionalProperties": false
}レスポンスと完了条件
成功時のHTTPステータス: 200. 操作完了時: synchronous_http_response.
HTTP成功は完了ではなく受理の場合があります。バックグラウンド処理はIDを保存し、同じ処理を完了まで確認します。予約・受理された投稿はプラットフォーム確認後のみ公開済みです。タイムアウトだけでは結果を判断できません。
必須とは、親オブジェクトと選択分岐内で必須という意味です。必須の子があっても任意の親は必須になりません。以下のルールとフィールド名は契約から転記しています。
| フィールド/分岐 | 型/必須 | 制約 |
|---|---|---|
$ | object親要素内で必須 | — |
contract_version | string親要素内で必須 |
|
kind | string親要素内で必須 |
|
dataset | object親要素内で必須 | — |
dataset.contractVersion | string親要素内で必須 |
|
dataset.id | string親要素内で必須 |
|
dataset.reviewedAt | string親要素内で必須 |
|
dataset.selection | object親要素内で必須 | — |
dataset.selection.workspaceId | string親要素内で必須 |
|
dataset.selection.accountIds | array親要素内で必須 |
|
dataset.selection.accountIds[] | string任意/項目 |
|
dataset.selection.platforms | array親要素内で必須 |
|
dataset.selection.platforms[] | string任意/項目 |
|
dataset.selection.startDate | string親要素内で必須 |
|
dataset.selection.endDate | string親要素内で必須 |
|
dataset.selection.timezone | string親要素内で必須 |
|
dataset.accounts | array親要素内で必須 |
|
dataset.accounts[] | object任意/項目 | — |
dataset.accounts[].id | string親要素内で必須 |
|
dataset.accounts[].workspaceId | string親要素内で必須 |
|
dataset.accounts[].platform | string親要素内で必須 |
|
dataset.accounts[].name | string親要素内で必須 |
|
dataset.accounts[].connectionStatus | string任意/項目 |
|
dataset.accounts[].healthMessage | string任意/項目 |
|
dataset.posts | array親要素内で必須 |
|
dataset.posts[] | object任意/項目 | — |
dataset.posts[].social_post_id | string親要素内で必須 |
|
dataset.posts[].workspace_id | string親要素内で必須 |
|
dataset.posts[].social_account_id | string親要素内で必須 |
|
dataset.posts[].platform | string親要素内で必須 |
|
dataset.posts[].provider_post_id | string親要素内で必須 |
|
dataset.posts[].provider_published_at | string | null親要素内で必須 | — |
dataset.posts[].provider_published_atanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provider_published_atanyOf 2 | null親要素内で必須 | — |
dataset.posts[].content_format | string | null親要素内で必須 | — |
dataset.posts[].content_formatanyOf 1 | string親要素内で必須 |
|
dataset.posts[].content_formatanyOf 2 | null親要素内で必須 | — |
dataset.posts[].permalink | string | null親要素内で必須 | — |
dataset.posts[].permalinkanyOf 1 | string親要素内で必須 |
|
dataset.posts[].permalinkanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provider_state | string親要素内で必須 |
|
dataset.posts[].first_seen_at | string親要素内で必須 |
|
dataset.posts[].last_seen_at | string親要素内で必須 |
|
dataset.posts[].scheduled_post_id | string | null親要素内で必須 | — |
dataset.posts[].scheduled_post_idanyOf 1 | string親要素内で必須 |
|
dataset.posts[].scheduled_post_idanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provenance | object親要素内で必須 | — |
dataset.posts[].provenance.provider | string親要素内で必須 |
|
dataset.posts[].provenance.source | string親要素内で必須 |
|
dataset.posts[].provenance.source_job_id | string | null親要素内で必須 | — |
dataset.posts[].provenance.source_job_idanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provenance.source_job_idanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provenance.provider_api_version | string | null親要素内で必須 | — |
dataset.posts[].provenance.provider_api_versionanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provenance.provider_api_versionanyOf 2 | null親要素内で必須 | — |
dataset.posts[].provenance.schema_version | string | null親要素内で必須 | — |
dataset.posts[].provenance.schema_versionanyOf 1 | string親要素内で必須 |
|
dataset.posts[].provenance.schema_versionanyOf 2 | null親要素内で必須 | — |
dataset.sources | array親要素内で必須 |
|
dataset.sources[] | object任意/項目 | — |
dataset.sources[].accountId | string親要素内で必須 |
|
dataset.sources[].platform | string親要素内で必須 |
|
dataset.sources[].resourceKind | string親要素内で必須 |
|
dataset.sources[].providerResourceId | string | null親要素内で必須 | — |
dataset.sources[].providerResourceIdanyOf 1 | string親要素内で必須 |
|
dataset.sources[].providerResourceIdanyOf 2 | null親要素内で必須 | — |
dataset.sources[].requestId | string | null親要素内で必須 | — |
dataset.sources[].requestIdanyOf 1 | string親要素内で必須 |
|
dataset.sources[].requestIdanyOf 2 | null親要素内で必須 | — |
dataset.sources[].status | string親要素内で必須 |
|
dataset.sources[].reason | string | null親要素内で必須 | — |
dataset.sources[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.sources[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope | object | null親要素内で必須 | — |
dataset.sources[].envelopeanyOf 1 | object親要素内で必須 | — |
dataset.sources[].envelope.contract_versionanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.request_idanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.platformanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.resourceanyOf 1 | object親要素内で必須 | — |
dataset.sources[].envelope.resource.kindanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.resource.social_account_idanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.resource.provider_resource_idanyOf 1 | string | null親要素内で必須 | — |
dataset.sources[].envelope.provider_api_versionanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.fetched_atanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.statusanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availabilityanyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[]anyOf 1 | object任意/項目 | — |
dataset.sources[].envelope.availability[].scopeanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].statusanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].reasonanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnosticsanyOf 1 | object任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.http_statusanyOf 1 | integer親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.failed_stepanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.provider_codeanyOf 1 | number | string任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_codeanyOf 1 / anyOf 1 | number任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_codeanyOf 1 / anyOf 2 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.provider_subcodeanyOf 1 | number | string任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_subcodeanyOf 1 / anyOf 1 | number任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_subcodeanyOf 1 / anyOf 2 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.provider_typeanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.is_transientanyOf 1 | boolean任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.provider_request_idanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.accessanyOf 1 | object任意/項目 | — |
dataset.sources[].envelope.availability[].diagnostics.access.login_modeanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.provider_hostanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.required_permissionsanyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.required_permissions[]anyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.current_connection_policy_permissionsanyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.current_connection_policy_permissions[]anyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissionsanyOf 1 | array | null親要素内で必須 | — |
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissionsanyOf 1 / anyOf 1 | array親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissions[]anyOf 1 / anyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.granted_permissionsanyOf 1 / anyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope.availability[].diagnostics.access.grant_evidenceanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.permission_stateanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.grant_observed_atanyOf 1 | string任意/項目 |
|
dataset.sources[].envelope.availability[].diagnostics.access.app_accessanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.availability[].diagnostics.access.next_stepanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.provider_dataanyOf 1 | any JSON value | null親要素内で必須 | — |
dataset.sources[].envelope.provider_dataanyOf 1 / anyOf 1 | any JSON value親要素内で必須 | — |
dataset.sources[].envelope.provider_dataanyOf 1 / anyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope.requested_date_rangeanyOf 1 | object | null親要素内で必須 | — |
dataset.sources[].envelope.requested_date_rangeanyOf 1 / anyOf 1 | object親要素内で必須 | — |
dataset.sources[].envelope.requested_date_range.start_dateanyOf 1 / anyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.requested_date_range.end_dateanyOf 1 / anyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.requested_date_rangeanyOf 1 / anyOf 2 | null親要素内で必須 | — |
dataset.sources[].envelope.cacheanyOf 1 | object親要素内で必須 | — |
dataset.sources[].envelope.cache.authoritativeanyOf 1 | boolean親要素内で必須 |
|
dataset.sources[].envelope.cache.statusanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelope.cache.expires_atanyOf 1 | string親要素内で必須 |
|
dataset.sources[].envelopeanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics | array親要素内で必須 |
|
dataset.sources[].metrics[] | object任意/項目 | — |
dataset.sources[].metrics[].key | string親要素内で必須 |
|
dataset.sources[].metrics[].definition | string親要素内で必須 |
|
dataset.sources[].metrics[].unit | string親要素内で必須 |
|
dataset.sources[].metrics[].grain | string親要素内で必須 |
|
dataset.sources[].metrics[].value | number | null親要素内で必須 | — |
dataset.sources[].metrics[].availability | string親要素内で必須 |
|
dataset.sources[].metrics[].reason | string | null親要素内で必須 | — |
dataset.sources[].metrics[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement | object親要素内で必須 | — |
dataset.sources[].metrics[].measurement.kind | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.period | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.periodanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.periodanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.start | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.startanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.startanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.end | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.endanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.endanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.timezone | string | null親要素内で必須 | — |
dataset.sources[].metrics[].measurement.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.sources[].metrics[].measurement.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.sources[].metrics[].sourcePath | string親要素内で必須 |
|
dataset.coverage | object親要素内で必須 | — |
dataset.coverage.population | string親要素内で必須 |
|
dataset.coverage.postsComplete | boolean親要素内で必須 | — |
dataset.coverage.nextCursor | string | null親要素内で必須 | — |
dataset.coverage.nextCursoranyOf 1 | string親要素内で必須 |
|
dataset.coverage.nextCursoranyOf 2 | null親要素内で必須 | — |
dataset.coverage.postLimit | integer親要素内で必須 |
|
dataset.coverage.postInsightsLimit | integer親要素内で必須 |
|
dataset.coverage.omittedPostInsights | integer親要素内で必須 |
|
dataset.coverage.notes | array親要素内で必須 |
|
dataset.coverage.notes[] | string任意/項目 |
|
dataset.customMetrics | array親要素内で必須 |
|
dataset.customMetrics[] | object任意/項目 | — |
dataset.customMetrics[].id | string親要素内で必須 |
|
dataset.customMetrics[].name | string親要素内で必須 |
|
dataset.customMetrics[].version | integer親要素内で必須 |
|
dataset.customMetrics[].expression | string親要素内で必須 |
|
dataset.customMetrics[].definition | string親要素内で必須 |
|
dataset.customMetrics[].unit | string親要素内で必須 |
|
dataset.customMetrics[].grain | string親要素内で必須 |
|
dataset.customMetrics[].rounding | object親要素内で必須 | — |
dataset.customMetrics[].rounding.decimalPlaces | integer親要素内で必須 |
|
dataset.customMetrics[].rounding.mode | string親要素内で必須 |
|
dataset.customMetrics[].inputs | array親要素内で必須 |
|
dataset.customMetrics[].inputs[] | object任意/項目 | — |
dataset.customMetrics[].inputs[].requestId | string | null親要素内で必須 | — |
dataset.customMetrics[].inputs[].requestIdanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].inputs[].requestIdanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].inputs[].sourcePath | string親要素内で必須 |
|
dataset.customMetrics[].inputs[].value | number | null親要素内で必須 | — |
dataset.customMetrics[].inputs[].availability | string親要素内で必須 |
|
dataset.customMetrics[].value | number | null親要素内で必須 | — |
dataset.customMetrics[].availability | string親要素内で必須 |
|
dataset.customMetrics[].reason | string | null親要素内で必須 | — |
dataset.customMetrics[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].formula | object任意/項目 | — |
dataset.customMetrics[].formula.contractVersion | string親要素内で必須 |
|
dataset.customMetrics[].formula.id | string親要素内で必須 |
|
dataset.customMetrics[].formula.workspaceId | string親要素内で必須 |
|
dataset.customMetrics[].formula.name | string親要素内で必須 |
|
dataset.customMetrics[].formula.version | integer親要素内で必須 |
|
dataset.customMetrics[].formula.expression | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields | array親要素内で必須 |
|
dataset.customMetrics[].formula.fields[] | object任意/項目 | — |
dataset.customMetrics[].formula.fields[].identifier | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector | object親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.platform | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.key | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.definition | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.unit | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.grain | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.measurementKind | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.nativePeriod | string | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.nativePeriodanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.nativePeriodanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.timezone | string | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].selector.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].formula.fields[].selector.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].formula.fields[].aggregation | string親要素内で必須 |
|
dataset.customMetrics[].formula.rounding | object親要素内で必須 | — |
dataset.customMetrics[].formula.rounding.decimalPlaces | integer親要素内で必須 |
|
dataset.customMetrics[].formula.rounding.mode | string親要素内で必須 |
|
dataset.customMetrics[].calculation | object任意/項目 | — |
dataset.customMetrics[].calculation.contractVersion | string親要素内で必須 |
|
dataset.customMetrics[].calculation.workspaceId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.datasetId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.formulaId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.name | string親要素内で必須 |
|
dataset.customMetrics[].calculation.version | integer親要素内で必須 |
|
dataset.customMetrics[].calculation.expression | string親要素内で必須 |
|
dataset.customMetrics[].calculation.rounding | object親要素内で必須 | — |
dataset.customMetrics[].calculation.rounding.decimalPlaces | integer親要素内で必須 |
|
dataset.customMetrics[].calculation.rounding.mode | string親要素内で必須 |
|
dataset.customMetrics[].calculation.value | number | null親要素内で必須 | — |
dataset.customMetrics[].calculation.unit | string親要素内で必須 |
|
dataset.customMetrics[].calculation.status | string親要素内で必須 |
|
dataset.customMetrics[].calculation.code | string親要素内で必須 |
|
dataset.customMetrics[].calculation.reason | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.reasonanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.reasonanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.excludedInputIds | array親要素内で必須 |
|
dataset.customMetrics[].calculation.excludedInputIds[] | string任意/項目 |
|
dataset.customMetrics[].calculation.inputs | array親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[] | object任意/項目 | — |
dataset.customMetrics[].calculation.inputs[].inputId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector | object親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.platform | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.key | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.definition | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.unit | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.grain | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.measurementKind | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.nativePeriod | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.nativePeriodanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.nativePeriodanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.timezone | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].selector.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].selector.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].value | number | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].availability | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].reason | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].reasonanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].reasonanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement | object親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.kind | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.period | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.periodanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.periodanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.start | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.startanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.startanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.end | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.endanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.endanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.timezone | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].measurement.timezoneanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].measurement.timezoneanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].requestId | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].requestIdanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].requestIdanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].sourcePath | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].accountId | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].providerResourceId | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].providerResourceIdanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].providerResourceIdanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].fetchedAt | string | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].fetchedAtanyOf 1 | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].fetchedAtanyOf 2 | null親要素内で必須 | — |
dataset.customMetrics[].calculation.inputs[].identifier | string親要素内で必須 |
|
dataset.customMetrics[].calculation.inputs[].included | boolean親要素内で必須 | — |
format | string親要素内で必須 |
|
output | string親要素内で必須 |
|
locale | string親要素内で必須 |
|
template | object親要素内で必須 | — |
template.id | string親要素内で必須 |
|
template.version | integer親要素内で必須 |
|
template.source_base64 | string親要素内で必須 |
|
template.source_sha256 | string親要素内で必須 |
|
template.mappings | object親要素内で必須 |
|
template.mappings.* | object任意/項目 | — |
template.mappings.*oneOf 1 | object任意/項目 | — |
template.mappings.*.kindoneOf 1 | string親要素内で必須 |
|
template.mappings.*.valueoneOf 1 | string親要素内で必須 |
|
template.mappings.*oneOf 2 | object任意/項目 | — |
template.mappings.*.kindoneOf 2 | string親要素内で必須 |
|
template.mappings.*.fieldoneOf 2 | string親要素内で必須 |
|
template.mappings.*oneOf 3 | object任意/項目 | — |
template.mappings.*.kindoneOf 3 | string親要素内で必須 |
|
template.mappings.*.platformoneOf 3 | string親要素内で必須 |
|
template.mappings.*.keyoneOf 3 | string親要素内で必須 |
|
template.mappings.*.unitoneOf 3 | string親要素内で必須 |
|
template.mappings.*.grainoneOf 3 | string親要素内で必須 |
|
template.mappings.*.measurementKindoneOf 3 | string親要素内で必須 |
|
template.mappings.*.accountIdoneOf 3 | string任意/項目 |
|
template.mappings.*.providerResourceIdoneOf 3 | string | null任意/項目 | — |
template.mappings.*.providerResourceIdoneOf 3 / anyOf 1 | string任意/項目 |
|
template.mappings.*.providerResourceIdoneOf 3 / anyOf 2 | null任意/項目 | — |
template.mappings.*.sourcePathoneOf 3 | string任意/項目 |
|
template.mappings.*.requestIdoneOf 3 | string | null任意/項目 | — |
template.mappings.*.requestIdoneOf 3 / anyOf 1 | string任意/項目 |
|
template.mappings.*.requestIdoneOf 3 / anyOf 2 | null任意/項目 | — |
template.mappings.*oneOf 4 | object任意/項目 | — |
template.mappings.*.kindoneOf 4 | string親要素内で必須 |
|
template.mappings.*.idoneOf 4 | string親要素内で必須 |
|
template.mappings.*.versiononeOf 4 | integer親要素内で必須 |
|
template.mappings.*oneOf 5 | object任意/項目 | — |
template.mappings.*.kindoneOf 5 | string親要素内で必須 |
|
template.mappings.*.sourceoneOf 5 | string親要素内で必須 |
|
template.mappings.*.limitoneOf 5 | integer親要素内で必須 |
|
template.mappings.*oneOf 6 | object任意/項目 | — |
template.mappings.*.kindoneOf 6 | string親要素内で必須 |
|
template.mappings.*.sourceoneOf 6 | string親要素内で必須 |
|
reviewed_fingerprint | string親要素内で必須 |
|
完全なJSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"contract_version": {
"type": "string",
"const": "analytics-render-input/v1"
},
"kind": {
"type": "string",
"const": "template"
},
"dataset": {
"type": "object",
"properties": {
"contractVersion": {
"type": "string",
"const": "analytics-report/v1"
},
"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)$"
},
"reviewedAt": {
"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"
},
"selection": {
"type": "object",
"properties": {
"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)$"
},
"accountIds": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"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)$"
}
},
"platforms": {
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
}
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"timezone": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"workspaceId",
"accountIds",
"platforms",
"startDate",
"endDate",
"timezone"
]
},
"accounts": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"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)$"
},
"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)$"
},
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"name": {
"type": "string",
"maxLength": 500
},
"connectionStatus": {
"type": "string",
"maxLength": 100
},
"healthMessage": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"id",
"workspaceId",
"platform",
"name"
]
}
},
"posts": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "object",
"properties": {
"social_post_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)$"
},
"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)$"
},
"social_account_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)$"
},
"platform": {
"type": "string",
"enum": [
"instagram",
"facebook",
"threads",
"youtube"
]
},
"provider_post_id": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"provider_published_at": {
"anyOf": [
{
"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"
},
{
"type": "null"
}
]
},
"content_format": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
},
"permalink": {
"anyOf": [
{
"type": "string",
"maxLength": 2048,
"format": "uri"
},
{
"type": "null"
}
]
},
"provider_state": {
"type": "string",
"enum": [
"available",
"deleted",
"unavailable",
"unknown"
]
},
"first_seen_at": {
"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"
},
"last_seen_at": {
"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"
},
"scheduled_post_id": {
"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"
}
]
},
"provenance": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"instagram",
"facebook",
"threads",
"youtube"
]
},
"source": {
"type": "string",
"enum": [
"provider_api",
"provider_webhook",
"publication_outcome",
"backfill"
]
},
"source_job_id": {
"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"
}
]
},
"provider_api_version": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"schema_version": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
}
},
"required": [
"provider",
"source",
"source_job_id",
"provider_api_version",
"schema_version"
]
}
},
"required": [
"social_post_id",
"workspace_id",
"social_account_id",
"platform",
"provider_post_id",
"provider_published_at",
"content_format",
"permalink",
"provider_state",
"first_seen_at",
"last_seen_at",
"scheduled_post_id",
"provenance"
]
}
},
"sources": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"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)$"
},
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"resourceKind": {
"type": "string",
"enum": [
"account",
"post"
]
},
"providerResourceId": {
"anyOf": [
{
"type": "string",
"maxLength": 512
},
{
"type": "null"
}
]
},
"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"
}
]
},
"status": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 8000
},
{
"type": "null"
}
]
},
"envelope": {
"anyOf": [
{
"type": "object",
"properties": {
"contract_version": {
"type": "string",
"const": "provider-insights/v1"
},
"request_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)$"
},
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"resource": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"account",
"post"
]
},
"social_account_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)$"
},
"provider_resource_id": {
"type": [
"string",
"null"
]
}
},
"required": [
"kind",
"social_account_id",
"provider_resource_id"
]
},
"provider_api_version": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"fetched_at": {
"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"
},
"status": {
"type": "string",
"enum": [
"available",
"partial",
"unavailable"
]
},
"availability": {
"minItems": 1,
"maxItems": 64,
"type": "array",
"items": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed"
]
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"diagnostics": {
"type": "object",
"properties": {
"http_status": {
"type": "integer",
"minimum": 0,
"maximum": 599
},
"failed_step": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"provider_code": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 100
}
]
},
"provider_subcode": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"maxLength": 100
}
]
},
"provider_type": {
"type": "string",
"maxLength": 200
},
"is_transient": {
"type": "boolean"
},
"provider_request_id": {
"type": "string",
"maxLength": 200
},
"access": {
"type": "object",
"properties": {
"login_mode": {
"type": "string",
"enum": [
"instagram_login",
"facebook_login",
"threads_user"
]
},
"provider_host": {
"type": "string",
"maxLength": 200
},
"required_permissions": {
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"current_connection_policy_permissions": {
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
"granted_permissions": {
"anyOf": [
{
"maxItems": 128,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
{
"type": "null"
}
]
},
"grant_evidence": {
"type": "string",
"enum": [
"exact",
"unknown"
]
},
"permission_state": {
"type": "string",
"enum": [
"granted",
"missing",
"unknown"
]
},
"grant_observed_at": {
"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"
},
"app_access": {
"type": "string",
"const": "unverified"
},
"next_step": {
"type": "string",
"maxLength": 1500
}
},
"required": [
"login_mode",
"provider_host",
"required_permissions",
"current_connection_policy_permissions",
"granted_permissions",
"grant_evidence",
"permission_state",
"app_access",
"next_step"
]
}
},
"required": [
"http_status"
]
}
},
"required": [
"scope",
"status"
]
}
},
"provider_data": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"requested_date_range": {
"anyOf": [
{
"type": "object",
"properties": {
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"start_date",
"end_date"
]
},
{
"type": "null"
}
]
},
"cache": {
"type": "object",
"properties": {
"authoritative": {
"type": "boolean",
"const": false
},
"status": {
"type": "string",
"enum": [
"stored",
"hit",
"bypassed"
]
},
"expires_at": {
"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": [
"authoritative",
"status",
"expires_at"
]
}
},
"required": [
"contract_version",
"request_id",
"platform",
"resource",
"provider_api_version",
"fetched_at",
"status",
"availability",
"provider_data",
"requested_date_range",
"cache"
]
},
{
"type": "null"
}
]
},
"metrics": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 150
},
"definition": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"grain": {
"type": "string",
"enum": [
"post",
"account"
]
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"measurement": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"period": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"start": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"end": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"period",
"start",
"end",
"timezone"
]
},
"sourcePath": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"key",
"definition",
"unit",
"grain",
"value",
"availability",
"reason",
"measurement",
"sourcePath"
]
}
}
},
"required": [
"accountId",
"platform",
"resourceKind",
"providerResourceId",
"requestId",
"status",
"reason",
"envelope",
"metrics"
]
}
},
"coverage": {
"type": "object",
"properties": {
"population": {
"type": "string",
"const": "discovered_posts"
},
"postsComplete": {
"type": "boolean"
},
"nextCursor": {
"anyOf": [
{
"type": "string",
"maxLength": 16384
},
{
"type": "null"
}
]
},
"postLimit": {
"type": "integer",
"minimum": 0,
"maximum": 1000
},
"postInsightsLimit": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"omittedPostInsights": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"notes": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
},
"required": [
"population",
"postsComplete",
"nextCursor",
"postLimit",
"postInsightsLimit",
"omittedPostInsights",
"notes"
]
},
"customMetrics": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"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)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"expression": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"definition": {
"type": "string",
"maxLength": 1000
},
"unit": {
"type": "string",
"maxLength": 100
},
"grain": {
"type": "string",
"enum": [
"post",
"account",
"compatible_sum"
]
},
"rounding": {
"type": "object",
"properties": {
"decimalPlaces": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"mode": {
"type": "string",
"const": "half_away_from_zero"
}
},
"required": [
"decimalPlaces",
"mode"
]
},
"inputs": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "object",
"properties": {
"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"
}
]
},
"sourcePath": {
"type": "string",
"maxLength": 2000
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
}
},
"required": [
"requestId",
"sourcePath",
"value",
"availability"
]
}
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"formula": {
"type": "object",
"properties": {
"contractVersion": {
"type": "string",
"const": "analytics-metric/v1"
},
"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)$"
},
"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)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 1000000
},
"expression": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"fields": {
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,63}$"
},
"selector": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,100}$"
},
"definition": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"unit": {
"type": "string",
"enum": [
"count",
"seconds",
"minutes",
"percent",
"ratio"
]
},
"grain": {
"type": "string",
"enum": [
"post",
"account"
]
},
"measurementKind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"nativePeriod": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"platform",
"key",
"definition",
"unit",
"grain",
"measurementKind",
"nativePeriod",
"timezone"
]
},
"aggregation": {
"type": "string",
"enum": [
"single",
"sum"
]
}
},
"required": [
"identifier",
"selector",
"aggregation"
]
}
},
"rounding": {
"type": "object",
"properties": {
"decimalPlaces": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"mode": {
"type": "string",
"const": "half_away_from_zero"
}
},
"required": [
"decimalPlaces",
"mode"
]
}
},
"required": [
"contractVersion",
"id",
"workspaceId",
"name",
"version",
"expression",
"fields",
"rounding"
]
},
"calculation": {
"type": "object",
"properties": {
"contractVersion": {
"type": "string",
"const": "analytics-metric/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)$"
},
"datasetId": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"formulaId": {
"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)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"expression": {
"type": "string",
"maxLength": 1000
},
"rounding": {
"type": "object",
"properties": {
"decimalPlaces": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"mode": {
"type": "string",
"const": "half_away_from_zero"
}
},
"required": [
"decimalPlaces",
"mode"
]
},
"value": {
"type": [
"number",
"null"
]
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "string",
"enum": [
"available",
"not_returned"
]
},
"code": {
"type": "string",
"enum": [
"ok",
"invalid_expression",
"missing_input",
"incompatible_input",
"zero_denominator",
"numeric_limit",
"workspace_mismatch",
"ambiguous_input",
"unknown_exclusion"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 500
},
{
"type": "null"
}
]
},
"excludedInputIds": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 1500
}
},
"inputs": {
"maxItems": 5000,
"type": "array",
"items": {
"type": "object",
"properties": {
"inputId": {
"type": "string",
"minLength": 1,
"maxLength": 1500
},
"selector": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"facebook",
"instagram",
"threads",
"youtube"
]
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_]{0,100}$"
},
"definition": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"unit": {
"type": "string",
"enum": [
"count",
"seconds",
"minutes",
"percent",
"ratio"
]
},
"grain": {
"type": "string",
"enum": [
"post",
"account"
]
},
"measurementKind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"nativePeriod": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"platform",
"key",
"definition",
"unit",
"grain",
"measurementKind",
"nativePeriod",
"timezone"
]
},
"value": {
"type": [
"number",
"null"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"partial",
"not_returned",
"unsupported",
"permission_required",
"threshold_not_met",
"no_data",
"failed",
"pending",
"stale"
]
},
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 8000
},
{
"type": "null"
}
]
},
"measurement": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"lifetime",
"snapshot",
"period",
"unknown"
]
},
"period": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"start": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"end": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"period",
"start",
"end",
"timezone"
]
},
"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"
}
]
},
"sourcePath": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"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"
}
]
},
"fetchedAt": {
"anyOf": [
{
"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"
},
{
"type": "null"
}
]
},
"identifier": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,63}$"
},
"included": {
"type": "boolean"
}
},
"required": [
"inputId",
"selector",
"value",
"availability",
"reason",
"measurement",
"requestId",
"sourcePath",
"accountId",
"providerResourceId",
"fetchedAt",
"identifier",
"included"
]
}
}
},
"required": [
"contractVersion",
"workspaceId",
"datasetId",
"formulaId",
"name",
"version",
"expression",
"rounding",
"value",
"unit",
"status",
"code",
"reason",
"excludedInputIds",
"inputs"
]
}
},
"required": [
"id",
"name",
"version",
"expression",
"definition",
"unit",
"grain",
"rounding",
"inputs",
"value",
"availability",
"reason"
]
}
}
},
"required": [
"contractVersion",
"id",
"reviewedAt",
"selection",
"accounts",
"posts",
"sources",
"coverage",
"customMetrics"
]
},
"format": {
"type": "string",
"enum": [
"pptx",
"docx",
"xlsx"
]
},
"output": {
"type": "string",
"enum": [
"native",
"pdf"
]
},
"locale": {
"type": "string",
"enum": [
"en",
"zh-Hant"
]
},
"template": {
"type": "object",
"properties": {
"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
},
"source_base64": {
"type": "string",
"maxLength": 12582912
},
"source_sha256": {
"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"
]
}
]
}
}
},
"required": [
"id",
"version",
"source_base64",
"source_sha256",
"mappings"
]
},
"reviewed_fingerprint": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"contract_version",
"kind",
"dataset",
"format",
"output",
"locale",
"template",
"reviewed_fingerprint"
]
}エラーと安全な再試行
HTTPステータスとレスポンス本文を確認します。400の検証エラーにはZodErrorが含まれる場合があります。ハンドラーエラーはerror、message、codeを使用します。診断用にrequest_idまたはx-request-idを保持し、認証情報は含めないでください。401/403はアクセス問題を解消してから再試行し、429はRetry-Afterに従います。書き込み結果が不確か、または5xxの場合は、まず既存の結果を取得してください。冪等性キーは対応する操作でのみ再利用します。再試行の挙動は操作ごとに異なり、厳密に一回の配信は保証しません。
トラブルシューティングガイド例
スキーマ確認済みの架空値の例です。認可されたID、準備済みメディア、確認済みの公開日時に置き換え、書き込み前に適格性を確認してください。このページはAPIを呼びません。
サーバーのSOSOAPI_ACCESS_TOKENに操作が受け付ける認証情報を設定し、ブラウザーコードに含めないでください。エージェントはsosoapi auth loginでブラウザーログインし、CLIに更新を任せます。
request.json
{
"workspace_id": "11111111-1111-4111-8111-111111111111",
"id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"dataset": {
"contractVersion": "analytics-report/v1",
"id": "11111111-1111-4111-8111-111111111111",
"reviewedAt": "2099-01-15T09:00:00Z",
"selection": {
"workspaceId": "11111111-1111-4111-8111-111111111111",
"accountIds": [
"11111111-1111-4111-8111-111111111111"
],
"platforms": [
"facebook"
],
"startDate": "2099-01-15",
"endDate": "2099-01-15",
"timezone": "UTC"
},
"accounts": [
{
"id": "11111111-1111-4111-8111-111111111111",
"workspaceId": "11111111-1111-4111-8111-111111111111",
"platform": "facebook",
"name": "Fictional report account"
}
],
"posts": [],
"sources": [],
"coverage": {
"population": "discovered_posts",
"postsComplete": false,
"nextCursor": null,
"postLimit": 0,
"postInsightsLimit": 0,
"omittedPostInsights": 0,
"notes": []
},
"customMetrics": []
},
"reviewed_fingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}cURL
curl --request POST \
"https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/reporting/templates/render" \
-H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @request.jsonJavaScript
// 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/render", {
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,
"dataset": {
"contractVersion": "analytics-report/v1",
"id": "11111111-1111-4111-8111-111111111111",
"reviewedAt": "2099-01-15T09:00:00Z",
"selection": {
"workspaceId": "11111111-1111-4111-8111-111111111111",
"accountIds": [
"11111111-1111-4111-8111-111111111111"
],
"platforms": [
"facebook"
],
"startDate": "2099-01-15",
"endDate": "2099-01-15",
"timezone": "UTC"
},
"accounts": [
{
"id": "11111111-1111-4111-8111-111111111111",
"workspaceId": "11111111-1111-4111-8111-111111111111",
"platform": "facebook",
"name": "Fictional report account"
}
],
"posts": [],
"sources": [],
"coverage": {
"population": "discovered_posts",
"postsComplete": false,
"nextCursor": null,
"postLimit": 0,
"postInsightsLimit": 0,
"omittedPostInsights": 0,
"notes": []
},
"customMetrics": []
},
"reviewed_fingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
})
});
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/render < request.json合成レスポンス例
{
"contract_version": "analytics-render-input/v1",
"kind": "template",
"dataset": {
"contractVersion": "analytics-report/v1",
"id": "11111111-1111-4111-8111-111111111111",
"reviewedAt": "2099-01-15T09:00:00Z",
"selection": {
"workspaceId": "11111111-1111-4111-8111-111111111111",
"accountIds": [
"11111111-1111-4111-8111-111111111111"
],
"platforms": [
"facebook"
],
"startDate": "2099-01-15",
"endDate": "2099-01-15",
"timezone": "UTC"
},
"accounts": [
{
"id": "11111111-1111-4111-8111-111111111111",
"workspaceId": "11111111-1111-4111-8111-111111111111",
"platform": "facebook",
"name": "Fictional report account"
}
],
"posts": [],
"sources": [],
"coverage": {
"population": "discovered_posts",
"postsComplete": false,
"nextCursor": null,
"postLimit": 0,
"postInsightsLimit": 0,
"omittedPostInsights": 0,
"notes": []
},
"customMetrics": []
},
"format": "pptx",
"output": "native",
"locale": "en",
"template": {
"id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"source_base64": "example",
"source_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"mappings": {}
},
"reviewed_fingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}