UNPKG

@servicenow/sdk

Version:
192 lines (143 loc) 6.12 kB
--- tags: [Table, table, database, schema, sys_db_object, data, column, field, extend, schema definition, sys_dictionary, sys_dictionary_override] --- # Table Defines a database table (`sys_db_object`) in a scoped application with typed column schemas, auto-numbering, access controls, and table inheritance. ## Signature ```typescript fluent Table(table) ``` ## Parameters ### table `T & Table<S, E>` **Properties:** - **name** (required unless `augments` is set): `string` Name of the table. Must be lowercase and include the application scope prefix. - **schema** (required): `Record<string, Column>` Array of column references that define the table's schema - **accessibleFrom** (optional): `'public' | 'package_private'` Application scopes that can access the table. - **actions** (optional): `('read' | 'update' | 'delete' | 'create')[]` List of access options for the table. - **allowClientScripts** (optional): `boolean` Indicates whether to allow design time configuration of client scripts on the table from other application scopes. - **allowNewFields** (optional): `boolean` Indicates whether to allow design time configuration of new fields on the table from other application scope. - **allowUiActions** (optional): `boolean` Indicates whether to allow design time configuration of UI Actions on the table from other application scopes. - **allowWebServiceAccess** (optional): `boolean` Indicates whether web services can make calls to the table. Defaults to `false`. Must be set to `true` for the table to be accessible via the Table API (`/api/now/table`) or other REST integrations -- otherwise requests return 403. - **attributes** (optional): `Record<string, string | number | boolean>` Pairs of any supported dictionary attributes (sys_schema_attribute). - **audit** (optional): `boolean` Indicates whether to track the creation, update, and deletion of all records in the table. - **augments** (optional): `string` The name of an existing table to augment (e.g. `'incident'`) to augment by adding columns. When set, only `schema` is configurable, all other table-level properties (`name`, `extends`, `label`, `display`, `audit`, etc.) are not permitted. Use this to extend platform or cross-scope tables. - **autoNumber** (optional): `object` Auto-increment configuration for the tables with a 'number' column. Do not use if table does not have (or inherit) a 'number' column. - **number**: `number` - **numberOfDigits**: `number` - **prefix**: `string` - **callerAccess** (optional): `'none' | 'tracking' | 'restricted'` Access level for cross-scope requests. - **display** (optional): `string` Default display column. Use a column name from the schema. - **extends** (optional): `keyof Tables` The name of any other table on which this table is based. - **extensible** (optional): `boolean` Indicates whether other tables can extend this table. - **index** (optional): `object[]` A list of column references to generate indexes in the metadata XML of the table. - **label** (optional): `string | Documentation[]` A unique label for the table on list and form views. - **licensingConfig** (optional): `LicensingConfig` Configuration for table licensing. - **liveFeed** (optional): `boolean` Indicates if live feeds are available for records in the table. - **readOnly** (optional): `boolean` Indicates whether users can edit fields in the table. - **scriptableTable** (optional): `boolean` Indicates whether the table is a remote table that uses data retrieved from an external source. - **textIndex** (optional): `boolean` Indicates whether search engines index the text in a table. ## See - https://docs.servicenow.com/csh?topicname=table-api-now-ts.html&version=latest ## Examples ### To-Do Table Example ```typescript fluent import { Table, StringColumn, DateColumn, IntegerColumn } from '@servicenow/sdk/core' // Variable name MUST match the name property export const x_snc_example_to_do = Table({ name: 'x_snc_example_to_do', label: 'My To Do Table', display: 'title', // Use the 'title' column as the display column schema: { title: StringColumn({ mandatory: true }), deadline: DateColumn({ label: 'Deadline' }), status: StringColumn({ label: 'Status', choices: { ready: 'Ready', in_progress: 'In Progress', completed: 'Completed', }, }), }, }) ``` ### Extending Task Example ```typescript fluent import { Table, StringColumn, DateColumn, IntegerColumn } from '@servicenow/sdk/core' // Variable name MUST match the name property export const x_snc_example_task = Table({ name: 'x_snc_example_color_task', label: 'My Color Task', extends: 'task', // Inherit columns from the 'task' table schema: { color: StringColumn({ label: 'Color', choices: { red: 'Red', blue: 'Blue', green: 'Green', }, }), }, // Configure auto-incrementation for the inherited 'number' column from the parent 'task' table (e.g. CLR0000001, CLR0000002, etc) autoNumber: { prefix: 'CLR', number: 2000, numberOfDigits: 7, }, }) ``` ### Override Inherited Columns ```typescript fluent /** * @title Override Inherited Columns * @description Examples of overriding inherited column properties in child tables */ import { Table, OverrideColumn, StringColumn, ReferenceColumn } from '@servicenow/sdk/core' // Example 2: Override multiple properties export const x_override_multiple = Table({ name: 'x_override_multiple', extends: 'task', schema: { priority: OverrideColumn({ baseTable: 'task', mandatory: true, default: '1', }), state: OverrideColumn({ baseTable: 'task', mandatory: true, readOnlyOption: 'display_read_only', }), description: OverrideColumn({ baseTable: 'task', display: false, }), }, }) ``` For guidance on table creation, column types, relationships, and common pitfalls, see the `table-guide` topic.