Object Matching Rules¶
Object matching rules determine how connector space objects are matched to existing metaverse objects during synchronisation. When an imported object doesn't have a direct join, matching rules evaluate attributes to find a corresponding metaverse object.
JIM supports two matching modes:
- Simple mode (default): Matching rules are configured per object type on the connected system. All sync rules for that object type share the same matching rules.
- Advanced mode: Matching rules are configured per sync rule, allowing different matching logic for different sync rules on the same object type.
Use the Switch Matching Mode endpoint to change between modes.
The Matching Rule Object¶
{
"id": 1,
"order": 0,
"connectedSystemObjectTypeId": 10,
"connectedSystemObjectTypeName": "user",
"metaverseObjectTypeId": 1,
"metaverseObjectTypeName": "person",
"syncRuleId": null,
"targetMetaverseAttributeId": 3,
"targetMetaverseAttributeName": "employeeId",
"sources": [
{
"id": 1,
"order": 0,
"connectedSystemAttributeId": 105,
"connectedSystemAttributeName": "employeeNumber",
"metaverseAttributeId": null,
"metaverseAttributeName": null
}
],
"caseSensitive": false,
"created": "2026-01-15T10:00:00Z"
}
| Field | Type | Description |
|---|---|---|
id |
integer | Unique identifier |
order |
integer | Evaluation order (lower values evaluated first) |
connectedSystemObjectTypeId |
integer | Connected system object type |
connectedSystemObjectTypeName |
string, nullable | Object type name |
metaverseObjectTypeId |
integer, nullable | Metaverse object type to search |
metaverseObjectTypeName |
string, nullable | Metaverse object type name |
syncRuleId |
integer, nullable | Associated sync rule (advanced mode only) |
targetMetaverseAttributeId |
integer, nullable | MV attribute to match against |
targetMetaverseAttributeName |
string, nullable | Target MV attribute name |
sources |
array | Source attributes to match from |
caseSensitive |
boolean | Whether matching is case-sensitive |
created |
datetime | UTC creation timestamp |
List Matching Rules (Simple Mode)¶
Returns matching rules for a connected system object type.
GET /api/v1/synchronisation/connected-systems/{connectedSystemId}/object-types/{objectTypeId}/matching-rules
Examples¶
Response¶
Returns 200 OK with an array of matching rule objects.
Create a Matching Rule¶
Creates a matching rule at the connected system level (simple mode).
Request Body¶
| Parameter | Type | Required | Description |
|---|---|---|---|
connectedSystemObjectTypeId |
integer | Yes | CS object type ID |
metaverseObjectTypeId |
integer | Yes | MV object type to search |
targetMetaverseAttributeId |
integer | Yes | MV attribute to match against |
sources |
array | Yes | At least one source attribute |
order |
integer | No | Evaluation order |
caseSensitive |
boolean | No | Case-sensitive matching (default: true) |
Each source:
| Parameter | Type | Required | Description |
|---|---|---|---|
order |
integer | No | Source evaluation order |
connectedSystemAttributeId |
integer | No | CS attribute to match from (import) |
metaverseAttributeId |
integer | No | MV attribute to match from (export) |
Examples¶
# Match CS employeeNumber to MV employeeId
curl -X POST https://jim.example.com/api/v1/synchronisation/connected-systems/1/matching-rules \
-H "X-Api-Key: jim_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"connectedSystemObjectTypeId": 10,
"metaverseObjectTypeId": 1,
"targetMetaverseAttributeId": 3,
"sources": [
{
"order": 0,
"connectedSystemAttributeId": 105
}
],
"caseSensitive": false
}'
Response¶
Returns 201 Created with the matching rule object.
Update a Matching Rule¶
Examples¶
Delete a Matching Rule¶
Examples¶
List Matching Rules (Advanced Mode)¶
Returns matching rules configured on a specific sync rule.
Examples¶
Create a Matching Rule (Advanced Mode)¶
Creates a matching rule on a specific sync rule. The metaverse object type is derived from the sync rule.
Request Body¶
| Parameter | Type | Required | Description |
|---|---|---|---|
targetMetaverseAttributeId |
integer | Yes | MV attribute to match against |
sources |
array | Yes | At least one source attribute |
order |
integer | No | Evaluation order |
caseSensitive |
boolean | No | Case-sensitive matching (default: true) |
Examples¶
Switch Matching Mode¶
Switches a connected system between simple mode (matching rules per object type) and advanced mode (matching rules per sync rule).
Request Body¶
| Parameter | Type | Required | Description |
|---|---|---|---|
mode |
string | Yes | ConnectedSystem (simple) or SyncRule (advanced) |
Warning
Switching modes may migrate or remove existing matching rules. Review the response to understand what changes were made.
Examples¶
# Switch to advanced mode (per sync rule)
curl -X POST https://jim.example.com/api/v1/synchronisation/connected-systems/1/matching-mode \
-H "X-Api-Key: jim_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "mode": "SyncRule" }'
# Switch back to simple mode (per object type)
curl -X POST https://jim.example.com/api/v1/synchronisation/connected-systems/1/matching-mode \
-H "X-Api-Key: jim_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "mode": "ConnectedSystem" }'
Response¶
Returns 200 OK with the mode switch result.
Errors¶
| Status | Code | Description |
|---|---|---|
400 |
BAD_REQUEST |
Invalid mode or cannot switch (e.g. conflicting rules) |
401 |
UNAUTHORISED |
Authentication required |
404 |
NOT_FOUND |
Connected system does not exist |