Watch Attestation
Watches
Watch Attestation
Fetch the monthly proof-of-monitoring record for a watch, as verifiable JSON or a filable PDF
GET
Watch Attestation
Overview
A filable, monthly record that a watch was actually evaluated during a period, the office-data horizon it covered, and the outcome, including the negative outcome. It is the artifact a firm keeps on file to show that a monitoring instruction was in force and was executed. The artifact is computed deterministically from the evaluation receipts recorded at the time, so re-fetching a closed period months later produces the same bytes and the samecontent_hash.
Read-only: calling it never changes anything.
Requires the portfolios:manage scope.
What it certifies, and what it does not. This record certifies that evaluation occurred against
the stated data horizons. It does not certify that every relevant mark was surfaced, since
recall is bounded by office coverage and match strategy. That distinction is written into the
statement field of every artifact and printed on the PDF.Path Parameters
string
required
Watch ID (
wat_*).Query Parameters
string
UTC calendar month as
YYYY-MM. Defaults to the previous (most recently closed) month.'json' | 'pdf'
Response format. Defaults to
json. Use pdf for the business record. An explicit format
wins over the Accept header.'true' | 'false'
Set
true to get an interim artifact for the current, still-open month. The result carries
period.partial: true and its figures can still change. Default false.The PDF business record
Pass?format=pdf, or send Accept: application/pdf. The response is a PDF attachment named
{watch-name}-{YYYY-MM}-attestation.pdf.
The PDF is rendered from the same artifact as the JSON, so the two never disagree. It leads with
the summary figures and the attested statement, then the per-office coverage table and any
disclosed gaps, then the configuration and integrity hash. The JSON is the copy you verify
against; the PDF is the copy you file.
Response
string
Always
watch_attestation.string
Artifact schema version (e.g.
2026-08-01). Bumped on any additive field change.object
The monitoring instruction the record attests to.
object
object[]
One entry per office in the watch’s scope.
object
'consistent' | 'mismatch'
Cross-check of the recorded alert counts against the stored alert rows for the period.
mismatch is disclosed rather than silently reconciled.string
The plain-language attestation, including the limit of what it certifies.
string
Version of the internal freshness-target table used to decide what counted as a gap.
string
Present (
paused or disabled) when the watch is not active at generation time. Pause
history within the period is not reconstructable today. Excluded from content_hash.string
When this copy was produced. Excluded from
content_hash.string
sha256 over the canonical artifact. See Verifying a filed record.string
Request identifier.
Coverage gaps
A gap is an interval where the office-data coverage the watch had evaluated through fell behind the internal freshness target for that office. Gaps are reconstructed from the receipts, not recorded by hand.string
When coverage first went stale.
string
When coverage recovered, or the period end if it never did.
'office_lagging' | 'evaluation_failed'
office_lagging means coverage was stale beyond the target. evaluation_failed is reserved for
a future version: failed evaluations write no receipt, so they are not reconstructed as gaps
today.boolean
true when coverage caught back up inside the period. false means it was still behind
when the period closed. That is a statement about this period only, not a claim that it stayed
behind afterwards.- A covered office with zero evaluations carries a single gap spanning the whole period.
- Evaluations recorded before coverage snapshots existed cannot state what horizon they
covered, so they are disclosed as incomplete coverage evidence with a
nullcoverage_through, never presented as covered.
Unsupported offices
If a watch is scoped to an office Signa does not ingest, that office appears withstatus: "unsupported" and no evaluation claims at all. Signa will never render a clean,
zero-alert attestation for an office it does not cover, because that would read as “we looked and
found nothing” when the truth is “we do not cover this office yet”.
If every office in the scope is unsupported, the endpoint returns 422 attestation_unsupported_scope rather than an empty artifact.
Verifying a filed record
content_hash is a sha256 over the canonical, sorted-key artifact, excluding the fields that
legitimately differ between two fetches of the same period: generated_at, request_id,
content_hash itself, watch_status_at_generation, watch.name, and
watch.configuration_changed_since_period.
To verify a filed copy, re-fetch the same closed period and compare hashes. A match proves the
figures were not altered after issue.
This proves integrity, not third-party authenticity. Signed and RFC 3161 timestamped
documents are on the roadmap.
Retention
Attestations are available for closed months within the last 25 months. Beyond that, the backing evaluation receipts have aged out and the endpoint returns410 attestation_expired.
Errors
Code Examples
Related Endpoints
- Watch Diagnostics - explain a single expected alert
- Retrieve Watch - the watch this record attests to
- Attestations guide - how firms use the artifact
- Monitoring status guide - live coverage, as opposed to the monthly record