--- title: Table API - ServiceNow Fluent description: The Table API defines tables \[sys\_db\_object\] to store data in an application.Create a table \[sys\_db\_object\] in an application.Add a column \[sys\_dictionary\] to a table.Configure choices \[sys\_choice\] for a column in a table.Configure a field label \[sys\_documentation\] for a table or column.Create a licensing configuration \[ua\_table\_licensing\_config\] to track subscription counts for a table.Configure auto-numbering \[sys\_number\] for a table. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/application-development/servicenow-sdk/table-api-now-ts.html release: australia product: ServiceNow SDK classification: servicenow-sdk topic_type: reference last_updated: "2026-03-12" reading_time_minutes: 18 breadcrumb: [ServiceNow Fluent API reference, Reference, ServiceNow SDK, Building applications in source code, Building pro-code applications, Developing your application, Building applications] --- # Table API - ServiceNow Fluent The Table API defines tables \[sys\_db\_object\] to store data in an application. **Note:** For the latest ServiceNow Fluent API documentation and examples, see the [ServiceNow Fluent API reference](https://servicenow.github.io/sdk/category/api-reference) and [ServiceNow SDK examples repository](https://github.com/ServiceNow/sdk-examples) on GitHub. Create a table using the Table object. From the schema property, add Column objects, such as StringColumn or IntegerColumn, to define the columns. For general information about tables, see [Table administration](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/c_TableAdministration.md). **Parent Topic:**[ServiceNow Fluent API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/servicenow-fluent-api-reference.md) **Related topics** [ServiceNow Fluent](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-fluent.md) ## Table object Create a table \[sys\_db\_object\] in an application.
| Name | Type | Description |
|---|---|---|
| name | String |
Required. A name for the table beginning with the application scope and in all lowercase letters in the following format: ` |
| schema | Array | Required. A list of Column objects. For more information, see [Column object](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/table-api-now-ts.md). |
| extends | String | The name of any other table on which the table is based.Extending a base table incorporates all the fields of the original table and creates system fields for the new table. If they are in the same scope or if they can be configured from other scopes, you can extend tables that are marked as extensible. |
| label | String or Array | A unique label for the table in list and form views. Field labels can be provided as a string or an array of label objects. For more information, see [label object](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/table-api-now-ts.md).Maximum length: 80 Default: the value of the name property |
| licensingConfig | Object | The licensing configuration \[ua\_table\_licensing\_config\] for a table. For more information, see [licensingConfig object](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/table-api-now-ts.md). |
| display | String | The default display column. Use a column name from the schema property. |
| extensible | Boolean | Flag that indicates whether other tables can extend the table.Valid values: - true: Other tables can extend the table. - false: Other tables can't extend the table. Changing this property from true to false prevents the creation of additional child tables but existing child tables remain unchanged. Default: false |
| liveFeed | Boolean | Flag that indicates if live feeds are available for records in the table.Valid values: - true: Live feeds are provided for records in the table. This option adds the **Show Live Feed** option \(\[Omitted image "LiveCompanyFeed.png"\] Alt text: Show Live Feed icon\) in the form header. - false: Live feeds aren't provided for records in the table. Default: false |
| accessibleFrom | String | The application scopes that can access the table.Valid values: - public: The table is accessible from all application scopes. - package\_private: The table is accessible from only the application scope it's in. Default: public |
| callerAccess | String | The access level for cross-scope requests.Valid values: - restricted: Calls to the resource must be manually approved. Access requests are tracked in the Restricted Caller Access table with a status of Requested. - tracking: Calls to the resource are automatically approved. Calls are tracked in the Restricted Caller Access table with a status of Allowed. - none: Cross-scope calls to the resource are approved or denied based on the value of the accessibleFrom property. For more information, see [Restricted caller access privilege settings](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/restricted-caller-access-privilege.md). Default: none |
| actions | Array | A list of access options.Valid values: - read: Allow script objects from other application scopes to read records stored in this table. For example, a script in another application can query data on this table. Read access is required to grant any other API record operations. - create: Allow script objects from other application scopes to create records in this table. For example, a script in another application can insert a new record in this table. - update: Allow script objects from other application scopes to modify records stored in this table. For example, a script in another application can modify a field value on this table. - delete: Allow script objects from other application scopes to delete records from this table. For example, a script in another application can remove a record from this table. Default: read |
| allowWebServiceAccess | Boolean | Flag that indicates whether web services can make calls to the table.Valid values: - true: Web services can make calls to the table. - false: Web services can't make calls to the table. Default: false |
| allowNewFields | Boolean | Flag that indicates whether to allow design time configuration of new fields on the table from other application scopes.Valid values: - true: Allow design time configuration of new fields on the table from other application scopes. - false: Don't allow design time configuration of new fields on the table from other application scopes. Default: false |
| allowUiActions | Boolean | Flag that indicates whether to allow design time configuration of UI actions on the table from other application scopes.Valid values: - true: Allow design time configuration of UI actions on the table from other application scopes. - false: Don't allow design time configuration of UI actions on the table from other application scopes. Default: false |
| allowClientScripts | Boolean | Flag that indicates whether to allow design time configuration of client scripts on the table from other application scopes.Valid values: - true: Allow design time configuration of client scripts on the table from other application scopes. - false: Don't allow design time configuration of client scripts on the table from other application scopes. Default: false |
| audit | Boolean | Flag that indicates whether to track the creation, update, and deletion of all records in the table.Valid values: - true: Track the creation, update, and deletion of all records in the table - false: Don't track the creation, update, and deletion of all records in the table. Default: false |
| readOnly | Boolean | Flag that indicates whether users can edit fields in the table.Valid values: - true: Users can't edit fields in the table. - false: Users can edit fields in the table. Default: false |
| textIndex | Boolean | Flag that indicates whether search engines index the text in a table.Valid values: - true: The table's text is indexed. - false: The table's text isn't indexed. Default: false |
| attributes | Object | Key and value pairs of any supported dictionary attributes \[sys\_schema\_attribute\]. For example:```javascript attributes: { updateSyncCustom: Boolean, nativeRecordLock: Boolean } ``` For more information, see [Dictionary Attributes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/c_DictionaryAttributes.md). |
| index | Array | A list of column references to generate indexes in the metadata XML of the table. The value of the element property should match the object key used with the Column object.A database index increases the speed of accessing data from the table with the expense of using additional storage. ```javascript index: [ { name: 'String', element: 'String', unique: Boolean }, ... ] ``` |
| autoNumber | Object | The auto-numbering configuration \[sys\_number\] for a table. For more information, see [autoNumber object](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/table-api-now-ts.md). |
| scriptableTable | Boolean | Flag that indicates whether the table is a remote table that uses data retrieved from an external source. For more information, see [Remote tables](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/servicenow-platform/remote-tables.md).Valid values: - true: The table is a remote table. - false: The table isn't a remote table. Default: false |
| Name | Type | Description |
|---|---|---|
| label | String or Array | A unique label for the column that appears on list headers and form fields. Field labels can be provided as a string or an array of label objects. For more information, see [label object](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/table-api-now-ts.md).Default: the key used for the column object |
| maxLength | Number | The maximum length of values in the column.A length of under 254 appears as a single-line text field. Anything 255 characters or over appears as a multi-line text box. **Note:** To avoid data loss, only decrease the length of a string field when you’re developing a new application and not when a field contains data. Default: varies depending on the column type |
| active | Boolean | Flag that indicates whether to display the field in lists and forms.Valid values: - true: Displays the field. - false: Hides the field. Default: true |
| mandatory | Boolean | Flag that indicates whether the field must contain a value to save a record.Valid values: - true: The field must contain a value. - false: The field isn't required. Default: false |
| readOnly | Boolean | Flag that indicates whether you can edit the field value.Valid values: - true: You can't change the value, and the system calculates and displays the data for the field. - false: You can change the field value. Default: false |
| readOnlyOption | String | Control the ability to edit read-only fields by configuring read-only options.Valid values: - instance\_configured: Maintains backwards compatibility and testing read-only behavior in non-production instances. - display\_read\_only: Displays the field as read-only in the UI, but allows changes to the read-only field through client scripts and server-side operations such as TableAPI, GraphQL, and GlideRecordSecure\(\). - client\_script\_modifiable: Displays the field as read-only in the UI, and allows changes to read-only fields through client scripts but not through background scripts or server-side APIs like TableAPI, GraphQL, and GlideRecordSecure\(\). - strict\_read\_only: Displays the field as read-only in the UI, but prevents any changes from both client scripts and server-side APIs. For more information, see [Configuring read-only security options](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/read-only-option.md). |
| default | Any | The default value of the field when creating a record. The value must use the correct type based on the column type. |
| choices | Object | A list of choices \[sys\_choice\] for a column. For more information, see [choices object](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/servicenow-sdk/table-api-now-ts.md). This property only applies to ChoiceColumn objects and column types that extend choice columns. It can include either an array of primitive values or a series of choice objects. |
| attributes | Object | Key and value pairs of any supported dictionary attributes \[sys\_schema\_attribute\]. For example:```javascript attributes: { updateSyncCustom: Boolean, nativeRecordLock: Boolean } ``` For more information, see [Dictionary Attributes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/c_DictionaryAttributes.md). |
| functionDefinition | String | The definition of a function that the field performs, such as a mathematical operation, field length computation, or day of the week calculation.Each definition begins with `glidefunction:`, followed by the operation to be performed \(such as, `concat`\), followed by function parameters. Constants must be enclosed in single quotes. For example, the following function definition creates a field that shows the short description, followed by a space, followed by the caller name: ```javascript functionDefinition: 'glidefunction:concat(short_description, ' ', caller_id.name)' ``` For more information about function definitions, see [Function field](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/platform-support-functions.md). |
| dynamicValueDefinitions | Object | Default values that are generated dynamically based on dynamic filters. Provide a combination of a type and a related behavior key to specify dynamic defaults. The following types are supported:- dynamic\_default: Provide a function from the Dynamic Filter Options \[sys\_filter\_option\_dynamic\] table. For more information, see [Create a dynamic filter option](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-user-interface/t_DynamicFilterOptions.md). For example: ```javascript dynamicValueDefinitions: { type: 'dynamic_default', dynamicDefault: `gs.info()`, }, ``` - dependent\_field: Provide another column name from the same table. For example: ```javascript dynamicValueDefinitions: { type: 'dependent_field', columnName: 'status', }, ``` - calculated\_value: Provide a function for calculating the value. The function can be imported from a JavaScript module or be defined inline. For example: ```javascript dynamicValueDefinitions: { type: 'calculated_value', calculatedValue: function, }, ``` - choices\_from\_other\_table: Provide choices from a column on another table. For example: ```javascript dynamicValueDefinitions: { type: 'choices_from_other_table', table: 'sc_cat_item', field: 'display', }, ``` |
| dropdown | String | An option for how a list of choices displays for list and form views of the table. This property only applies to ChoiceColumn objects and column types that extend choice columns.Valid values: - none: The choices aren't enforced. - dropdown\_without\_none: A menu without the **-- None --** option. If you select this option, you must configure the default property for the column. - dropdown\_with\_none: A menu with the **-- None --** option. The default value is **-- None --**. - suggestion: Choices are displayed in a list of suggested values. Default: none |
| Name | Type | Description |
|---|---|---|
| label | String | Required. The text to display for the choice in the list. |
| dependentValue | String | A value that you map to the dependentField in the dynamicValueDefinitions property of the Column object. |
| hint | String | A short description of the choice that displays as tooltip when hovering over it. |
| language | String | The [BCP 47](http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) code of the language for the translated choice.Default: en |
| sequence | Integer | The order in the list of choices that a choice occurs. |
| inactive | Boolean | Flag that indicates whether to show the choice in the list.Valid values: - true: The choice is hidden from the list. - false: The choice appears in the list. Default: false |
| Name | Type | Description |
|---|---|---|
| licenseModel | String | The model for tracking subscription usage.Valid values: - none: Licensing isn’t used for the table. - fulfiller: Fulfiller/requester operations are tracked. This model applies to applications in which users open requests and fulfillers address them. Fulfillment is determined by insert, update, and delete operations on records in one or more key tables in the application under a set of specified conditions. For more information, see [Fulfillment tables](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/application-development/r_FulfillmentTables.md). - producer: Producer operations are tracked. This model applies to applications in which users can perform insert, update, and delete operations on a table without identifying requesters and fulfillers. Default: none |
| licenseRoles | Array | A list of roles for which any operations on records in the table count toward the subscription. |
| opDelete | Boolean | Flag that indicates whether a subscription is required to delete records for tables with the producer model.Valid values: - true: A subscription is required to delete records in the table. - false: A subscription isn't required to delete records in the table. Default: true |
| opInsert | Boolean | Flag that indicates whether a subscription is required to insert records for tables with the producer model.Valid values: - true: A subscription is required to insert records in the table. - false: A subscription isn't required to insert records in the table. Default: true |
| opUpdate | Boolean | Flag that indicates whether a subscription is required to update records for tables with the producer model.- true: A subscription is required to update records in the table. - false: A subscription isn't required to update records in the table. Default: true |
| licenseCondition | String | A filter query that determines conditions for counting operations toward a subscription. For the fulfiller model, specify the set of conditions that determine whether the logged-in user is the fulfiller of the record. For the producer model, specify the set of conditions that determine whether records count toward the subscription. |
| ownerCondition | String | A filter query that determines whether a user owns a record for the fulfiller model. |
| isFulfillment | Boolean | Not used \(deprecated\). Flag that indicates whether to disallow updates by users who aren't subscribed to the application.Valid values: - true: Users who aren't subscribed to the application can't make updates to the table. - false: Users who aren't subscribed to the application can make updates to the table. Default: false |
| Name | Type | Description |
|---|---|---|
| prefix | String | A prefix for every record number in the table. For example, INC for Incident.Default: pre |
| number | Integer | The base record number for this table. Record numbers are automatically incremented, and the next number is maintained in the Counter \[sys\_number\_counter\] table.If you set the base number to a value higher than the current counter, the next record number uses the new base number. Otherwise the next record number uses the current counter. The counter doesn’t reset to a base number lower than itself. Default: 1000 |
| numberOfDigits | Integer | The minimum number of digits to use after the prefix.Leading zeros are added to auto-numbers, if necessary. For example, INC0001001 contains three leading zeros. The number of digits can exceed the minimum length. For example, if numberOfDigits is 2 and more than 99 records are created on the table, the numbers continue past 100 \(such as INC101\). **Warning:** Changing this field can update all number values for existing records on a table. Take care when changing this field on a production instance. Default: 7 |