---
title: "Explain sandbox official-source attribution"
method: GET
path: "/official-sources/attribution/explain"
tags: ["Official sources"]
---

# Explain sandbox official-source attribution

`GET /official-sources/attribution/explain`

## Request

- Base URL: `https://platform-api.homejourney.sg/v1`
- URL: `https://platform-api.homejourney.sg/v1/official-sources/attribution/explain`
- Auth: HTTP bearer

Returns public-safe source-attribution explanation records for sandbox official-source datasets or records when the authenticated automation client has `official_sources.read`. External URL: `/v1/official-sources/attribution/explain`. Current Next.js implementation path: `/api/platform/v1/official-sources/attribution/explain`. This read-only route validates attribution metadata and safety guardrails without calling upstream agencies, running fixture refreshes, mutating live datasets, or returning raw record payloads; live attribution explanations remain deferred.

## Query parameters

- `source_id` string
- `dataset_id` string
- `record_id` string

## Headers

- `X-Correlation-Id` string

## Response `200`

Sandbox official-source response.

- OfficialSourceAttributionExplanationResponse
  - `explanations` object[], required
    - `explanation_id` string, required
    - `source_id` string, required
    - `dataset_id` string, required
    - `record_id` string, nullable, required
    - `attribution` object, required
      - `source_agency` string, required
      - `source_name` string, required
      - `source_url_or_id` string, required
      - `retrieved_at` string, date-time, required
      - `valid_from` string, date-time, nullable, required
      - `valid_to` string, date-time, nullable, required
      - `license_label` string, required
      - `freshness_status` 'fresh' | 'aging' | 'stale' | 'outage_fallback' | 'manual_review' | 'disputed' | 'terms_blocked' | 'unknown', required
      - `confidence` number, required
      - `schema_version` string, required
      - `derived_from` string[], required
    - `completeness` object, required
      - `required_fields` string[], required
      - `missing_fields` string[], required
      - `complete` true, required
    - `freshness` object, required
      - `status` 'fresh' | 'aging' | 'stale' | 'outage_fallback' | 'manual_review' | 'disputed' | 'terms_blocked' | 'unknown', required
      - `retrieved_at` string, date-time, required
      - `valid_from` string, date-time, nullable, required
      - `valid_to` string, date-time, nullable, required
      - `degraded_reason` string, nullable, required
    - `provenance` object, required
      - `derived_from` string[], required
      - `source_url_or_id` string, required
      - `license_label` string, required
      - `public_display_allowed` boolean, required
      - `partner_access_allowed` boolean, required
    - `safety` object, required
      - `production_upstream_api_called` false, required
      - `live_dataset_mutated` false, required
      - `raw_credential_material_returned` false, required
      - `restricted_payload_returned` false, required
  - `access` object, required
    - `organization_id` string, uuid, required
    - `client_id` string, uuid, required
    - `granted_official_source_scopes` PlatformScope[], required
    - `actor_model` 'api_key_automation_client', required
    - `live_upstream_access` 'deferred', required
    - `sandbox_fixture_mode` 'read_only', required
    - `upstream_credential_material_returned` false, required
  - `livemode` false, required
  - `request_id` string, required

## Other responses

- `400`: Request validation failed.
- `401`: Missing or invalid platform API key.
- `403`: Credential, environment, or scope is not allowed.
- `404`: Platform API feature or resource is not available.
- `429`: Rate limit exceeded.
- `500`: Unexpected platform API failure.

---

[API](https://skmtc.dev/homejourney/apis/homejourney-platform-api.md) · [All operations](https://skmtc.dev/homejourney/apis/homejourney-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/homejourney/apis/homejourney-platform-api/revisions/a2c6fe063db1?raw)
