3. Objects and mappings
After the first read, a system waits for your review. You check its objects and fields, correct what is wrong, and approve. Then you map it to another system.
Review a system's objects and fields
In the app, open the system. Its tabs are Review, Objects and fields, Flows, Sign-in, Sync timing, Settings and History.
From the API, read what was found:
curl https://api.inferrex.com/v1/connections/CONNECTION_ID/manifest \
-H "X-API-Key: $INFERREX_API_KEY"
The part you review is manifest.entities. Each entity is one object. Shape, trimmed to the fields you will use most:
{
id: string;
version: number;
manifest: {
displayName: string;
baseUrl: string;
entities: {
id: string;
apiName: string;
displayName: string;
description: string;
fields: {
id: string;
apiName: string;
displayName: string;
type: string;
required: boolean;
nullable: boolean;
role?: string; // what the field represents, such as an identifier
sensitivity?: string; // pii, financial, health or credential
typeConfidence: number;
requiresCustomerReview: boolean;
included?: boolean;
group?: string;
}[];
relationships: { type: string; targetEntityId: string; throughField: string; confidence: number }[];
}[];
};
}
Start with the fields where requiresCustomerReview is true.
Accept or correct one field
curl -X POST https://api.inferrex.com/v1/connections/CONNECTION_ID/approve-field \
-H "X-API-Key: $INFERREX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fieldPath": "ENTITY_ID.FIELD_ID",
"approved": true,
"correctedSensitivity": "pii",
"reason": "Holds the customer email address"
}'
fieldPath is <entityId>.<fieldId>. You can correct the type (correctedType), name (correctedDisplayName), description (correctedDescription), which system is trusted for it (correctedAuthority), what it represents (correctedRole) and its sensitivity (correctedSensitivity: none, pii, financial, health or credential). Your corrections take priority.
Leave fields out
A field you leave out is never suggested for mapping, never synced, never archived and never shown in your sensitive-data map.
curl -X PATCH https://api.inferrex.com/v1/connections/CONNECTION_ID/field-inclusion \
-H "X-API-Key: $INFERREX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fields": [{"entityId": "ENTITY_ID", "fieldId": "FIELD_ID", "included": false}]}'
Each change is saved as a new version, so you can see it in the history and undo it.
Group fields
Put fields into groups, such as financial or contact details, so you can make one decision for the whole group later. GET /v1/connections/:id/field-group-recommendations suggests groups with a reason for each. PATCH /v1/connections/:id/field-groups saves them.
Approve the system
curl -X POST https://api.inferrex.com/v1/connections/CONNECTION_ID/approve \
-H "X-API-Key: $INFERREX_API_KEY"
Approval makes the system usable in flows. It works only while the system is waiting for review, and only once a test of its sign-in has read data from it. Until then the answer is 409 connection_not_proven. Prove it with POST /v1/connections/:id/test, then approve again.
Check the size before loading
POST /v1/connections/:id/assess-scope asks the system how many records each object holds and estimates the storage, time and API calls a first full load would take. Run it before you turn on a flow against a large system.
Map two systems
A mapping says how the data in one system lines up with another: which objects correspond and which fields feed which.
Step 1: match
curl -X POST https://api.inferrex.com/v1/connections/SOURCE_CONNECTION_ID/match \
-H "X-API-Key: $INFERREX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"targetConnectionId": "TARGET_CONNECTION_ID"}'
Response shape: { mappingId, jobId, runId, status, sourceConnectionId, targetConnectionId }.
By default the call waits and returns mappingId. If it takes longer, or you send "respondAsync": true (or the header Prefer: respond-async), it returns a jobId at once. Follow the job with GET /v1/jobs/:id and read the mapping id from its result when it has succeeded.
Step 2: review
| To do this | Call | MCP tool |
|---|---|---|
| Read the mapping in full | GET /v1/mappings/:id |
mappings_get_mapping |
| List every field in both systems, marked if a link uses it | GET /v1/mappings/:id/fields |
mappings_list_mappable_fields |
| Fetch one real record from either side | GET /v1/mappings/:id/sample |
mappings_fetch_mapping_sample |
| See a source record beside the matching target record | GET /v1/mappings/:id/estate |
mappings_get_mapping_estate |
A mapping holds entityMappings, and each holds fieldMappings. The fields of a link that matter in review:
{
id: string;
sourceEntityId: string; sourceFieldId: string;
targetEntityId: string; targetFieldId: string;
transform: string;
authority: string;
direction?: string;
confidence: number;
matchRationale: string;
customerApproved: boolean;
customerRejected?: boolean;
omitted?: boolean;
}
Step 3: decide each link
Change one link:
curl -X PATCH https://api.inferrex.com/v1/mappings/MAPPING_ID/field-mapping \
-H "X-API-Key: $INFERREX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fieldMappingId": "FIELD_MAPPING_ID", "approved": true}'
Two decisions are easy to confuse:
- Reject (
"approved": false) means the link is wrong. - Leave out (
"omitted": true) means do not sync this field. It does not change whether the link is approved.
Decide many links at once:
curl -X PATCH https://api.inferrex.com/v1/mappings/MAPPING_ID/field-mappings \
-H "X-API-Key: $INFERREX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fieldMappingIds": ["FIELD_MAPPING_ID_1", "FIELD_MAPPING_ID_2"], "action": "approve"}'
action is approve, reject, omit, restore or amend. The whole batch is saved as one new version, so it can be undone in one step.
Other edits:
| To do this | Call | MCP tool |
|---|---|---|
| Add a link Inferrex did not suggest | POST /v1/mappings/:id/field-mapping |
mappings_create_field_mapping |
| Choose the fields that identify the same record in the target | PATCH /v1/mappings/:id/entity-match |
mappings_set_entity_match |
| Send one field to further places | PUT /v1/mappings/:id/field-mapping/destinations |
mappings_set_field_mapping_destinations |
| Send every field in a group somewhere | PUT /v1/mappings/:id/group-destinations |
mappings_set_group_destinations |
Set the entity match before you sync. The sync looks for a target record with the same values in those fields and updates it, so it does not create a duplicate.
Step 4: approve the mapping
curl -X POST https://api.inferrex.com/v1/mappings/MAPPING_ID/approve \
-H "X-API-Key: $INFERREX_API_KEY"
Flows that use an approved mapping can be turned on.
Versions
Every edit to a mapping saves a new version.
| To do this | Call | MCP tool |
|---|---|---|
| List versions | GET /v1/mappings/:id/versions |
mappings_list_mapping_versions |
| Read one version | GET /v1/mappings/:id/versions/:version |
mappings_get_mapping_version |
| Compare two versions | GET /v1/mappings/:id/compare |
mappings_compare_mapping_versions |
| Go back to an earlier version | POST /v1/mappings/:id/revert |
mappings_revert_mapping |
| See which flows use the mapping, and which version | GET /v1/mappings/:id/pipelines |
mappings_list_mapping_pipelines |
A flow keeps the mapping version it was turned on with. Editing a mapping does not change a running flow. The edit's answer lists the flows still on an older version in flowsBehind. Move a flow to the new version with POST /v1/pipelines/:id/apply-mapping (chapter 4).
Next: flows.