I am trying to use this API resource to create some CIs through a scripted REST endpoint, but there are two issues.
When I send CI properties for a firewall and one of its interfaces, both CIs are created, but the manufacturer field of the firewall is blank. ServiceNow responds (I also tried sending the sys_id of the "Cisco" entry from the core_company table):
"info": [
{
"code": "SKIPPED_SETTING_REFERENCE_FIELD",
"message": "Table does not have a display value column: [core_company]. Skipped setting the reference field: [class: cmdb_ci_ip_firewall] [field: manufacturer] [value: Cisco]"
}
]
The JSON payload looks like this:
[
{
"items": [
{
"className": "cmdb_ci_ip_firewall",
"values": {
"os_name": "Cisco Adaptive Security Appliance Version 9.8(4)29",
"host_name": "asa01",
"ip_address": "10.0.0.1",
"name": "asa01"
},
"display_values": {
"manufacturer": "b7e831bdc0a80169015ae101f3c4d6cd"
},
"internal_id": "314",
"sys_object_source_info": {
"source_recency_timestamp": "3/26/2023 2:35:17 PM",
"source_name": "My custom source"
}
},
{
"className": "cmdb_ci_ni_interface",
"values": {
"name": "id[06]",
"short_description": "Discovered by agent 20 via NSP collector",
"serial_number": "123456"
},
"internal_id": 18705013,
"sys_object_source_info": {
"source_recency_timestamp": "3/26/2023 2:35:17 PM",
"source_name": "My custom source"
}
}
]
}
]
Using that same JSON, but adding a relationship, I get back:
"errors": [
{
"error": "INVALID_INPUT_DATA",
"message": "Payload relations '{\"parent\":314,\"child\":18705013,\"type\":\"Owns::Owned by\",\"sys_rel_source_info\":{\"source_recency_timestamp\":\"3/26/2023 2:35:17 PM\",\"source_name\":\"My custom source\"}}' has invalid parent record index: [314]"
},
{
"error": "INVALID_INPUT_DATA",
"message": "Payload relations '{\"parent\":314,\"child\":18705013,\"type\":\"Owns::Owned by\",\"sys_rel_source_info\":{\"source_recency_timestamp\":\"3/26/2023 2:35:17 PM\",\"source_name\":\"My custom source\"}}' has invalid child record index: [18705013]"
}
]
With the relations node, the JSON looks like this:
[
{
"items": [
{
"className": "cmdb_ci_ip_firewall",
"values": {
"os_name": "Cisco Adaptive Security Appliance Version 9.8(4)29",
"host_name": "asa01",
"ip_address": "10.0.0.1",
"name": "asa01"
},
"display_values": {
"manufacturer": "b7e831bdc0a80169015ae101f3c4d6cd"
},
"internal_id": "314",
"sys_object_source_info": {
"source_recency_timestamp": "3/26/2023 2:35:17 PM",
"source_name": "My custom source"
}
},
{
"className": "cmdb_ci_ni_interface",
"values": {
"name": "id[06]",
"short_description": "Discovered by agent 20 via NSP collector",
"serial_number": "123456"
},
"internal_id": "18705013",
"sys_object_source_info": {
"source_recency_timestamp": "3/26/2023 2:35:17 PM",
"source_name": "My custom source"
}
}
],
"relations": [
{
"parent": "314",
"type": "Owns::Owned by",
"sys_rel_source_info": {
"source_recency_timestamp": "3/26/2023 2:35:17 PM",
"source_name": "My custom source"
},
"child": "18705013"
}
]
}
]
Can anyone provide insight into these issues? How should I be pass the manufacturer reference field value and what is wrong with the parent and child identifiers in my relationship? Where should those values come from?