---
id: TST-PFM-QRY-187
title: Platform data exports
kind: api-lifecycle
product_area: platform
module: queries
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  rhythm-v2-docs: 99376625d3e7ac26936413cfc31a88fba6562464
repository: services-platform
files:
  - modules/data-exports/tests/e2e/data-exports.e2e.spec.js
implements:
  - ATS-PFM-QRY-018-01
  - ATS-PFM-QRY-018-02
  - ATS-PFM-QRY-018-03
  - ATS-PFM-QRY-018-04
  - ATS-PFM-QRY-018-08
  - ATS-PFM-QRY-018-09
  - ATS-PFM-QRY-018-11
  - ATS-PFM-QRY-018-14
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: 'The suite’s database fixtures, controlled execution contexts and file-owned external dependency seams.'
evidence:
  - 'services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js'
assertion_bindings:
  - scenario: ATS-PFM-QRY-018-01
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#refuses a Power User every
        data export route
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#serves an Administrator, who
        holds the Data Exporter beside the administrator tier
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-018-02
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is refused every read route
        when it holds the other three keys and the administrator tier
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is refused every manage
        route when it holds the other three keys and the administrator tier
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is refused every execute
        route when it holds the other three keys and the administrator tier
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is refused the download
        route when it holds the other three keys and the administrator tier
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-018-03
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#refuses a sandbox its
        settings with 403 tenant_not_eligible
    scope: contributing assertions; the scenario combines multiple files
    provenance: test
  - scenario: ATS-PFM-QRY-018-04
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#changes the definition at
        the version it read
    scope: contributing assertions; the scenario combines multiple files
    provenance: test
  - scenario: ATS-PFM-QRY-018-08
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is answered 404 for the
        manifest of an execution with no package yet
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is answered 409
        not_implemented for a cancellation, until the generation job
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is answered 409
        not_implemented for a download, until the generation job
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is answered 409
        not_implemented for a delivery retry, until delivery
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-018-09
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is refused every console
        route, whatever it holds at platform scope (rule S1)
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is served every HQ route
        with hq.data-exports.read
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#lists every tenant of a
        customer’s executions on the HQ route
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#is refused every one,
        holding everything at its customer’s scope
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-018-11
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#answers another tenant’s
        execution 404, as one that does not exist
    scope: assertions cited by the scenario
    provenance: test
  - scenario: ATS-PFM-QRY-018-14
    source:
      - >-
        services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js#exports now: 202 with the
        execution queued
    scope: contributing assertions; the scenario combines multiple files
    provenance: test
fixture_seams:
  - 'services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js:45'
  - 'services-platform:modules/data-exports/tests/e2e/data-exports.e2e.spec.js:71'
---

# Platform data exports

## Verification Boundary

The file dispatches requests through the real route table and signed execution contexts against its local fixtures.

## What This Suite Proves

Its assertions check data exports. The assertion bindings identify the corresponding acceptance examples and retain their original test-title citations.

## What It Does Not Prove

Local execution does not establish deployed queue scheduling, every external provider response or a passing result at the pinned revision.

## Real Dependencies and Test Doubles

The integration fixture and any imported dependency seams define the environment. Database-oriented checks use PostgreSQL; file-owned transport, clock, provider or worker seams isolate the explicitly controlled boundary.

## Must Not Be Doubled

Keep the dispatcher, route requirements and the handler behavior named by the assertions real. Review any new substitutions before treating the same acceptance bindings as unchanged.
