RenderTypes for Relations
This document is intended for ServiceNow / Squid administrators wanting to understand how Squid works or creating custom configurations.
Accessing Squid as a data consumer does not require reading this document!
While References and Relations define what is to be rendered, RenderTypes define how that data is rendered.
RenderTypes have an impact on
- the rendered JSON and with that what data is returned as well as how that data is structured.
- the database load (some RenderTypes can cause exponentially more database queries).
- your retrieved entities count. Some RenderTypes count toward your licensed entities limit.
Quick Decision Guide for Relations
First, decide where the relation should be rendered:
| Requirement | Use RenderTypes starting with... |
|---|---|
| Bulk export, optimized performance | Relation* |
| Single entity, self-contained JSON | Inline* |
Then, decide what data to render:
Relation* RenderTypes
These render in the relations section.
| Use Case | RenderType |
|---|---|
| Only need sys_id, no entity data | Relation SysId |
| Bulk export with full entity details (recommended) | Relation Reference |
| M-to-N relation, field value is what you need | Relation Literal |
| Human-readable display names (locale-dependent) | Relation Display Value |
Inline* RenderTypes
These render inline with the referencing entity and require Allow Inline Relations on the requested configuration.
| Use Case | RenderType |
|---|---|
| Self-contained JSON, only need sys_id | Inline SysId |
| Self-contained JSON with full entity details | Inline Reference |
| Single entity request, fully nested JSON | Inline Content |
| M-to-N relation, field value inline | Inline Literal |
| Human-readable display names inline (locale-dependent) | Inline Display Value |
For bulk data exports, prefer Relation Reference over any Inline*
RenderType.
Inline* RenderTypes cause additional SQL queries per entity and should be reserved for single-entity
requests.
Relation configurations define under what JSON property a relation should be rendered.
In the example below the caller is requesting the relation ci_to_user_group_minimal, but the relation data is rendered
as a JSON property user_groups. This name may even be dynamically determined based on the data of the relation.
See Relations for details.
Relation* vs Inline*
Relation* RenderTypes render the relation in the relations section of the returned JSON.
Inline* RenderTypes render the relation directly as property of the referencing entity.
Inline* RenderTypes are only permissible if the requested root configuration has Allow Inline Relations set.
{
...,
"data": [
{
...
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 12,
"sys_updated_on": "2024-07-17T10:54:43Z",
"user_groups": [ <= 'Inline*' RenderTypes render here
...
]
}
],
"relations": { <= 'Relation*' RenderTypes render here
"5f9b83bfc0a8010e005a2b3212c9dc07": {
"user_groups": [
...
]
}
},
...
}
Relation*
RenderTypes starting with Relation* will be rendered in the relation section of the returned JSON. This allows for
consolidated database queries and is generally more performant.
{
"metadata": {
...,
"config": "cmdb_ci_server_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_minimal": [ <= configuration the relations were requested for
"ci_to_user_group_minimal" <= requested relation
]
},
...
},
...,
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07", <= sys_id of requested server
"sys_mod_count": 12,
"sys_updated_on": "2024-07-17T10:54:43Z"
}
],
"relations": { <= relations section of returned JSON
"5f9b83bfc0a8010e005a2b3212c9dc07": { <= sys_id of requested server
"user_groups": [ <= relation name
{
"sys_id": "6577e5908f972410960c53ac37bdee66", <= sys_id of user group "Infrastructure"
"sys_class_name": "sys_user_group"
},
{
"sys_id": "b85d44954a3623120004689b2d5dd60a", <= sys_id of user group "CAB Approvers"
"sys_class_name": "sys_user_group"
}
]
}
},
"referenced": { <= referenced section of returned JSON
"6577e5908f972410960c53ac37bdee66": { <= sys_id of user group "Infrastructure"
"active": true,
"name": "Infrastructure",
"sys_created_by": "admin",
"sys_created_on": "2021-03-30T18:56:30Z",
"sys_id": "6577e5908f972410960c53ac37bdee66",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2021-03-30T18:56:30Z"
},
"b85d44954a3623120004689b2d5dd60a": { <= sys_id of user group "CAB Approvers"
"active": true,
"description": "CAB approvers",
"name": "CAB Approval",
"sys_created_by": "admin",
"sys_created_on": "2011-09-30T16:30:34Z",
"sys_id": "b85d44954a3623120004689b2d5dd60a",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2011-09-30T16:30:34Z",
"type": [
"itil"
]
}
}
}
Inline*
RenderTypes starting with Inline* will render the relation directly as property of the referencing entity. This
forces us to retrieve the referenced entity the moment we are rendering the referencing entity. This will result in a
potentially very high amount of database queries.
{
"metadata": {
...,
"config": "cmdb_ci_server_inline_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_inline_minimal": [ <= configuration the relations were requested for
"ci_to_user_group_inline" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 12,
"sys_updated_on": "2024-07-17T10:54:43Z",
"user_groups": [ <= relation name
{ <= content inlined
"active": true,
"name": "Infrastructure",
"sys_created_by": "admin",
"sys_created_on": "2021-03-30T18:56:30Z",
"sys_id": "6577e5908f972410960c53ac37bdee66",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2021-03-30T18:56:30Z"
},
{
"active": true,
"description": "CAB approvers",
"name": "CAB Approval",
"sys_created_by": "admin",
"sys_created_on": "2011-09-30T16:30:34Z",
"sys_id": "b85d44954a3623120004689b2d5dd60a",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2011-09-30T16:30:34Z",
"type": [
"itil"
]
}
]
}
],
"relations": {}, <= relations are empty in this case!
"referenced": {}
}
Relation SysId
Relation SysId is the equivalent to SysId for references.
Relation SysId will resolve the relation and render sys_id and sys_class_name in the relations section of the
returned JSON.
{
"metadata": {
...,
"config": "cmdb_ci_server_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_sys_id" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07", <= sys_id of requested server
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z"
}
],
"relations": { <= relations section of returned JSON
"5f9b83bfc0a8010e005a2b3212c9dc07": { <= sys_id of requested server
"user_groups": [ <= relation name
{
"sys_id": "6577e5908f972410960c53ac37bdee66", <= sys_id of user group
"sys_class_name": "sys_user_group"
},
{
"sys_id": "b85d44954a3623120004689b2d5dd60a", <= sys_id of user group
"sys_class_name": "sys_user_group"
}
]
}
},
"referenced": {} <= references are empty!
}
Nothing other than sys_id and sys_class_name, if applicable, are rendered.
Relation SysIddoes not require or support a targetConfiguration.Relation SysIdcauses no memory impact.Relation SysIdhas minimal database impact. (One additional SQL query per relation type requested.)Relation SysIdrelations do not count toward your licensed entities limit.
Relation Reference
Relation Reference renders a reference property exactly like Relation SysId, but will
additionally add the referenced entity at the end of the returned JSON in the referenced section.
Relation Reference is the most efficient way to render relations with the referenced entity.
{
"metadata": {
...,
"config": "cmdb_ci_server_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_minimal": [ <= configuration the relations were requested for
"ci_to_user_group" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07", <= sys_id of requested server
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z"
}
],
"relations": { <= relations section of returned JSON
"5f9b83bfc0a8010e005a2b3212c9dc07": { <= sys_id of requested server
"user_groups": [ <= relation name
{
"sys_id": "6577e5908f972410960c53ac37bdee66", <= sys_id of user group 1
"sys_class_name": "sys_user_group"
},
{
"sys_id": "b85d44954a3623120004689b2d5dd60a", <= sys_id of user group 2
"sys_class_name": "sys_user_group"
}
]
}
},
"referenced": {
"6577e5908f972410960c53ac37bdee66": { <= sys_id of user group 1
"active": true,
"name": "Infrastructure",
"sys_created_by": "admin",
"sys_created_on": "2021-03-30T18:56:30Z",
"sys_id": "6577e5908f972410960c53ac37bdee66",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2021-03-30T18:56:30Z"
},
"b85d44954a3623120004689b2d5dd60a": { <= sys_id of user group 2
"active": true,
"description": "CAB approvers",
"name": "CAB Approval",
"sys_created_by": "admin",
"sys_created_on": "2011-09-30T16:30:34Z",
"sys_id": "b85d44954a3623120004689b2d5dd60a",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2011-09-30T16:30:34Z",
"type": [
"itil"
]
}
}
}
Relation Referencerequires a targetConfiguration.Relation Referencecauses negligible memory load.Relation Referencehas a minimal database impact.- One additional SQL query per relation type requested.
- Potentially one additional SQL query per targetConfiguration. (References are resolved once per request, not per reference or relation.)
- Every resolution of a
Relation Referencecounts toward your licensed entities limit unless that entity was previously cached.
Relation Inline Content
Will be correctly supported in Release 1.2.0. Currently renders incorrectly as
Inline Content.
Relation Inline Content will render the relation in the relations section of the returned JSON and inline the
content of the referenced entity. Hence, the name Relation Inline Content as opposed to just Inline Content which
would also inline the relation itself.
Relation Literal
This RenderType only makes sense in an M-to-N Relation where the to column of the relation is something other than a
sys_id. Otherwise just use Relation SysId.
Vanilla ServiceNow does not have any use cases for this RenderType, but what do we know what customers might build?
From a purely data architectural perspective, returning the to column of an M-to-N table is valid use case.
We might expand this RenderType to support Relations as that would be valid from a
technical point of view, but only if and when customers present a real use case.
Give us a heads-up at Support if you think you need this.
Relation Literal will resolve the relation and render the literal value of the to field of the relation in the
relations section of the returned JSON.
{
"metadata": {
...,
"config": "cmdb_ci_server_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_relation_literal" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07", <= sys_id of the requested server
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z"
}
],
"relations": { <= relations section of returned JSON
"5f9b83bfc0a8010e005a2b3212c9dc07": { <= sys_id of requested server,
"user_groups": [ <= relation name
"6577e5908f972410960c53ac37bdee66", <= the value in the 'to' column of the relation
"b85d44954a3623120004689b2d5dd60a" <= the value in the 'to' column of the relation
]
}
},
"referenced": {}
}
Relation Literaldoes not require nor support a targetConfiguration.Relation Literalcauses no memory load.Relation Literalhas a minimal database impact. (One additional SQL query per relation type requested.)Relation Literalrelations do not count toward your licensed entities limit.
Relation Display Value
Relation Display Value will resolve the relation and render the display value of the referenced entity
in the relations section of the returned JSON.
As the returned values are potentially localized, this introduces a level of variance that is usually dangerous for technical integrations.
While there may be legitimate use cases for Display Value (see examples mention
in References Display Value), the rendered value can be dependent on
the locale of the caller. This might lead to unexpected results.
{
"metadata": {
...,
"config": "cmdb_ci_server_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_relation_display_value" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07", <= sys_id of the requested server
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z"
}
],
"relations": { <= relations section of returned JSON
"5f9b83bfc0a8010e005a2b3212c9dc07": { <= sys_id of requested server,
"user_groups": [ <= relation name
"Infrastructure", <= the display value of the user group
"CAB approvers" <= the display value of the user group
]
}
},
"referenced": {}
}
Relation Display Valuedoes not require nor support a targetConfiguration.Relation Display Valuecan have a noticeable impact on performance.Relation Display Valuemay cause substantial memory load, if a high variance of values is encountered as these values are cached.Relation Display Valuewill cause an additional SQL query for every entity rendered. (This only applies to the first retrieval of a Display Value, as they are cached.)Relation Display Valuerelations do not count toward your licensed entities limit.
Inline SysId
Inline SysId will resolve the relation and render sys_id and sys_class_name as a property referencing entity
inline in the returned JSON.
{
"metadata": {
...,
"config": "cmdb_ci_server_inline_minimal", <= requested configuration,
"requested_relations": { <= requested relations
"cmdb_ci_server_inline_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_inline_sys_id" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z",
"user_groups": [ <= relation name
{
"sys_id": "6577e5908f972410960c53ac37bdee66", <= sys_id of user group
"sys_class_name": "sys_user_group"
},
{
"sys_id": "b85d44954a3623120004689b2d5dd60a", <= sys_id of user group
"sys_class_name": "sys_user_group"
}
]
}
],
"relations": {}, <= relations remain empty
"referenced": {}
}
Inline SysIddoes not require nor support a targetConfiguration.Inline SysIdhas no memory impact.Inline SysIdwill cause an additional SQL query for every entity rendered.Inline SysIdis only permissible if the requested root configuration hasAllow Inline Relationsset.Inline SysIdrelations do not count toward your licensed entities limit.
Inline Reference
Inline Reference renders the relation exactly like Inline SysId, but will
additionally add the referenced entity at the end of the returned JSON in the referenced section.
{
"metadata": {
...,
"config": "cmdb_ci_server_inline_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_inline_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_inline_reference" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z",
"user_groups": [ <= relation name
{
"sys_id": "6577e5908f972410960c53ac37bdee66", <= sys_id of user group 1
"sys_class_name": "sys_user_group"
},
{
"sys_id": "b85d44954a3623120004689b2d5dd60a", <= sys_id of user group 2
"sys_class_name": "sys_user_group"
}
]
}
],
"relations": {}, <= relations remain empty
"referenced": {
"6577e5908f972410960c53ac37bdee66": { <= sys_id of user group 1
"active": true,
"name": "Infrastructure",
"sys_created_by": "admin",
"sys_created_on": "2021-03-30T18:56:30Z",
"sys_id": "6577e5908f972410960c53ac37bdee66",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2021-03-30T18:56:30Z"
},
"b85d44954a3623120004689b2d5dd60a": { <= sys_id of user group 2
"active": true,
"description": "CAB approvers",
"name": "CAB Approval",
"sys_created_by": "admin",
"sys_created_on": "2011-09-30T16:30:34Z",
"sys_id": "b85d44954a3623120004689b2d5dd60a",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2011-09-30T16:30:34Z",
"type": [
"itil"
]
}
}
}
Inline Referencerequires a targetConfiguration.Inline Referencecauses negligible memory load.Inline Referencewill cause additional SQL queries:- One additional SQL query per entity.
- Potentially one additional SQL query per targetConfiguration. (References are resolved once per request, not per reference or relation.)
Inline Referenceis only permissible if the requested root configuration hasAllow Inline Relationsset.- Every resolution of a
Inline Referencecounts toward your licensed entities limit unless that entity was previously cached.
Inline Content
Inline Content will resolve the relation and render the referenced entities inline.
Inline Content is the least efficient RenderType. Handle with caution!Inline Content forces Squid to resolve the relation for each and every entity with an extra SQL query and then resolve
the referenced entities with again additional SQL queries. As with Inline Content
for references this may cause an extreme amount of queries!
{
"metadata": {
...,
"config": "cmdb_ci_server_inline_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_inline_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_inline_content" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z",
"user_groups": [ <= relation name
{ <= inlined user group 'Infrastructure'
"active": true,
"name": "Infrastructure",
"sys_created_by": "admin",
"sys_created_on": "2021-03-30T18:56:30Z",
"sys_id": "6577e5908f972410960c53ac37bdee66",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2021-03-30T18:56:30Z"
},
{ <= inlined user group 'CAB Approval'
"active": true,
"description": "CAB approvers",
"name": "CAB Approval",
"sys_created_by": "admin",
"sys_created_on": "2011-09-30T16:30:34Z",
"sys_id": "b85d44954a3623120004689b2d5dd60a",
"sys_mod_count": 0,
"sys_updated_by": "admin",
"sys_updated_on": "2011-09-30T16:30:34Z",
"type": [
"itil"
]
}
]
}
],
"relations": {}, <= relations remain empty
"referenced": {} <= references remain empty
}
Inline Contentrequires a targetConfiguration.Inline Contentcauses negligible memory load.Inline Contentwill increase the amount of SQL queries exponentially.Inline Contentis only permissible if the requested root configuration hasAllow Inline Relationsset.- Every resolution of a
Inline Contentcounts toward your licensed entities limit unless that entity was previously cached.
Inline Literal
This RenderType only makes sense in an M-to-N Relation where the to column of the relation is something other than a
sys_id. Otherwise just use Inline SysId.
Vanilla ServiceNow does not have any use cases for this RenderType, but what do we know what customers might build?
From a purely data architectural perspective, returning the to column of an M-to-N table is valid use case.
We might expand this RenderType to support Relations as that would be valid from a
technical point of view, but only if and when customers present a real use case.
Give us a heads-up at Support if you think you need this.
Inline Literal will resolve the relation and render the literal value of the to field inline.
{
"metadata": {
...,
"config": "cmdb_ci_server_inline_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_inline_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_inline_literal" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z",
"user_groups": [ <= relation name
"6577e5908f972410960c53ac37bdee66", <= the value in the 'to' column of the relation
"b85d44954a3623120004689b2d5dd60a" <= the value in the 'to' column of the relation
]
}
],
"relations": {}, <= relations remain empty
"referenced": {} <= references remain empty
}
Inline Literaldoes not require nor support a targetConfiguration.Inline Literalcauses no memory load.Inline Literalwill cause one additional SQL per entity.Inline Literalis only permissible if the requested root configuration hasAllow Inline Relationsset.Inline Literalrelations do not count toward your licensed entities limit.
Inline Display Value
Inline Display Value will resolve the relation and render the display value of the referenced entity
inline.
As the returned values are potentially localized, this introduces a level of variance that is usually dangerous for technical integrations.
While there may be legitimate use cases for Display Value (see examples mention
in References Display Value), the rendered value can be dependent on
the locale of the caller. This might lead to unexpected results.
{
"metadata": {
...,
"config": "cmdb_ci_server_inline_minimal", <= requested configuration
"requested_relations": { <= requested relations
"cmdb_ci_server_inline_minimal": [ <= configuration the relations were requested for
"demo_ci_to_user_group_inline_display_value" <= requested relation
]
},
...
},
"data": [
{
"asset_tag": "P1000182",
"last_discovered": "2024-07-12T11:21:50Z",
"name": "dbaix901nyc",
"sys_class_name": "cmdb_ci_unix_server",
"sys_id": "5f9b83bfc0a8010e005a2b3212c9dc07",
"sys_mod_count": 22,
"sys_updated_on": "2025-12-24T13:57:32Z",
"user_groups": [ <= relation name
"Infrastructure", <= the display value of the user group
"CAB Approval" <= the display value of the user group
]
}
],
"relations": {}, <= relations remain empty
"referenced": {} <= references remain empty
}
Inline Display Valuedoes not require nor support a targetConfiguration.Inline Display Valuecauses no memory load.Inline Display Valuewill cause one additional SQL per entity.Inline Display Valueis only permissible if the requested root configuration hasAllow Inline Relationsset.Inline Display Valuerelations do not count toward your licensed entities limit.