GRANSKA

Deprecated fields

Three field names on the legal-source endpoints belong to a vocabulary the engine no longer uses. Two of them are still delivered beside their replacements so that nobody had to migrate in the same release as the rename; one could not be.

They are not stored any more. They are computed when the response is assembled, which is why they can be omitted rather than guessed when the computation has no answer — and why removing them is one commit rather than a migration.

There is no flag, header or version parameter that turns them off or keeps them on. A second contract maintained for a handful of clients costs more than it protects. They are removed once the integrations that read them confirm they no longer do; tell us when you are one of them.

Where they appear

Only on the legal-source endpoints, and only in two of the three shapes:

The single-source mode of GET /v1/snippets — the one that resolves a snippetKey or a jurisdiction/work/pinpoint reference — carries none of them and never will. That mode arrived with the new names, so there is no client with an old expectation to keep, and what was never published never needs deprecating.

normLevel — read authorityType

normLevel was a set of Swedish strings: "Lag", "Förordning", "Föreskrift" and so on. It has been replaced by authorityType, a fixed, jurisdiction-neutral vocabulary of fourteen values:

CONSTITUTIONAL_LAW, STATUTE, ORDINANCE, AGENCY_REGULATION, LOCAL_REGULATION, EU_TREATY, EU_REGULATION, EU_DIRECTIVE, EU_DECISION, CASE_LAW, SUPERVISORY_DECISION, PREPARATORY_WORKS, GENERAL_ADVICE, GUIDANCE.

The deprecated value is computed back from authorityType. For nine of the fourteen there is always an answer. For the five the old vocabulary had no word for — CONSTITUTIONAL_LAW, EU_TREATY, EU_DIRECTIVE, EU_DECISION and SUPERVISORY_DECISION — the field is omitted from the response rather than filled with an approximation. A client that treats a missing normLevel as a fault will see faults that are not there.

One distinction did not survive: "Vägledning" and "Granskningsstöd" are now the same thing. Both are GUIDANCE, so the deprecated field returns "Vägledning" for either. We are not pretending otherwise.

legalWeight — there is no replacement, and that is the point

legalWeight said whether a norm binds. It is no longer a property of a source, because it is not one: whether a norm binds is derived per analysis, from the source's authorityType against the norm hierarchies of the jurisdictions that analysis covers. The same authorityType can bind in one profile and be interpretive support in another.

A list of legal sources has no analysis to derive against. The value delivered here is therefore computed against every configured hierarchy at once, which makes it an approximation of what you received before the rename — close, and not authoritative. If you need the exact answer, only an analysis can give it, and a delivered analysis states it beside each finding.

If the hierarchies cannot be read, the field is omitted rather than guessed.

ruleGroupId — read snippetKey, and remap once

ruleGroupId is the one that cannot be delivered under its old name, and it is the only breaking change in the set.

snippetKey fills the same role — a stable, tenant-independent key for an authored source — but with different values, and a source now has exactly one row rather than a chain of historical versions. A ruleGroupId you saved before the rename matches nothing we could send. Publishing snippetKey under the old name would have looked like a hit without being one, which is worse than an absence your code notices.

If you hold saved ruleGroupId values, they need mapping to snippetKey once. Get in touch and we will do it with you.

When they go

The two computed fields disappear from every response in the release that removes the shim. Nothing else changes with them: authorityType is already there, already correct, and already the field the engine itself reads. A client that reads authorityType today is a client that needs no work when that release lands.