@sonisoft/now-sdk-ext-core 3.0.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,316 @@
1
+ import { Logger } from "../../util/Logger.js";
2
+ import { ServiceNowRequest } from "../../comm/http/ServiceNowRequest.js";
3
+ import { TableAPIRequest } from "../../comm/http/TableAPIRequest.js";
4
+ import { AggregateQuery } from "../aggregate/AggregateQuery.js";
5
+ /**
6
+ * Provides operations for managing ServiceNow Knowledge Base articles,
7
+ * knowledge bases, and categories via the Table API and Stats API.
8
+ */
9
+ export class KnowledgeManager {
10
+ static KB_BASE_TABLE = 'kb_knowledge_base';
11
+ static KB_CATEGORY_TABLE = 'kb_category';
12
+ static KB_KNOWLEDGE_TABLE = 'kb_knowledge';
13
+ /** Fields to return in list operations (excludes large body fields) */
14
+ static ARTICLE_LIST_FIELDS = 'sys_id,number,short_description,kb_knowledge_base,kb_category,workflow_state,' +
15
+ 'author,article_type,published,active,sys_view_count,sys_created_on,sys_updated_on';
16
+ _logger = new Logger("KnowledgeManager");
17
+ _req;
18
+ _tableAPI;
19
+ _aggregateQuery;
20
+ _instance;
21
+ constructor(instance) {
22
+ this._instance = instance;
23
+ this._req = new ServiceNowRequest(instance);
24
+ this._tableAPI = new TableAPIRequest(instance);
25
+ this._aggregateQuery = new AggregateQuery(instance);
26
+ }
27
+ /**
28
+ * List knowledge bases with optional filtering and pagination.
29
+ *
30
+ * @param options Filtering and pagination options
31
+ * @returns Array of knowledge base records
32
+ * @throws Error if the API call fails
33
+ */
34
+ async listKnowledgeBases(options = {}) {
35
+ const { query, active, limit = 20, offset = 0 } = options;
36
+ this._logger.info('Listing knowledge bases');
37
+ const queryParts = [];
38
+ if (active !== undefined)
39
+ queryParts.push(`active=${active}`);
40
+ if (query)
41
+ queryParts.push(query);
42
+ const params = {
43
+ sysparm_limit: limit,
44
+ sysparm_offset: offset
45
+ };
46
+ if (queryParts.length > 0) {
47
+ params.sysparm_query = queryParts.join('^');
48
+ }
49
+ const response = await this._tableAPI.get(KnowledgeManager.KB_BASE_TABLE, params);
50
+ if (response && response.status === 200 && response.bodyObject?.result) {
51
+ this._logger.info(`Retrieved ${response.bodyObject.result.length} knowledge bases`);
52
+ return response.bodyObject.result;
53
+ }
54
+ throw new Error(`Failed to list knowledge bases. Status: ${response?.status ?? 'unknown'}`);
55
+ }
56
+ /**
57
+ * Get details of a specific knowledge base including article and category counts.
58
+ *
59
+ * @param sysId The sys_id of the knowledge base
60
+ * @returns Knowledge base detail with article and category counts
61
+ * @throws Error if the sys_id is empty, the KB is not found, or the API call fails
62
+ */
63
+ async getKnowledgeBase(sysId) {
64
+ if (!sysId || sysId.trim().length === 0) {
65
+ throw new Error('Knowledge base sys_id is required');
66
+ }
67
+ this._logger.info(`Getting knowledge base: ${sysId}`);
68
+ const query = {
69
+ sysparm_query: `sys_id=${sysId}`,
70
+ sysparm_limit: 1
71
+ };
72
+ const response = await this._tableAPI.get(KnowledgeManager.KB_BASE_TABLE, query);
73
+ if (!response || response.status !== 200 || !response.bodyObject?.result ||
74
+ response.bodyObject.result.length === 0) {
75
+ throw new Error(`Knowledge base '${sysId}' not found. Status: ${response?.status ?? 'unknown'}`);
76
+ }
77
+ const knowledgeBase = response.bodyObject.result[0];
78
+ // Get article and category counts in parallel
79
+ const [articleCount, categoryCount] = await Promise.all([
80
+ this._aggregateQuery.count({
81
+ table: KnowledgeManager.KB_KNOWLEDGE_TABLE,
82
+ query: `kb_knowledge_base=${sysId}`
83
+ }),
84
+ this._aggregateQuery.count({
85
+ table: KnowledgeManager.KB_CATEGORY_TABLE,
86
+ query: `value=${sysId}`
87
+ })
88
+ ]);
89
+ this._logger.info(`Knowledge base '${knowledgeBase.title}': ${articleCount} articles, ${categoryCount} categories`);
90
+ return { knowledgeBase, articleCount, categoryCount };
91
+ }
92
+ /**
93
+ * List categories within a knowledge base with optional filtering.
94
+ *
95
+ * @param options Filtering and pagination options
96
+ * @returns Array of category records
97
+ * @throws Error if the API call fails
98
+ */
99
+ async listCategories(options = {}) {
100
+ const { knowledgeBaseSysId, parentCategory, query, active, limit = 20, offset = 0 } = options;
101
+ this._logger.info('Listing categories');
102
+ const queryParts = [];
103
+ if (knowledgeBaseSysId)
104
+ queryParts.push(`value=${knowledgeBaseSysId}`);
105
+ if (parentCategory)
106
+ queryParts.push(`parent_id=${parentCategory}`);
107
+ if (active !== undefined)
108
+ queryParts.push(`active=${active}`);
109
+ if (query)
110
+ queryParts.push(query);
111
+ const params = {
112
+ sysparm_limit: limit,
113
+ sysparm_offset: offset
114
+ };
115
+ if (queryParts.length > 0) {
116
+ params.sysparm_query = queryParts.join('^');
117
+ }
118
+ const response = await this._tableAPI.get(KnowledgeManager.KB_CATEGORY_TABLE, params);
119
+ if (response && response.status === 200 && response.bodyObject?.result) {
120
+ this._logger.info(`Retrieved ${response.bodyObject.result.length} categories`);
121
+ return response.bodyObject.result;
122
+ }
123
+ throw new Error(`Failed to list categories. Status: ${response?.status ?? 'unknown'}`);
124
+ }
125
+ /**
126
+ * Create a new knowledge base category.
127
+ *
128
+ * @param options Category creation options
129
+ * @returns The created category record
130
+ * @throws Error if required fields are missing or the API call fails
131
+ */
132
+ async createCategory(options) {
133
+ if (!options.label || options.label.trim().length === 0) {
134
+ throw new Error('Category label is required');
135
+ }
136
+ if (!options.knowledgeBaseSysId || options.knowledgeBaseSysId.trim().length === 0) {
137
+ throw new Error('Knowledge base sys_id is required');
138
+ }
139
+ this._logger.info(`Creating category: ${options.label}`);
140
+ const body = {
141
+ label: options.label,
142
+ value: options.knowledgeBaseSysId
143
+ };
144
+ if (options.parentCategory) {
145
+ body.parent_id = options.parentCategory;
146
+ }
147
+ if (options.active !== undefined) {
148
+ body.active = String(options.active);
149
+ }
150
+ const response = await this._tableAPI.post(KnowledgeManager.KB_CATEGORY_TABLE, {}, body);
151
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result) {
152
+ this._logger.info(`Created category: ${options.label} (${response.bodyObject.result.sys_id})`);
153
+ return response.bodyObject.result;
154
+ }
155
+ throw new Error(`Failed to create category '${options.label}'. Status: ${response?.status ?? 'unknown'}`);
156
+ }
157
+ /**
158
+ * List knowledge articles with filtering by KB, category, workflow state, and text search.
159
+ * Returns article summaries (without large body fields) for efficiency.
160
+ *
161
+ * @param options Filtering and pagination options
162
+ * @returns Array of article summaries
163
+ * @throws Error if the API call fails
164
+ */
165
+ async listArticles(options = {}) {
166
+ const { knowledgeBaseSysId, categorySysId, workflowState, textSearch, query, limit = 20, offset = 0 } = options;
167
+ this._logger.info('Listing articles');
168
+ const queryParts = [];
169
+ if (knowledgeBaseSysId)
170
+ queryParts.push(`kb_knowledge_base=${knowledgeBaseSysId}`);
171
+ if (categorySysId)
172
+ queryParts.push(`kb_category=${categorySysId}`);
173
+ if (workflowState)
174
+ queryParts.push(`workflow_state=${workflowState}`);
175
+ if (textSearch)
176
+ queryParts.push(`short_descriptionLIKE${textSearch}`);
177
+ if (query)
178
+ queryParts.push(query);
179
+ const params = {
180
+ sysparm_limit: limit,
181
+ sysparm_offset: offset,
182
+ sysparm_fields: KnowledgeManager.ARTICLE_LIST_FIELDS
183
+ };
184
+ if (queryParts.length > 0) {
185
+ params.sysparm_query = queryParts.join('^');
186
+ }
187
+ const response = await this._tableAPI.get(KnowledgeManager.KB_KNOWLEDGE_TABLE, params);
188
+ if (response && response.status === 200 && response.bodyObject?.result) {
189
+ this._logger.info(`Retrieved ${response.bodyObject.result.length} articles`);
190
+ return response.bodyObject.result;
191
+ }
192
+ throw new Error(`Failed to list articles. Status: ${response?.status ?? 'unknown'}`);
193
+ }
194
+ /**
195
+ * Get full article content including body text.
196
+ *
197
+ * @param sysId The sys_id of the article
198
+ * @returns The full article record
199
+ * @throws Error if the sys_id is empty, the article is not found, or the API call fails
200
+ */
201
+ async getArticle(sysId) {
202
+ if (!sysId || sysId.trim().length === 0) {
203
+ throw new Error('Article sys_id is required');
204
+ }
205
+ this._logger.info(`Getting article: ${sysId}`);
206
+ const query = {
207
+ sysparm_query: `sys_id=${sysId}`,
208
+ sysparm_limit: 1
209
+ };
210
+ const response = await this._tableAPI.get(KnowledgeManager.KB_KNOWLEDGE_TABLE, query);
211
+ if (response && response.status === 200 && response.bodyObject?.result) {
212
+ if (response.bodyObject.result.length > 0) {
213
+ this._logger.info(`Found article: ${response.bodyObject.result[0].short_description}`);
214
+ return response.bodyObject.result[0];
215
+ }
216
+ throw new Error(`Article '${sysId}' not found`);
217
+ }
218
+ throw new Error(`Failed to get article '${sysId}'. Status: ${response?.status ?? 'unknown'}`);
219
+ }
220
+ /**
221
+ * Create a new knowledge article.
222
+ *
223
+ * @param options Article creation options
224
+ * @returns The created article record
225
+ * @throws Error if required fields are missing or the API call fails
226
+ */
227
+ async createArticle(options) {
228
+ if (!options.shortDescription || options.shortDescription.trim().length === 0) {
229
+ throw new Error('Article short description is required');
230
+ }
231
+ if (!options.knowledgeBaseSysId || options.knowledgeBaseSysId.trim().length === 0) {
232
+ throw new Error('Knowledge base sys_id is required');
233
+ }
234
+ this._logger.info(`Creating article: ${options.shortDescription}`);
235
+ const body = {
236
+ short_description: options.shortDescription,
237
+ kb_knowledge_base: options.knowledgeBaseSysId,
238
+ workflow_state: options.workflowState || 'draft'
239
+ };
240
+ if (options.text)
241
+ body.text = options.text;
242
+ if (options.wiki)
243
+ body.wiki = options.wiki;
244
+ if (options.categorySysId)
245
+ body.kb_category = options.categorySysId;
246
+ if (options.articleType)
247
+ body.article_type = options.articleType;
248
+ if (options.additionalFields) {
249
+ Object.assign(body, options.additionalFields);
250
+ }
251
+ const response = await this._tableAPI.post(KnowledgeManager.KB_KNOWLEDGE_TABLE, {}, body);
252
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result) {
253
+ this._logger.info(`Created article: ${options.shortDescription} (${response.bodyObject.result.sys_id})`);
254
+ return response.bodyObject.result;
255
+ }
256
+ throw new Error(`Failed to create article. Status: ${response?.status ?? 'unknown'}`);
257
+ }
258
+ /**
259
+ * Update an existing knowledge article.
260
+ *
261
+ * @param sysId The sys_id of the article to update
262
+ * @param options Fields to update
263
+ * @returns The updated article record
264
+ * @throws Error if the sys_id is empty, no fields are provided, or the API call fails
265
+ */
266
+ async updateArticle(sysId, options) {
267
+ if (!sysId || sysId.trim().length === 0) {
268
+ throw new Error('Article sys_id is required');
269
+ }
270
+ this._logger.info(`Updating article: ${sysId}`);
271
+ const body = {};
272
+ if (options.shortDescription !== undefined)
273
+ body.short_description = options.shortDescription;
274
+ if (options.text !== undefined)
275
+ body.text = options.text;
276
+ if (options.wiki !== undefined)
277
+ body.wiki = options.wiki;
278
+ if (options.knowledgeBaseSysId !== undefined)
279
+ body.kb_knowledge_base = options.knowledgeBaseSysId;
280
+ if (options.categorySysId !== undefined)
281
+ body.kb_category = options.categorySysId;
282
+ if (options.workflowState !== undefined)
283
+ body.workflow_state = options.workflowState;
284
+ if (options.articleType !== undefined)
285
+ body.article_type = options.articleType;
286
+ if (options.active !== undefined)
287
+ body.active = String(options.active);
288
+ if (options.additionalFields) {
289
+ Object.assign(body, options.additionalFields);
290
+ }
291
+ if (Object.keys(body).length === 0) {
292
+ throw new Error('At least one field must be provided for update');
293
+ }
294
+ const response = await this._tableAPI.put(KnowledgeManager.KB_KNOWLEDGE_TABLE, sysId, body);
295
+ if (response && response.status === 200 && response.bodyObject?.result) {
296
+ this._logger.info(`Updated article: ${sysId}`);
297
+ return response.bodyObject.result;
298
+ }
299
+ throw new Error(`Failed to update article '${sysId}'. Status: ${response?.status ?? 'unknown'}`);
300
+ }
301
+ /**
302
+ * Publish a draft article by setting its workflow_state to "published".
303
+ *
304
+ * @param sysId The sys_id of the article to publish
305
+ * @returns The updated article record
306
+ * @throws Error if the sys_id is empty or the API call fails
307
+ */
308
+ async publishArticle(sysId) {
309
+ if (!sysId || sysId.trim().length === 0) {
310
+ throw new Error('Article sys_id is required');
311
+ }
312
+ this._logger.info(`Publishing article: ${sysId}`);
313
+ return this.updateArticle(sysId, { workflowState: 'published' });
314
+ }
315
+ }
316
+ //# sourceMappingURL=KnowledgeManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnowledgeManager.js","sourceRoot":"","sources":["../../../src/sn/knowledge/KnowledgeManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Models for Knowledge Base management operations against ServiceNow tables:
3
+ * kb_knowledge_base, kb_category, and kb_knowledge.
4
+ */
5
+ /**
6
+ * A knowledge base record from the kb_knowledge_base table.
7
+ */
8
+ export interface KnowledgeBaseRecord {
9
+ sys_id: string;
10
+ title: string;
11
+ description?: string;
12
+ owner?: string;
13
+ active?: string;
14
+ kb_version?: string;
15
+ application?: string;
16
+ kb_managers?: string;
17
+ sys_created_on?: string;
18
+ sys_updated_on?: string;
19
+ sys_created_by?: string;
20
+ sys_updated_by?: string;
21
+ [key: string]: unknown;
22
+ }
23
+ /**
24
+ * A knowledge category record from the kb_category table.
25
+ * Note: kb_category uses "label" (not "title") and "value" for the KB reference.
26
+ */
27
+ export interface KnowledgeCategoryRecord {
28
+ sys_id: string;
29
+ /** Category display name */
30
+ label: string;
31
+ /** Knowledge base sys_id reference */
32
+ value: string;
33
+ /** Parent category sys_id */
34
+ parent_id?: string;
35
+ /** Full category path */
36
+ full_category?: string;
37
+ active?: string;
38
+ sys_created_on?: string;
39
+ sys_updated_on?: string;
40
+ sys_created_by?: string;
41
+ sys_updated_by?: string;
42
+ [key: string]: unknown;
43
+ }
44
+ /**
45
+ * A full knowledge article record from the kb_knowledge table,
46
+ * including body content fields (text, wiki).
47
+ */
48
+ export interface KnowledgeArticleRecord {
49
+ sys_id: string;
50
+ number?: string;
51
+ short_description: string;
52
+ /** Article body in HTML */
53
+ text?: string;
54
+ /** Article body in wiki markup */
55
+ wiki?: string;
56
+ description?: string;
57
+ /** Reference to kb_knowledge_base */
58
+ kb_knowledge_base: string;
59
+ /** Reference to kb_category */
60
+ kb_category?: string;
61
+ category?: string;
62
+ workflow_state?: string;
63
+ author?: string;
64
+ article_type?: string;
65
+ published?: string;
66
+ active?: string;
67
+ valid_to?: string;
68
+ version?: string;
69
+ display_number?: string;
70
+ meta_description?: string;
71
+ keywords?: string;
72
+ sys_view_count?: string;
73
+ use_count?: string;
74
+ rating?: string;
75
+ sys_created_on?: string;
76
+ sys_updated_on?: string;
77
+ sys_created_by?: string;
78
+ sys_updated_by?: string;
79
+ [key: string]: unknown;
80
+ }
81
+ /**
82
+ * A lightweight article summary for list operations (excludes large body fields).
83
+ */
84
+ export interface KnowledgeArticleSummary {
85
+ sys_id: string;
86
+ number?: string;
87
+ short_description: string;
88
+ kb_knowledge_base: string;
89
+ kb_category?: string;
90
+ workflow_state?: string;
91
+ author?: string;
92
+ article_type?: string;
93
+ published?: string;
94
+ active?: string;
95
+ sys_view_count?: string;
96
+ sys_created_on?: string;
97
+ sys_updated_on?: string;
98
+ [key: string]: unknown;
99
+ }
100
+ /**
101
+ * Options for listing knowledge bases.
102
+ */
103
+ export interface ListKnowledgeBasesOptions {
104
+ /** Encoded query string for filtering */
105
+ query?: string;
106
+ /** Filter by active status */
107
+ active?: boolean;
108
+ /** Maximum number of records to return (default 20) */
109
+ limit?: number;
110
+ /** Offset for pagination (default 0) */
111
+ offset?: number;
112
+ }
113
+ /**
114
+ * Options for listing knowledge categories.
115
+ */
116
+ export interface ListCategoriesOptions {
117
+ /** Filter by knowledge base sys_id (kb_category.value field) */
118
+ knowledgeBaseSysId?: string;
119
+ /** Filter by parent category sys_id */
120
+ parentCategory?: string;
121
+ /** Encoded query string for additional filtering */
122
+ query?: string;
123
+ /** Filter by active status */
124
+ active?: boolean;
125
+ /** Maximum number of records (default 20) */
126
+ limit?: number;
127
+ /** Offset for pagination (default 0) */
128
+ offset?: number;
129
+ }
130
+ /**
131
+ * Options for creating a knowledge category.
132
+ */
133
+ export interface CreateCategoryOptions {
134
+ /** Category label (display name) */
135
+ label: string;
136
+ /** Knowledge base sys_id (stored in kb_category.value) */
137
+ knowledgeBaseSysId: string;
138
+ /** Parent category sys_id (stored in kb_category.parent_id) */
139
+ parentCategory?: string;
140
+ /** Whether the category is active (default true) */
141
+ active?: boolean;
142
+ }
143
+ /**
144
+ * Options for listing knowledge articles.
145
+ */
146
+ export interface ListArticlesOptions {
147
+ /** Filter by knowledge base sys_id */
148
+ knowledgeBaseSysId?: string;
149
+ /** Filter by category sys_id */
150
+ categorySysId?: string;
151
+ /** Filter by workflow state (e.g. "published", "draft", "retired") */
152
+ workflowState?: string;
153
+ /** Text search term (searches short_description) */
154
+ textSearch?: string;
155
+ /** Encoded query string for additional filtering */
156
+ query?: string;
157
+ /** Maximum number of records (default 20) */
158
+ limit?: number;
159
+ /** Offset for pagination (default 0) */
160
+ offset?: number;
161
+ }
162
+ /**
163
+ * Options for creating a knowledge article.
164
+ */
165
+ export interface CreateArticleOptions {
166
+ /** Article short description / title */
167
+ shortDescription: string;
168
+ /** Article body in HTML */
169
+ text?: string;
170
+ /** Article body in wiki markup */
171
+ wiki?: string;
172
+ /** Knowledge base sys_id */
173
+ knowledgeBaseSysId: string;
174
+ /** Category sys_id */
175
+ categorySysId?: string;
176
+ /** Workflow state (default "draft") */
177
+ workflowState?: string;
178
+ /** Article type */
179
+ articleType?: string;
180
+ /** Additional fields to set on the record */
181
+ additionalFields?: Record<string, string>;
182
+ }
183
+ /**
184
+ * Options for updating a knowledge article.
185
+ */
186
+ export interface UpdateArticleOptions {
187
+ /** Updated short description */
188
+ shortDescription?: string;
189
+ /** Updated article body in HTML */
190
+ text?: string;
191
+ /** Updated article body in wiki markup */
192
+ wiki?: string;
193
+ /** Updated knowledge base sys_id */
194
+ knowledgeBaseSysId?: string;
195
+ /** Updated category sys_id */
196
+ categorySysId?: string;
197
+ /** Updated workflow state */
198
+ workflowState?: string;
199
+ /** Updated article type */
200
+ articleType?: string;
201
+ /** Updated active status */
202
+ active?: boolean;
203
+ /** Additional fields to update */
204
+ additionalFields?: Record<string, string>;
205
+ }
206
+ /**
207
+ * Enriched knowledge base detail including article and category counts.
208
+ */
209
+ export interface KnowledgeBaseDetail {
210
+ knowledgeBase: KnowledgeBaseRecord;
211
+ articleCount: number;
212
+ categoryCount: number;
213
+ }
214
+ export interface KnowledgeBaseResponse {
215
+ result: KnowledgeBaseRecord[];
216
+ }
217
+ export interface KnowledgeBaseSingleResponse {
218
+ result: KnowledgeBaseRecord;
219
+ }
220
+ export interface KnowledgeCategoryResponse {
221
+ result: KnowledgeCategoryRecord[];
222
+ }
223
+ export interface KnowledgeCategorySingleResponse {
224
+ result: KnowledgeCategoryRecord;
225
+ }
226
+ export interface KnowledgeArticleResponse {
227
+ result: KnowledgeArticleRecord[];
228
+ }
229
+ export interface KnowledgeArticleSummaryResponse {
230
+ result: KnowledgeArticleSummary[];
231
+ }
232
+ export interface KnowledgeArticleSingleResponse {
233
+ result: KnowledgeArticleRecord;
234
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Models for Knowledge Base management operations against ServiceNow tables:
3
+ * kb_knowledge_base, kb_category, and kb_knowledge.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=KnowledgeModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnowledgeModels.js","sourceRoot":"","sources":["../../../src/sn/knowledge/KnowledgeModels.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,35 @@
1
+ import { ServiceNowInstance } from '../ServiceNowInstance.js';
2
+ import { ExportRecordOptions, ExportRecordResult, ImportRecordsOptions, ImportRecordsResult } from './XMLRecordModels.js';
3
+ /**
4
+ * Manages XML record export (unload) and import (upload) operations
5
+ * against ServiceNow `.do` processor endpoints.
6
+ */
7
+ export declare class XMLRecordManager {
8
+ private _snRequest;
9
+ private _logger;
10
+ constructor(instance: ServiceNowInstance);
11
+ /**
12
+ * Export a single record as XML (ServiceNow unload format).
13
+ *
14
+ * @param options - Table name and sys_id of the record to export
15
+ * @returns The raw XML string plus parsed metadata (table, sysId, unloadDate)
16
+ */
17
+ exportRecord(options: ExportRecordOptions): Promise<ExportRecordResult>;
18
+ /**
19
+ * Import XML records into ServiceNow via the sys_upload.do processor.
20
+ *
21
+ * Acquires a CSRF token first, then POSTs a multipart form with the XML content.
22
+ *
23
+ * @param options - XML content and target table name
24
+ * @returns Success status and the target table
25
+ */
26
+ importRecords(options: ImportRecordsOptions): Promise<ImportRecordsResult>;
27
+ /**
28
+ * Fetch the CSRF token from /upload.do by parsing the sysparm_ck hidden input.
29
+ */
30
+ private _getUploadCSRFToken;
31
+ /**
32
+ * Parse ServiceNow unload XML to extract metadata (table name, sys_id, unload_date).
33
+ */
34
+ private _parseUnloadXml;
35
+ }