- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2025 07:34 AM
I have retrieved the fields of the Contacts form (customer_contact) using the REST API. Below is the request and response below.
Request
{{instanceUrl}}/api/now/table/sys_ui_element?sysparm_query=sys_ui_section.view.name=ess&sys_ui_section.name=customer_contact&sysparm_fields=element
Response
{"result":[{"element":"preferred_language"},{"element":"email"},{"element":".begin_split"},{"element":"first_name"},{"element":"time_zone"},{"element":"phone"},{"element":"user_name"},{"element":"last_name"},{"element":".split"},{"element":"mobile_phone"},{"element":".end_split"},{"element":"title"},{"element":"account"},{"element":"notification"}]}
The response has 10 elements (excluding 4 split sections)
I want to get the attributes of these elements. Below is the API request and response.
Request
{{instanceUrl}}/api/now/table/sys_dictionary?sysparm_query=name=customer_contact&sysparm_fields=element,column_label
Response
{"result":[{"column_label":"Sys ID","element":"sys_id"},{"column_label":"","element":""},{"column_label":"Account","element":"account"}]}
I can get only 3 out of 10 elements, and only 1 of the 3 belongs to the result returned in the "sys_ui_element" response, i.e. "account".
How can I get all the customer_contact fields in "sys_dictionary" response? Or is there any other API/table I need to get this information from?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-09-2025 01:19 AM
No worries @sahilkhanna., glad I can help.
To answer your followup questions specifically.
There is an field/column against a table labelled 'Extends table' (Database name: 'super_class') which if populated indicates which table the current table is extended from.
Another pointer, specifically related with CSM (Customer Service Management) and other scoped applications, this is known as a scoped app and there is an available direct API's available for this table 'sn_customerservice'.
API endpoint: {instanceURL}/api/sn_customerservice/case
Re the mandatory fields on extended table. In ServiceNow threes a concept known as a 'Dictionary override' whereby for columns/fields which are inherited, you can override and control the behavior at the required table level. As you've described, it is possible to make fields mandatory on a child level which may not or are not mandatory on a parent level.
To help others (and for me to gain recognition for my efforts), please mark this response correct by clicking on Accept as Solution and/or Kudos.
Thanks, Robbie
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2025 10:47 AM
@Robbie. I understood what you said. I can now search for the missing fields in the "sys_user" table. Thank you.
{{instanceUrl}}/api/now/table/sys_dictionary?sysparm_query=name=sys_user^element=last_name&sysparm_fields=column_label,column_name,internal_type,mandatory,reference,max_length,attributes,choice,reference_key,use_reference_qualifier,default_value
I have two questions on this.
- Is there a way I can find (programmatically using the REST API) if "customer_contact" is extended/inherited from "sys_user"? I also plan to use other tables, e.g. "cn_customerservice_case", "sn_customerservice_entitlement", etc., that may extend some other tables.
- In the Contact (customer_contact) screen, I can see that "Last Name" and "Email" are mandatory fields, however, these fields are not mandatory in "sys_user". How do I deal with this? Am I invoking the API correctly?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-09-2025 01:19 AM
No worries @sahilkhanna., glad I can help.
To answer your followup questions specifically.
There is an field/column against a table labelled 'Extends table' (Database name: 'super_class') which if populated indicates which table the current table is extended from.
Another pointer, specifically related with CSM (Customer Service Management) and other scoped applications, this is known as a scoped app and there is an available direct API's available for this table 'sn_customerservice'.
API endpoint: {instanceURL}/api/sn_customerservice/case
Re the mandatory fields on extended table. In ServiceNow threes a concept known as a 'Dictionary override' whereby for columns/fields which are inherited, you can override and control the behavior at the required table level. As you've described, it is possible to make fields mandatory on a child level which may not or are not mandatory on a parent level.
To help others (and for me to gain recognition for my efforts), please mark this response correct by clicking on Accept as Solution and/or Kudos.
Thanks, Robbie
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-09-2025 08:31 AM
@Robbie, thank you for explaining it in detail. I can retrieve the missing fields as below.
- The "super_class" of the object should be traversed upwards until the "super_class" of the root object is empty.
- Search for the field attributes in all the "super_class" in the object parent tree.
I made use of the below APIs.
{{instanceUrl}}/api/now/table/sys_db_object?sysparm_query=name=customer_contact&sysparm_fields=super_class
{{instanceUrl}}/api/now/table/sys_db_object/{{super_class_id}}?sysparm_fields=name,label
I understand that the child object (contact in our case) can mark an inherited field (email) as mandatory. While I'm able to get this field from "sys_user", I'm not sure if I can know if it is mandatory for "customer_contact" (while it is optional for "sys_user"). Is there a way I can get this from the REST API?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-09-2025 09:07 AM - edited 01-09-2025 09:08 AM
Hi @sahilkhanna,
Glad I can help. Re how we can determine whether a field is mandatory via dictionary override via an API - hmmmm, let me think about that. I do love a brain teaser.
Whilst I think about that, can I please ask, so as to help others in the community and for me to gain recognition for my efforts, please can you Accept as Solution and/or Kudos for the original question.
Thanks, Robbie
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-10-2025 07:27 AM
@Robbie, I have accepted your answer. Please see if you can guide me on " how we can determine whether a field is mandatory via dictionary override via an API -" 😊