Unify and manage your data

Transcode API

API to transcode lookup values

Most of the time reference data is standardized before being imported or used by enterprise systems or applications. However, some data elements are represented differently in different applications. These differences can cause problems when different systems or applications interact. Reltio's Transcoding APIs can be used to convert the source system data to canonical (standardized) values before bringing in this data into Reltio. You can transcode simple and hierarchical lookups. In addition, reverse transcoding can be performed.

Transcode Simple Lookup

Request

To transcode a simple lookup value, send a POST request with the lookup type, value, and source system as shown below.

POST https://{{rdm-service}}/transcode/rdm_tenant_name/value
Authorization: Bearer {{token}}
{
    "type": "rdm/lookupTypes/State",
    "value": "AR",
    "source": "rdm/sources/Reltio"
}

Response

On success, the API returns the canonical value corresponding to the provided source value, along with a success flag confirming the transcoding result.

{
  "type": "rdm/lookupTypes/State",
  "code": "AR",
  "value": "Arkansas",
  "source": "rdm/sources/Reltio",
  "success": true 
}

Transcode Hierarchical Lookups

The Transcode API resolves a parent lookup (such as Country) alongside one or more dependent child lookups (such as State) in a single request. The response preserves the parent-child relationship between the values.

Request

To transcode hierarchical lookups, send a POST request that includes both the parent lookup values and their dependent child lookup values in a nested structure.

POST https://{{rdm-service}}/transcode/rdm_tenant_name
Authorization: Bearer {{token}}
[
  {
    "values": {
      "rdm/lookupTypes/Country": [
        {
          "value": "US",
          "source": "rdm/sources/Reltio"
        }
      ]
    },
    "dependentValues": [
      {
        "values": {
          "rdm/lookupTypes/State": [
            {
              "value": "AR",
              "source": "rdm/sources/Reltio"
            }
          ]
        }
      }
    ]
  }
]

Response

The API returns the resolved canonical values for both the parent and child lookups, maintaining the original hierarchical structure in the response.

[
  {
    "values": {
      "rdm/lookupTypes/Country": [
        {
          "code": "US",
          "value": "USA",
          "source": "rdm/sources/Reltio",
          "success": true
        }
      ]
    },
    "dependentValues": [
      {
        "values": {
          "rdm/lookupTypes/State": [
            {
              "code": "AR",
              "value": "Arkansas",
              "source": "rdm/sources/Reltio",
              "success": true
            }
          ]
        }
      }
    ]
  }
]

How parent child validation works

When the transcode engine resolves a hierarchical request, its validation logic enforces three specific characteristics that deviate from the default resolution behavior:

  1. Source is not used for parent-child validation : The source system of the child value (for example, BFO) and the source system of the parent value (for example, Planon) are not correlated during validation. The engine validates the parent-child relationship using canonical codes of resolved parent values only, not the source systems they came from.
  2. There is no row-level pairing : The engine does not pair individual parent rows with individual child rows. Instead, all successfully resolved parent values of the same lookup type are collapsed into a single set of canonical codes. If the child value's resolved canonical code is a valid child of any canonical code in that set, the child resolves successfully.
  3. Cross-source resolution is by design: When multiple source systems contribute values for a parent lookup type, RDM checks whether at least one resolved parent canonical code is a valid parent for the requested child value. If so, the child resolves successfully. RDM does not return a lookup error, even when the resolved parent and child originate from different source systems.
Example: Transcode dependent child values by parent lookup values

The following example shows how the API resolves parent lookup values first and then evaluates dependent child values in that parent context. In this example, the parent lookup type is Country, and the dependent child lookup type is State. The canonical code IN is the parent of the canonical code KL, so the value Kerala resolves successfully when it is evaluated under that parent relationship. By contrast, Keralam is defined with no parent, so it does not match the parent-child mapping in this example.

Example Request

The following request example shows the parent lookup values and dependent child values sent to the API for hierarchical transcoding.

POST https://{{RdmApiUrl}}/transcode/{{RdmTenant}}
Authorization: Bearer {{token}}
[
    {
        "values": {
            "rdm/lookupTypes/Country": [
                {
                    "type": "rdm/lookupTypes/Country",
                    "value": "India",
                    "source": "SAP"
                },
                {
                    "type": "rdm/lookupTypes/Country",
                    "value": "Bharath",
                    "source": "OKTA"
                }
            ],
            "dependentValues": [
                {
                    "values": {
                        "rdm/lookupTypes/State": [
                            {
                                "type": "rdm/lookupTypes/State",
                                "value": "Keralam",
                                "source": "SAP"
                            },
                            {
                                "type": "rdm/lookupTypes/State",
                                "value": "Kerala",
                                "source": "OKTA"
                            }
                        ]
                    }
                }
            ]
        }
    }
]

Example Response

The following response example shows how the API returns the resolved parent lookup values and the evaluated dependent child values based on the parent-child mapping.

[
  {
    "values": {
      "rdm/lookupTypes/Country": [
        {
          "code": "IN",
          "value": "India",
          "source": "rdm/sources/SAP",
          "success": true
        },
        {
          "code": "BH",
          "value": "Bharath",
          "source": "rdm/sources/OKTA",
          "success": true
        }
      ]
    },
    "dependentValues": [
      {
        "values": {
          "rdm/lookupTypes/State": [
            {
              "error": "1003: RDM canonical value mapping not found for value [Keralam] and source [SAP] in tenant [RDM_tenantId]",
              "value": "Keralam",
              "source": "rdm/sources/SAP",
              "success": false
            },
            {
              "code": "KL",
              "value": "Kerala",
              "source": "rdm/sources/OKTA",
              "success": true
            }
          ]
        }
      }
    ]
  }
]

Reverse Transcoding

Reverse transcoding is applied using Transcode API, with &targetSource=AHA in request parameters.

Note: When targetSource is not specified or contains a non-existing source system, API request will return a canonical value.

Request

To perform reverse transcoding, send a POST request with the targetSource query parameter specifying the target source system, along with the lookup type and value to be transcoded.

POST {{rdm_uri}}/transcode/{{rdm_tenant}}/value?targetSource=AHA
HEADERS:
Accept-Language: es-mx
BODY:
{
    "type": "rdm/lookupTypes/Country",
    "value": "US",
    "source": "rmd/sources/Reltio"
}

Response

The API returns the value translated into the target source system's representation, including the corresponding code and a success flag indicating a successful reverse transcode.

{
  "type": "rdm/lookupTypes/Country",
  "code": "080",
  "value": "USA",
  "source": "rdm/sources/Reltio",
  "success": true
}