Mapping Overrides
Adjust how one conversion pair maps a field (shorten a reference, supply a default, drop a field) with a small override/v1 document you validate, store and switch on or off yourself.
What an override can and cannot do
An override is a small JSON document (override/v1, see the document reference) that adjusts one conversion pair. Each rule picks a registered mapping row and either:
- applies a named transform from a fixed list (
truncate,fixed-value,code-table,pass-through), - supplies a
defaultliteral when the target would otherwise be empty, or suppresses the field.
It can never add logic, create a conversion the engine does not offer, or touch an amount or a currency. Output still passes the same schema validation as without an override.
Override documents are your configuration, not message content. Nothing in transmute builds one from a message you converted, and the API only accepts a document you mark as written by a person. Type default values yourself; never paste values out of live messages.
Before you start
You need a key with the opt-in overrides:manage scope (plus convert to see the effect). On the portal, workspace admins and owners manage the same documents under Overrides.
1. Validate (dry run)
This document shortens the MT940 :20: reference to 4 characters when converting camt.053 to MT940:
curl -sS -X POST https://api.transmute.403fin.io/v1/overrides/validate \
-H "Authorization: Bearer $TRANSMUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"document": {
"schema": "override/v1",
"pair": { "from": "camt.053", "to": "mt940" },
"rules": [ { "path": ":20:", "action": "transform", "transform": "truncate", "params": { "max": 4 } } ]
}}'
{
"valid": true,
"errors": [],
"pair": { "from": "camt.053", "to": "mt940" },
"sr": "SR2025",
"rules": 1,
"bindings": [
{ "leg_from": "canonical.Statement", "leg_to": "mt940", "source": "messageRef", "target": ":20:", "action": "transform" }
]
}
Nothing is stored. bindings lists the exact table rows each rule attached to. A document that breaks a rule comes back with "valid": false and the reasons in errors.
2. Store
PUT /v1/overrides/{name} creates or replaces a document. The body must carry "userAuthored": true; the API refuses anything else.
curl -sS -X PUT https://api.transmute.403fin.io/v1/overrides/short-ref \
-H "Authorization: Bearer $TRANSMUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"userAuthored": true, "document": { "schema": "override/v1",
"pair": { "from": "camt.053", "to": "mt940" },
"rules": [ { "path": ":20:", "action": "transform", "transform": "truncate", "params": { "max": 4 } } ] }}'
The change applies to your next conversion. Limits:
| Limit | Value |
|---|---|
| Name | ^[a-z0-9-]{1,64}$ (validate is reserved) |
| Document size | 64 KiB |
| Documents per workspace | 20 |
| Writes | 20 per minute per workspace |
| Validations | 30 per minute per workspace |
Two enabled documents may not attach to the same table row; the second write is a conflict 409.
3. Check it took effect
Convert as usual. When a rule changed a field, the response carries an OVERRIDE_APPLIED warning naming the field (and a suppress adds OVERRIDE_SUPPRESSED). That warning is the proof a rule took effect.
A rule can validate and still have no effect when the row it attaches to describes logic the converter applies directly rather than through its mapping table. Today that is the case for rows on the MT940, MT942 and MT950 source side and for part of the camt.052/053/054 target side. Run one test conversion and look for OVERRIDE_APPLIED before you rely on a document.
4. Manage
| Call | Effect |
|---|---|
GET /v1/overrides | List documents (name, pair, rule count, enabled, resolves) |
GET /v1/overrides/{name} | One document with its rules |
PATCH /v1/overrides/{name} {"enabled": false} | Switch off without deleting |
DELETE /v1/overrides/{name} | Remove |
"resolves": false means a Standards Release update moved a row under a stored document. Conversions skip that document until you replace it.
Every write is recorded in your audit trail with the pair and rule count, never the document. These routes are account management: never metered, never counted toward your quota. Overrides apply to /v1/convert and /v1/normalize; batch items run without them today.
Errors
| Status | Type | When |
|---|---|---|
| 400 | invalid-input | Bad name, missing "userAuthored": true, oversized or invalid document |
| 403 | forbidden-scope | Key lacks overrides:manage |
| 404 | not-found | No document of that name in your workspace |
| 409 | conflict | 20-document limit, or a rule attaches to a row another enabled document uses |
| 429 | rate-limited | Write or validation limit reached |
| 503 | overrides-unavailable | The deployment manages overrides from files (self-hosted) |