UNPKG

@servicenow/sdk

Version:
263 lines (197 loc) 9.82 kB
--- tags: [ServicePortal, service portal, portal, sp_portal] --- # ServicePortal Creates a Service Portal — a self-service web experience for end users built with AngularJS and Bootstrap 3 (`sp_portal`). Portals aggregate pages, widgets, themes, knowledge bases, and service catalogs into a branded, responsive interface. ## Signature ```typescript fluent ServicePortal(config) ``` ## Parameters ### config `ServicePortal` **Properties:** - **$id** (required): `string | number | ExplicitKey<string>` - **title** (required): `string` Portal display name shown in the browser tab and portal header (required) - **urlSuffix** (required): `string` URL path suffix used to access the portal. For example, a value of `'esc'` makes the portal accessible at `/<instance>/esc`. Must be lowercase, may contain hyphens and underscores, and cannot start/end with an underscore. - **$meta** (optional): `object` - **installMethod**: `'first install' | 'demo' | 'once'` Map a record to an output folder that loads only in specific circumstances. 'first install' - > 'unload', 'demo' -> 'unload.demo' - **alternatePortal** (optional): `string | Record<'sp_portal'>` Portal to redirect users to when this portal is `inactive`. Only applies when `inactive` is `true`. - **catalog** (optional): `string | Record<'sc_catalog'>` Default service catalog for the portal. References a `sc_catalog` record. Deprecated — use `catalogs` (array) instead. `catalog` and `catalogs` are mutually exclusive. - **catalogHomePage** (optional): `string | SPPage | Record<'sp_page'>` Page displayed as the Service Catalog home/landing page. - **catalogs** (optional, default: []): `object[]` Ordered list of service catalogs (`sc_catalog`) available in the portal. Controls which catalogs appear in catalog browsing and ordering. `active` controls visibility. - **categoryHomePage** (optional): `string | SPPage | Record<'sp_page'>` Page displayed when browsing Service Catalog categories (`sc_category`). Typically the catalog category listing page. - **chatQueue** (optional): `string | Record<'chat_queue'>` Chat queue (`chat_queue`) used for Virtual Agent or live chat integration. When set, the portal header may display a chat launcher button. - **communicationChannels** (optional): `string[]` Array of sys_ids referencing communication channel records used for Virtual Agent or ITSM chat integration in this portal. - **cssVariables** (optional): `string` JSON string defining portal-level CSS custom properties (variables). These override theme variables and apply across all pages in the portal. - **darkTheme** (optional): `string | SPTheme | Record<'sp_theme'>` Dark mode theme applied when the user selects dark mode. References an `sp_theme` record. - **defaultPortal** (optional, default: false): `boolean` Makes this the default portal, used when navigating via `/?id=<pageId>` without an explicit portal suffix. - **embeddableMacroponents** (optional): `string[]` Array of sys_ids referencing Next Experience macroponent records (`sys_ux_macroponent`) that can be embedded within this portal. - **enableAiSearch** (optional, default: false): `boolean` Enables the AI-powered search experience (Unified Search / NLU). Requires a configured `searchApplication` and `searchResultsConfiguration`. - **enableCertificateBasedAuthentication** (optional, default: false): `boolean` Enables certificate-based authentication for portal access. When true, users must present a valid client certificate. - **enableFavorites** (optional, default: false): `boolean` Enables the Quick Start / Favorites panel, allowing users to pin frequently used catalog items, knowledge articles, and pages. - **enableWebEmbeddables** (optional, default: false): `boolean` Allows Next Experience web components (macroponents) to be embedded within Service Portal widgets and pages. - **hidePortalName** (optional, default: false): `boolean` Hides the portal title text in the header navigation bar. Useful when the logo already conveys the portal name. - **homePage** (optional): `string | SPPage | Record<'sp_page'>` Default landing page shown when a user navigates to the portal root URL. - **icon** (optional): `string` Browser favicon for the portal. Accepts a sys_id string of a `user_image` attachment. - **inactive** (optional, default: false): `boolean` Deactivates the portal, making it inaccessible to users. Users attempting to access it are redirected to `alternatePortal` if set. - **knowledgeBase** (optional): `string | Record<'kb_knowledge_base'>` Default knowledge base for knowledge search and filtering. References a `kb_knowledge_base` record. Deprecated — use `knowledgeBases` (array) instead. `knowledgeBase` and `knowledgeBases` are mutually exclusive. - **knowledgeBases** (optional, default: []): `object[]` Ordered list of knowledge bases (`kb_knowledge_base`) available in the portal. Used to scope KB search and article browsing. `active` controls visibility. - **knowledgeHomePage** (optional): `string | Record<'sp_page'>` Page displayed as the Knowledge Management home/landing page. - **loginPage** (optional): `string | SPPage | Record<'sp_page'>` Page shown to unauthenticated users instead of the requested page. - **logo** (optional): `string` Logo image displayed in the portal header. Accepts a sys_id string of a `user_image` attachment or a `Now.attach()` reference. - **logoAltText** (optional): `string` Accessible alt text for the logo image, used by screen readers. - **mainMenu** (optional): `string | Record<'sp_instance_menu'> | SPMenu` Navigation menu rendered in the portal header. References an `sp_instance_menu` record. - **notFoundPage** (optional): `string | SPPage | Record<'sp_page'>` Page rendered when a route cannot be matched (HTTP 404 equivalent). - **quickStartConfig** (optional): `string` JSON string configuring the Quick Start / Favorites feature appearance. Controls favorite icon styles (e.g. checked/unchecked icon names and colors). - **searchApplication** (optional): `string | Record<'sys_search_application'>` Search application (`sys_search_application`) that defines which content sources (tables, KB, catalog) are included in portal search. - **searchResultsConfiguration** (optional): `string | Record<'sys_ux_composite_definition'>` Unified Search composite definition (`sys_ux_composite_definition`) that controls how search results are rendered. Used when AI Search or Unified Search is enabled. - **searchSources** (optional, default: []): `object[]` Ordered list of search sources (`sp_search_source`) available in portal search. Each entry's `order` controls its position in search result grouping. - **supportRightToLeftLanguages** (optional, default: false): `boolean` Enables right-to-left (RTL) text layout for languages such as Arabic and Hebrew. When true, the portal layout mirrors horizontally. - **taxonomies** (optional, default: []): `object[]` Ordered list of taxonomy entries for portal navigation and content classification. `active` controls whether the taxonomy is visible to portal users. - **textIndexGroup** (optional): `string | Record<'ts_index_group'>` Full-text search index group (`ts_index_group`) used to scope portal search to specific content. Controls what text is indexed and searched. - **theme** (optional): `string | SPTheme | Record<'sp_theme'>` Light mode theme applied to all pages in the portal. References an `sp_theme` record. ## Examples ### service-portal-basic ```typescript fluent // Source: packages/api/tests/service-portal/portal-plugin.test.ts import { ServicePortal } from '@servicenow/sdk/core' export const BasicPortalExample = ServicePortal({ $id: Now.ID['test-portal'], title: 'Employee Center', urlSuffix: 'esc', }) ``` ### service-portal-with-catalogs ```typescript fluent // Source: packages/api/tests/service-portal/portal-plugin.test.ts import { ServicePortal } from '@servicenow/sdk/core' export const PortalWithCatalogsExample = ServicePortal({ $id: Now.ID['test-portal-m2m'], title: 'Employee Center', urlSuffix: 'esc', logo: 'a99f9564ff212210a6f3ffffffffff74', theme: 'ee2e485f9c0b5250f877097911a1a148', homePage: '0987d9aa53331210b8f2ddeeff7b129d', enableAiSearch: true, defaultPortal: true, enableFavorites: true, taxonomies: [ { taxonomy: '1f5d5a40c3203010069aec4b7d40dd93', order: 100, active: true, }, ], knowledgeBases: [ { knowledgeBase: 'kb123', order: 100, active: true, }, ], catalogs: [ { catalog: 'cat123', order: 100, active: true, }, ], searchSources: [ { searchSource: 'search123', order: 100, }, ], }) ``` ### service-portal-with-pages ```typescript fluent // Source: packages/api/tests/service-portal/portal-plugin.test.ts import { ServicePortal } from '@servicenow/sdk/core' export const PortalWithPagesExample = ServicePortal({ $id: Now.ID['employee-center'], title: 'Employee Center', urlSuffix: 'esc', logo: 'a99f9564ff212210a6f3ffffffffff74', theme: 'ee2e485f9c0b5250f877097911a1a148', mainMenu: '493d01365368301056c1ddeeff7b1207', homePage: '0987d9aa53331210b8f2ddeeff7b129d', loginPage: '6995a144cb11120000f8d856634c9c25', notFoundPage: '3c2c9063cb11020000f8d856634c9c1f', catalogHomePage: 'c221e520b7602300d0ac9277ee11a960', knowledgeHomePage: 'f8b574a0b7202300d0ac9277ee11a91d', enableAiSearch: true, defaultPortal: true, enableFavorites: true, }) ```