@uipath/uipath-typescript 1.4.0 → 1.4.1

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.
Files changed (48) hide show
  1. package/dist/agent-memory/index.cjs +16 -9
  2. package/dist/agent-memory/index.mjs +16 -9
  3. package/dist/agents/index.cjs +278 -9
  4. package/dist/agents/index.d.ts +465 -6
  5. package/dist/agents/index.mjs +279 -10
  6. package/dist/assets/index.cjs +16 -9
  7. package/dist/assets/index.mjs +16 -9
  8. package/dist/attachments/index.cjs +16 -9
  9. package/dist/attachments/index.mjs +16 -9
  10. package/dist/buckets/index.cjs +114 -124
  11. package/dist/buckets/index.d.ts +197 -84
  12. package/dist/buckets/index.mjs +114 -124
  13. package/dist/cases/index.cjs +79 -13
  14. package/dist/cases/index.d.ts +30 -3
  15. package/dist/cases/index.mjs +79 -13
  16. package/dist/conversational-agent/index.cjs +16 -9
  17. package/dist/conversational-agent/index.mjs +16 -9
  18. package/dist/core/index.cjs +35 -6
  19. package/dist/core/index.mjs +35 -6
  20. package/dist/entities/index.cjs +253 -69
  21. package/dist/entities/index.d.ts +343 -116
  22. package/dist/entities/index.mjs +253 -69
  23. package/dist/feedback/index.cjs +16 -9
  24. package/dist/feedback/index.mjs +16 -9
  25. package/dist/governance/index.cjs +16 -9
  26. package/dist/governance/index.mjs +16 -9
  27. package/dist/index.cjs +529 -193
  28. package/dist/index.d.ts +2141 -750
  29. package/dist/index.mjs +529 -194
  30. package/dist/index.umd.js +529 -193
  31. package/dist/jobs/index.cjs +16 -9
  32. package/dist/jobs/index.mjs +16 -9
  33. package/dist/maestro-processes/index.cjs +16 -9
  34. package/dist/maestro-processes/index.mjs +16 -9
  35. package/dist/orchestrator-du-module/index.cjs +1788 -0
  36. package/dist/orchestrator-du-module/index.d.ts +757 -0
  37. package/dist/orchestrator-du-module/index.mjs +1785 -0
  38. package/dist/processes/index.cjs +16 -9
  39. package/dist/processes/index.mjs +16 -9
  40. package/dist/queues/index.cjs +16 -9
  41. package/dist/queues/index.mjs +16 -9
  42. package/dist/tasks/index.cjs +79 -13
  43. package/dist/tasks/index.d.ts +109 -4
  44. package/dist/tasks/index.mjs +80 -14
  45. package/dist/traces/index.cjs +303 -9
  46. package/dist/traces/index.d.ts +482 -2
  47. package/dist/traces/index.mjs +302 -10
  48. package/package.json +11 -1
package/dist/index.mjs CHANGED
@@ -4496,6 +4496,24 @@ var TaskActivityType;
4496
4496
  TaskActivityType["BulkCompleted"] = "BulkCompleted";
4497
4497
  TaskActivityType["FirstOpened"] = "FirstOpened";
4498
4498
  })(TaskActivityType || (TaskActivityType = {}));
4499
+ /**
4500
+ * Defines how a task assignment is distributed.
4501
+ *
4502
+ * Defaults to {@link TaskAssignmentCriteria.SingleUser} (a direct single-user
4503
+ * assignment) when not specified. The group-based criteria tell Action Center
4504
+ * how to distribute the task across the members of a directory group.
4505
+ */
4506
+ var TaskAssignmentCriteria;
4507
+ (function (TaskAssignmentCriteria) {
4508
+ /** Assigned to a single user, like a direct assignment. */
4509
+ TaskAssignmentCriteria["SingleUser"] = "SingleUser";
4510
+ /** Assigned to the group member with the fewest pending tasks. */
4511
+ TaskAssignmentCriteria["Workload"] = "Workload";
4512
+ /** Assigned to all users in the group. */
4513
+ TaskAssignmentCriteria["AllUsers"] = "AllUsers";
4514
+ /** Assigned in a round-robin manner across the group's members. */
4515
+ TaskAssignmentCriteria["RoundRobin"] = "RoundRobin";
4516
+ })(TaskAssignmentCriteria || (TaskAssignmentCriteria = {}));
4499
4517
 
4500
4518
  /**
4501
4519
  * Base path constants for different services
@@ -4652,6 +4670,9 @@ const DATA_FABRIC_TENANT_FOLDER_ID = '00000000-0000-0000-0000-000000000000';
4652
4670
  const DATA_FABRIC_ENDPOINTS = {
4653
4671
  ENTITY: {
4654
4672
  GET_ALL: `${DATAFABRIC_BASE}/api/Entity`,
4673
+ // Lists tenant-level and folder-level entities together.
4674
+ // Used by getAll when includeFolderEntities is true.
4675
+ GET_ALL_V2: `${DATAFABRIC_BASE}/api/v2/Entity`,
4655
4676
  GET_ENTITY_RECORDS: (entityId) => `${DATAFABRIC_BASE}/api/EntityService/entity/${entityId}/read`,
4656
4677
  GET_BY_ID: (entityId) => `${DATAFABRIC_BASE}/api/Entity/${entityId}`,
4657
4678
  GET_RECORD_BY_ID: (entityId, recordId) => `${DATAFABRIC_BASE}/api/EntityService/entity/${entityId}/read/${recordId}`,
@@ -4735,6 +4756,15 @@ function isTokenExpired(tokenInfo) {
4735
4756
  return true;
4736
4757
  return new Date() >= tokenInfo.expiresAt;
4737
4758
  }
4759
+ /**
4760
+ * The validated host origin when the app is running as a trusted, generic
4761
+ * host-embedded app (`?host=embed&basedomain=<origin>` with an allowlisted
4762
+ * UiPath origin); otherwise null. Shared by TokenManager (to create the
4763
+ * EmbeddedTokenManager) and UiPath init (to seed an empty token so getValidToken
4764
+ * can bootstrap the postMessage token flow), which previously duplicated this
4765
+ * condition inline.
4766
+ */
4767
+ const trustedEmbeddingOrigin = isHostEmbedded && embeddingOrigin && isValidHostOrigin(embeddingOrigin) ? embeddingOrigin : null;
4738
4768
  /**
4739
4769
  * Waits for the next window message that satisfies `filter`.
4740
4770
  * Rejects if the AbortSignal fires before a matching message arrives.
@@ -4981,7 +5011,7 @@ class EmbeddedTokenManager {
4981
5011
  * SDK's public API.
4982
5012
  */
4983
5013
  /** SDK version placeholder — patched by the SDK publish workflow. */
4984
- const SDK_VERSION = '1.4.0';
5014
+ const SDK_VERSION = '1.4.1';
4985
5015
  const CLOUD_ROLE_NAME = 'uipath-ts-sdk';
4986
5016
  const SDK_SERVICE_NAME = 'UiPath.TypeScript.Sdk';
4987
5017
  const SDK_LOGGER_NAME = 'uipath-ts-sdk-telemetry';
@@ -5161,8 +5191,8 @@ class TokenManager {
5161
5191
  this.actionCenterTokenManager = new ActionCenterTokenManager(config, (tokenInfo) => this.setToken(tokenInfo));
5162
5192
  this.isOAuth = false;
5163
5193
  }
5164
- else if (isHostEmbedded && embeddingOrigin && isValidHostOrigin(embeddingOrigin)) {
5165
- this.embeddedTokenManager = new EmbeddedTokenManager(embeddingOrigin, config, tokenInfo => this.setToken(tokenInfo));
5194
+ else if (trustedEmbeddingOrigin) {
5195
+ this.embeddedTokenManager = new EmbeddedTokenManager(trustedEmbeddingOrigin, config, tokenInfo => this.setToken(tokenInfo));
5166
5196
  this.isOAuth = false;
5167
5197
  }
5168
5198
  }
@@ -6221,10 +6251,12 @@ _UiPath_config = new WeakMap(), _UiPath_authService = new WeakMap(), _UiPath_ini
6221
6251
  });
6222
6252
  // Track SDK initialization
6223
6253
  trackEvent('Sdk.Auth');
6224
- /** Auto-initialize for secret-based auth
6225
- * When viewed in Action Center, initialize tokenInfo with empty token. When an sdk call is made Action Center passes the token to sdk.
6254
+ /** Auto-initialize for secret-based auth, Action Center, and generic host-embedded apps.
6255
+ * When viewed in Action Center or embedded in a UiPath host frame via the UIP protocol,
6256
+ * initialize tokenInfo with an empty token so getValidToken() can bootstrap via postMessage.
6257
+ * When an sdk call is made, the host passes the token to the sdk.
6226
6258
  */
6227
- if (hasSecretAuth || isInActionCenter) {
6259
+ if (hasSecretAuth || isInActionCenter || trustedEmbeddingOrigin) {
6228
6260
  __classPrivateFieldGet(this, _UiPath_authService, "f").authenticateWithSecret(config.secret ?? '');
6229
6261
  __classPrivateFieldSet(this, _UiPath_initialized, true, "f");
6230
6262
  }
@@ -7450,12 +7482,18 @@ class PaginationHelpers {
7450
7482
  * @returns Promise resolving to a paginated result
7451
7483
  */
7452
7484
  static async getAllPaginated(params) {
7453
- const { serviceAccess, getEndpoint, folderId, headers: providedHeaders, paginationParams, additionalParams, transformFn, method = HTTP_METHODS.GET, options = {} } = params;
7485
+ const { serviceAccess, getEndpoint, folderId, headers: providedHeaders, paginationParams, additionalParams, queryParams, transformFn, method = HTTP_METHODS.GET, options = {} } = params;
7454
7486
  const endpoint = getEndpoint(folderId);
7455
7487
  const headers = providedHeaders ?? (folderId ? createHeaders({ [FOLDER_ID]: folderId }) : {});
7488
+ // On POST, the caller's options go in the body; queryParams stays in the URL.
7489
+ // On GET, everything is URL — queryParams merges with additionalParams.
7490
+ const isPost = method === HTTP_METHODS.POST;
7491
+ const requestSpec = isPost
7492
+ ? { body: additionalParams, params: queryParams }
7493
+ : { params: { ...additionalParams, ...queryParams } };
7456
7494
  const paginatedResponse = await serviceAccess.requestWithPagination(method, endpoint, paginationParams, {
7457
7495
  headers,
7458
- params: additionalParams,
7496
+ ...requestSpec,
7459
7497
  pagination: {
7460
7498
  paginationType: options.paginationType || PaginationType.OFFSET,
7461
7499
  itemsField: options.itemsField || DEFAULT_ITEMS_FIELD,
@@ -7480,7 +7518,7 @@ class PaginationHelpers {
7480
7518
  * @returns Promise resolving to an object with data and totalCount
7481
7519
  */
7482
7520
  static async getAllNonPaginated(params) {
7483
- const { serviceAccess, getAllEndpoint, getByFolderEndpoint, folderId, headers: providedHeaders, additionalParams, transformFn, method = HTTP_METHODS.GET, options = {} } = params;
7521
+ const { serviceAccess, getAllEndpoint, getByFolderEndpoint, folderId, headers: providedHeaders, additionalParams, queryParams, transformFn, method = HTTP_METHODS.GET, options = {} } = params;
7484
7522
  // Set default field names
7485
7523
  const itemsField = options.itemsField || DEFAULT_ITEMS_FIELD;
7486
7524
  const totalCountField = options.totalCountField || DEFAULT_TOTAL_COUNT_FIELD;
@@ -7490,11 +7528,11 @@ class PaginationHelpers {
7490
7528
  // Make the API call based on method
7491
7529
  let response;
7492
7530
  if (method === HTTP_METHODS.POST) {
7493
- response = await serviceAccess.post(endpoint, additionalParams, { headers });
7531
+ response = await serviceAccess.post(endpoint, additionalParams, { headers, params: queryParams });
7494
7532
  }
7495
7533
  else {
7496
7534
  response = await serviceAccess.get(endpoint, {
7497
- params: additionalParams,
7535
+ params: { ...additionalParams, ...queryParams },
7498
7536
  headers
7499
7537
  });
7500
7538
  }
@@ -7549,6 +7587,7 @@ class PaginationHelpers {
7549
7587
  headers: config.headers,
7550
7588
  paginationParams: cursor ? { cursor, pageSize } : jumpToPage !== undefined ? { jumpToPage, pageSize } : { pageSize },
7551
7589
  additionalParams: prefixedOptions,
7590
+ queryParams: config.queryParams,
7552
7591
  transformFn: config.transformFn,
7553
7592
  method: config.method,
7554
7593
  options: {
@@ -7566,6 +7605,7 @@ class PaginationHelpers {
7566
7605
  folderId,
7567
7606
  headers: config.headers,
7568
7607
  additionalParams: prefixedOptions,
7608
+ queryParams: config.queryParams,
7569
7609
  transformFn: config.transformFn,
7570
7610
  method: config.method,
7571
7611
  options: {
@@ -7702,18 +7742,17 @@ class BaseService {
7702
7742
  const params = this.validateAndPreparePaginationParams(paginationType, paginationOptions);
7703
7743
  // Prepare request parameters based on pagination type
7704
7744
  const requestParams = this.preparePaginationRequestParams(paginationType, params, options.pagination);
7705
- // For POST requests, merge pagination params into body and set params to undefined; for GET, use query params
7745
+ // Route pagination state to wherever the API expects it (body for POST, URL for GET).
7746
+ // Caller-supplied options.body / options.params are respected as-is — the api-client
7747
+ // already handles params (URL) and body (request body) independently for every method.
7706
7748
  if (method.toUpperCase() === 'POST') {
7707
7749
  const existingBody = (options.body && typeof options.body === 'object') ? options.body : {};
7708
7750
  options.body = {
7709
7751
  ...existingBody,
7710
- ...options.params,
7711
7752
  ...requestParams
7712
7753
  };
7713
- options.params = undefined;
7714
7754
  }
7715
7755
  else {
7716
- // Merge pagination parameters with existing parameters
7717
7756
  options.params = {
7718
7757
  ...options.params,
7719
7758
  ...requestParams
@@ -8127,6 +8166,14 @@ var SqlFieldType;
8127
8166
  SqlFieldType["MULTILINE"] = "MULTILINE";
8128
8167
  })(SqlFieldType || (SqlFieldType = {}));
8129
8168
 
8169
+ /**
8170
+ * Numeric type IDs that pair with {@link EntityType} on reference payloads
8171
+ * (entityType + entityTypeId travel together in `referenceEntity` /
8172
+ * `referenceChoiceSet` bodies on cross-folder schema upserts).
8173
+ */
8174
+ const ENTITY_TYPE_IDS = {
8175
+ [EntityType.ChoiceSet]: 1,
8176
+ };
8130
8177
  /**
8131
8178
  * Maps fields for Entities
8132
8179
  */
@@ -8260,7 +8307,7 @@ class EntityService extends BaseService {
8260
8307
  * Gets entity metadata by entity ID with attached operation methods
8261
8308
  *
8262
8309
  * @param id - UUID of the entity
8263
- * @param options - Optional {@link EntityGetByIdOptions} (e.g. `folderKey` for folder-scoped entities)
8310
+ * @param options - Optional {@link EntityGetByIdOptions} (e.g. `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8264
8311
  * @returns Promise resolving to entity metadata with schema information and operation methods
8265
8312
  *
8266
8313
  * @example
@@ -8300,7 +8347,7 @@ class EntityService extends BaseService {
8300
8347
  * Gets entity records by entity ID
8301
8348
  *
8302
8349
  * @param entityId - UUID of the entity
8303
- * @param options - Query options including expansionLevel and pagination options
8350
+ * @param options - Query options including expansionLevel and pagination options The `folderKey` property is **experimental**.
8304
8351
  * @returns Promise resolving to an array of entity records or paginated response
8305
8352
  *
8306
8353
  * @example
@@ -8328,6 +8375,9 @@ class EntityService extends BaseService {
8328
8375
  * cursor: paginatedResponse.nextCursor,
8329
8376
  * expansionLevel: 1
8330
8377
  * });
8378
+ *
8379
+ * // Folder-scoped entity: pass the entity's folder key
8380
+ * const records = await entities.getAllRecords("<entityId>", { folderKey: "<folderKey>" });
8331
8381
  * ```
8332
8382
  */
8333
8383
  async getAllRecords(entityId, options) {
@@ -8357,7 +8407,7 @@ class EntityService extends BaseService {
8357
8407
  *
8358
8408
  * @param entityId - UUID of the entity
8359
8409
  * @param recordId - UUID of the record
8360
- * @param options - Query options including expansionLevel
8410
+ * @param options - Query options including `expansionLevel` and `folderKey` The `folderKey` property is **experimental**.
8361
8411
  * @returns Promise resolving to the entity record
8362
8412
  *
8363
8413
  * @example
@@ -8369,6 +8419,11 @@ class EntityService extends BaseService {
8369
8419
  * const record = await sdk.entities.getRecordById(<entityId>, <recordId>, {
8370
8420
  * expansionLevel: 1
8371
8421
  * });
8422
+ *
8423
+ * // Folder-scoped entity: pass the entity's folder key
8424
+ * const record = await sdk.entities.getRecordById(<entityId>, <recordId>, {
8425
+ * folderKey: "<folderKey>"
8426
+ * });
8372
8427
  * ```
8373
8428
  */
8374
8429
  async getRecordById(entityId, recordId, options = {}) {
@@ -8383,7 +8438,7 @@ class EntityService extends BaseService {
8383
8438
  *
8384
8439
  * @param entityId - UUID of the entity
8385
8440
  * @param data - Record to insert
8386
- * @param options - Insert options
8441
+ * @param options - Insert options The `folderKey` property is **experimental**.
8387
8442
  * @returns Promise resolving to the inserted record with generated record ID
8388
8443
  *
8389
8444
  * @example
@@ -8399,6 +8454,11 @@ class EntityService extends BaseService {
8399
8454
  * const result = await entities.insertRecordById("<entityId>", { name: "John", age: 30 }, {
8400
8455
  * expansionLevel: 1
8401
8456
  * });
8457
+ *
8458
+ * // Folder-scoped entity: pass the entity's folder key
8459
+ * await entities.insertRecordById("<entityId>", { name: "John", age: 30 }, {
8460
+ * folderKey: "<folderKey>"
8461
+ * });
8402
8462
  * ```
8403
8463
  */
8404
8464
  async insertRecordById(id, data, options = {}) {
@@ -8416,7 +8476,7 @@ class EntityService extends BaseService {
8416
8476
  *
8417
8477
  * @param entityId - UUID of the entity
8418
8478
  * @param data - Array of records to insert
8419
- * @param options - Insert options
8479
+ * @param options - Insert options The `folderKey` property is **experimental**.
8420
8480
  * @returns Promise resolving to insert response
8421
8481
  *
8422
8482
  * @example
@@ -8439,6 +8499,12 @@ class EntityService extends BaseService {
8439
8499
  * expansionLevel: 1,
8440
8500
  * failOnFirst: true
8441
8501
  * });
8502
+ *
8503
+ * // Folder-scoped entity: pass the entity's folder key
8504
+ * await entities.insertRecordsById("<entityId>", [
8505
+ * { name: "John", age: 30 },
8506
+ * { name: "Jane", age: 25 }
8507
+ * ], { folderKey: "<folderKey>" });
8442
8508
  * ```
8443
8509
  */
8444
8510
  async insertRecordsById(id, data, options = {}) {
@@ -8458,7 +8524,7 @@ class EntityService extends BaseService {
8458
8524
  * @param entityId - UUID of the entity
8459
8525
  * @param recordId - UUID of the record to update
8460
8526
  * @param data - Key-value pairs of fields to update
8461
- * @param options - Update options
8527
+ * @param options - Update options The `folderKey` property is **experimental**.
8462
8528
  * @returns Promise resolving to the updated record
8463
8529
  *
8464
8530
  * @example
@@ -8474,6 +8540,11 @@ class EntityService extends BaseService {
8474
8540
  * const result = await entities.updateRecordById("<entityId>", "<recordId>", { name: "John Updated", age: 31 }, {
8475
8541
  * expansionLevel: 1
8476
8542
  * });
8543
+ *
8544
+ * // Folder-scoped entity: pass the entity's folder key
8545
+ * await entities.updateRecordById("<entityId>", "<recordId>", { name: "John Updated" }, {
8546
+ * folderKey: "<folderKey>"
8547
+ * });
8477
8548
  * ```
8478
8549
  */
8479
8550
  async updateRecordById(entityId, recordId, data, options = {}) {
@@ -8492,7 +8563,7 @@ class EntityService extends BaseService {
8492
8563
  * @param entityId - UUID of the entity
8493
8564
  * @param data - Array of records to update. Each record MUST contain the record Id,
8494
8565
  * otherwise the update will fail.
8495
- * @param options - Update options
8566
+ * @param options - Update options The `folderKey` property is **experimental**.
8496
8567
  * @returns Promise resolving to update response
8497
8568
  *
8498
8569
  * @example
@@ -8515,6 +8586,11 @@ class EntityService extends BaseService {
8515
8586
  * expansionLevel: 1,
8516
8587
  * failOnFirst: true
8517
8588
  * });
8589
+ *
8590
+ * // Folder-scoped entity: pass the entity's folder key
8591
+ * await entities.updateRecordsById("<entityId>", [
8592
+ * { Id: "123", name: "John Updated" }
8593
+ * ], { folderKey: "<folderKey>" });
8518
8594
  * ```
8519
8595
  */
8520
8596
  async updateRecordsById(id, data, options = {}) {
@@ -8535,7 +8611,7 @@ class EntityService extends BaseService {
8535
8611
  *
8536
8612
  * @param entityId - UUID of the entity
8537
8613
  * @param recordIds - Array of record UUIDs to delete
8538
- * @param options - Delete options
8614
+ * @param options - Delete options The `folderKey` property is **experimental**.
8539
8615
  * @returns Promise resolving to delete response
8540
8616
  *
8541
8617
  * @example
@@ -8548,6 +8624,11 @@ class EntityService extends BaseService {
8548
8624
  * const result = await entities.deleteRecordsById("<entityId>", [
8549
8625
  * "<recordId-1>", "<recordId-2>"
8550
8626
  * ]);
8627
+ *
8628
+ * // Folder-scoped entity: pass the entity's folder key
8629
+ * await entities.deleteRecordsById("<entityId>", [
8630
+ * "<recordId-1>", "<recordId-2>"
8631
+ * ], { folderKey: "<folderKey>" });
8551
8632
  * ```
8552
8633
  */
8553
8634
  async deleteRecordsById(id, recordIds, options = {}) {
@@ -8568,7 +8649,7 @@ class EntityService extends BaseService {
8568
8649
  *
8569
8650
  * @param entityId - UUID of the entity
8570
8651
  * @param recordId - UUID of the record to delete
8571
- * @param options - Optional {@link EntityDeleteRecordByIdOptions} (e.g. `folderKey` for folder-scoped entities)
8652
+ * @param options - Optional {@link EntityDeleteRecordByIdOptions} (e.g. `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8572
8653
  * @returns Promise resolving to void on success
8573
8654
  * @example
8574
8655
  * ```typescript
@@ -8586,8 +8667,14 @@ class EntityService extends BaseService {
8586
8667
  await this.delete(DATA_FABRIC_ENDPOINTS.ENTITY.DELETE_RECORD_BY_ID(entityId, recordId), { headers: createHeaders({ [FOLDER_KEY]: options?.folderKey }) });
8587
8668
  }
8588
8669
  /**
8589
- * Gets all entities in the system
8670
+ * Gets entities in the tenant.
8671
+ *
8672
+ * Three call modes:
8673
+ * - `getAll()` — default. Returns only tenant-level entities.
8674
+ * - `getAll({ folderKey: "<uuid>" })` — preferred for folder-scoped data. Returns only entities in that folder.
8675
+ * - `getAll({ includeFolderEntities: true })` — returns tenant-level **and** folder-level entities together. `folderKey` is preferred over `includeFolderEntities` when both are set.
8590
8676
  *
8677
+ * @param options - Optional {@link EntityGetAllOptions} (`folderKey` to list a single folder's entities — preferred when scoping to a folder; `includeFolderEntities: true` to list tenant + folder entities together) The `folderKey` property is **experimental**.
8591
8678
  * @returns Promise resolving to an array of entity metadata
8592
8679
  *
8593
8680
  * @example
@@ -8596,15 +8683,29 @@ class EntityService extends BaseService {
8596
8683
  *
8597
8684
  * const entities = new Entities(sdk);
8598
8685
  *
8599
- * // Get all entities
8600
- * const allEntities = await entities.getAll();
8686
+ * // Tenant-only (default)
8687
+ * const tenantEntities = await entities.getAll();
8688
+ *
8689
+ * // A single folder's entities (preferred when targeting a specific folder)
8690
+ * const folderEntities = await entities.getAll({ folderKey: "<folderKey>" });
8691
+ *
8692
+ * // Tenant + folder entities together
8693
+ * const allEntities = await entities.getAll({ includeFolderEntities: true });
8601
8694
  *
8602
8695
  * // Call operations on an entity
8603
- * const records = await allEntities[0].getAllRecords();
8696
+ * const records = await tenantEntities[0].getAllRecords();
8604
8697
  * ```
8605
8698
  */
8606
- async getAll() {
8607
- const response = await this.get(DATA_FABRIC_ENDPOINTS.ENTITY.GET_ALL);
8699
+ async getAll(options) {
8700
+ // folderKey is preferred over includeFolderEntities: when present, scope to that folder
8701
+ // via the v1 endpoint + header. Only when no folderKey is given AND includeFolderEntities
8702
+ // is explicitly true does the SDK switch to the v2 endpoint (returns tenant + folder
8703
+ // entities together). Default (no options or includeFolderEntities omitted) stays on
8704
+ // the v1 endpoint = tenant only.
8705
+ const endpoint = !options?.folderKey && options?.includeFolderEntities
8706
+ ? DATA_FABRIC_ENDPOINTS.ENTITY.GET_ALL_V2
8707
+ : DATA_FABRIC_ENDPOINTS.ENTITY.GET_ALL;
8708
+ const response = await this.get(endpoint, { headers: createHeaders({ [FOLDER_KEY]: options?.folderKey }) });
8608
8709
  // Apply transformations
8609
8710
  const entities = response.data.map(entity => {
8610
8711
  // Transform each entity
@@ -8619,7 +8720,7 @@ class EntityService extends BaseService {
8619
8720
  * Queries entity records with filters, sorting, aggregates, and pagination
8620
8721
  *
8621
8722
  * @param id - UUID of the entity
8622
- * @param options - Query options including filterGroup, selectedFields, sortOptions, aggregates, groupBy, and pagination
8723
+ * @param options - Query options including filterGroup, selectedFields, sortOptions, aggregates, groupBy, and pagination The `folderKey` property is **experimental**.
8623
8724
  * @returns Promise resolving to {@link NonPaginatedResponse} without pagination options,
8624
8725
  * or {@link PaginatedResponse} when `pageSize`, `cursor`, or `jumpToPage` are provided
8625
8726
  *
@@ -8666,18 +8767,24 @@ class EntityService extends BaseService {
8666
8767
  * { function: EntityAggregateFunction.Avg, field: "amount", alias: "avgAmount" },
8667
8768
  * ],
8668
8769
  * });
8770
+ *
8771
+ * // Folder-scoped entity: pass the entity's folder key
8772
+ * await entities.queryRecordsById("<entityId>", {
8773
+ * filterGroup: { queryFilters: [{ fieldName: "status", operator: QueryFilterOperator.Equals, value: "active" }] },
8774
+ * folderKey: "<folderKey>",
8775
+ * });
8669
8776
  * ```
8670
8777
  */
8671
8778
  async queryRecordsById(id, options) {
8672
- // folderKey is header-only destructure it out so PaginationHelpers doesn't include
8673
- // it in the POST body alongside the query filters.
8674
- const { folderKey, ...rest } = options ?? {};
8779
+ // folderKey is header-only; expansionLevel must be sent as a query param by PaginationHelpers.
8780
+ const { folderKey, expansionLevel, ...rest } = options ?? {};
8675
8781
  const downstreamOptions = options === undefined ? undefined : rest;
8676
8782
  return PaginationHelpers.getAll({
8677
8783
  serviceAccess: this.createPaginationServiceAccess(),
8678
8784
  getEndpoint: () => DATA_FABRIC_ENDPOINTS.ENTITY.QUERY_BY_ID(id),
8679
8785
  method: HTTP_METHODS.POST,
8680
8786
  headers: createHeaders({ [FOLDER_KEY]: folderKey }),
8787
+ queryParams: createParams({ expansionLevel }),
8681
8788
  pagination: {
8682
8789
  paginationType: PaginationType.OFFSET,
8683
8790
  itemsField: ENTITY_PAGINATION.ITEMS_FIELD,
@@ -8688,7 +8795,7 @@ class EntityService extends BaseService {
8688
8795
  countParam: ENTITY_OFFSET_PARAMS.COUNT_PARAM
8689
8796
  }
8690
8797
  },
8691
- excludeFromPrefix: ['expansionLevel', 'filterGroup', 'selectedFields', 'sortOptions', 'aggregates', 'groupBy']
8798
+ excludeFromPrefix: ['filterGroup', 'selectedFields', 'sortOptions', 'aggregates', 'groupBy']
8692
8799
  }, downstreamOptions);
8693
8800
  }
8694
8801
  /**
@@ -8696,7 +8803,7 @@ class EntityService extends BaseService {
8696
8803
  *
8697
8804
  * @param id - UUID of the entity
8698
8805
  * @param file - CSV file to import (Blob, File, or Uint8Array)
8699
- * @param options - Optional {@link EntityImportRecordsByIdOptions} (e.g. `folderKey` for folder-scoped entities)
8806
+ * @param options - Optional {@link EntityImportRecordsByIdOptions} (e.g. `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8700
8807
  * @returns Promise resolving to import result with record counts
8701
8808
  *
8702
8809
  * @example
@@ -8739,7 +8846,7 @@ class EntityService extends BaseService {
8739
8846
  * @param entityId - UUID of the entity
8740
8847
  * @param recordId - UUID of the record containing the attachment
8741
8848
  * @param fieldName - Name of the File-type field containing the attachment
8742
- * @param options - Optional {@link EntityDownloadAttachmentOptions} (e.g. `folderKey` for folder-scoped entities)
8849
+ * @param options - Optional {@link EntityDownloadAttachmentOptions} (e.g. `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8743
8850
  * @returns Promise resolving to Blob containing the file content
8744
8851
  *
8745
8852
  * @example
@@ -8777,7 +8884,7 @@ class EntityService extends BaseService {
8777
8884
  * @param recordId - UUID of the record to upload the attachment to
8778
8885
  * @param fieldName - Name of the File-type field
8779
8886
  * @param file - File to upload (Blob, File, or Uint8Array)
8780
- * @param options - Optional {@link EntityUploadAttachmentOptions} (e.g. `expansionLevel`, `folderKey` for folder-scoped entities)
8887
+ * @param options - Optional {@link EntityUploadAttachmentOptions} (e.g. `expansionLevel`, `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8781
8888
  * @returns Promise resolving to {@link EntityUploadAttachmentResponse}
8782
8889
  *
8783
8890
  * @example
@@ -8822,7 +8929,7 @@ class EntityService extends BaseService {
8822
8929
  * @param entityId - UUID of the entity
8823
8930
  * @param recordId - UUID of the record containing the attachment
8824
8931
  * @param fieldName - Name of the File-type field containing the attachment
8825
- * @param options - Optional {@link EntityDeleteAttachmentOptions} (e.g. `folderKey` for folder-scoped entities)
8932
+ * @param options - Optional {@link EntityDeleteAttachmentOptions} (e.g. `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8826
8933
  * @returns Promise resolving to {@link EntityDeleteAttachmentResponse}
8827
8934
  *
8828
8935
  * @example
@@ -8877,7 +8984,7 @@ class EntityService extends BaseService {
8877
8984
  * @param name - Entity name — must start with a letter and contain
8878
8985
  * only letters, numbers, and underscores (e.g., `"productCatalog"`).
8879
8986
  * @param fields - Array of field definitions
8880
- * @param options - Optional entity-level settings ({@link EntityCreateOptions})
8987
+ * @param options - Optional entity-level settings ({@link EntityCreateOptions}) The `folderKey` property is **experimental**.
8881
8988
  * @returns Promise resolving to the ID of the created entity
8882
8989
  *
8883
8990
  * @example
@@ -8893,17 +9000,36 @@ class EntityService extends BaseService {
8893
9000
  * { fieldName: "price", type: EntityFieldDataType.DECIMAL, decimalPrecision: 4, maxValue: 999999, minValue: 0 },
8894
9001
  * { fieldName: "quantity", type: EntityFieldDataType.INTEGER, maxValue: 10000, minValue: 1, defaultValue: "0" },
8895
9002
  * ]);
9003
+ *
9004
+ * // Cross-folder references — link a folder-scoped entity to entities and
9005
+ * // system choice sets that live in another folder or at the tenant level.
9006
+ * await entities.create("orderLine", [
9007
+ * {
9008
+ * fieldName: "order",
9009
+ * type: EntityFieldDataType.RELATIONSHIP,
9010
+ * referenceEntityId: "<orderEntityId>",
9011
+ * referenceFieldId: "<orderEntityPkId>",
9012
+ * referenceFolderKey: "<otherFolderKey>", // target lives in a different folder
9013
+ * },
9014
+ * {
9015
+ * fieldName: "userType",
9016
+ * type: EntityFieldDataType.CHOICE_SET_SINGLE,
9017
+ * choiceSetId: "<systemUserTypeChoiceSetId>", // tenant-level system choice set
9018
+ * // referenceFolderKey omitted → SDK looks up the target at tenant scope
9019
+ * },
9020
+ * ], { folderKey: "<sourceFolderKey>" });
8896
9021
  * ```
8897
9022
  * @internal
8898
9023
  */
8899
9024
  async create(name, fields, options) {
8900
9025
  const opts = options ?? {};
9026
+ const fieldPayloads = await this.buildFieldsWithReferenceMeta(fields);
8901
9027
  const payload = {
8902
9028
  ...(opts.description !== undefined && { description: opts.description }),
8903
9029
  displayName: opts.displayName ?? name,
8904
9030
  entityDefinition: {
8905
9031
  name,
8906
- fields: fields.map(f => this.buildSchemaFieldPayload(f)),
9032
+ fields: fieldPayloads,
8907
9033
  folderId: opts.folderKey ?? DATA_FABRIC_TENANT_FOLDER_ID,
8908
9034
  isRbacEnabled: opts.isRbacEnabled ?? false,
8909
9035
  isInsightsEnabled: opts.isAnalyticsEnabled ?? false,
@@ -8917,7 +9043,7 @@ class EntityService extends BaseService {
8917
9043
  * Deletes a Data Fabric entity and all its records
8918
9044
  *
8919
9045
  * @param id - UUID of the entity to delete
8920
- * @param options - Optional {@link EntityDeleteByIdOptions} (e.g. `folderKey` for folder-scoped entities)
9046
+ * @param options - Optional {@link EntityDeleteByIdOptions} (e.g. `folderKey` for folder-scoped entities) The `folderKey` property is **experimental**.
8921
9047
  * @returns Promise resolving when the entity is deleted
8922
9048
  *
8923
9049
  * @example
@@ -8944,7 +9070,7 @@ class EntityService extends BaseService {
8944
9070
  * overwrite each other's changes.
8945
9071
  *
8946
9072
  * @param id - UUID of the entity to update
8947
- * @param options - Changes to apply ({@link EntityUpdateByIdOptions})
9073
+ * @param options - Changes to apply ({@link EntityUpdateByIdOptions}) The `folderKey` property is **experimental**.
8948
9074
  * @returns Promise resolving when the update is complete
8949
9075
  *
8950
9076
  * @example
@@ -9056,10 +9182,9 @@ class EntityService extends BaseService {
9056
9182
  };
9057
9183
  });
9058
9184
  }
9059
- // Build and append new fields
9060
9185
  const newFields = [];
9061
9186
  if (options.addFields?.length) {
9062
- newFields.push(...options.addFields.map(f => this.buildSchemaFieldPayload(f)));
9187
+ newFields.push(...await this.buildFieldsWithReferenceMeta(options.addFields));
9063
9188
  }
9064
9189
  await this.post(DATA_FABRIC_ENDPOINTS.ENTITY.UPSERT, {
9065
9190
  displayName: raw.displayName,
@@ -9157,8 +9282,39 @@ class EntityService extends BaseService {
9157
9282
  return externalSource;
9158
9283
  });
9159
9284
  }
9285
+ async buildFieldsWithReferenceMeta(fields) {
9286
+ const metas = await Promise.all(fields.map(f => this.buildReferenceMeta(f)));
9287
+ return fields.map((f, i) => this.buildSchemaFieldPayload(f, metas[i]));
9288
+ }
9289
+ // Choice-set targets resolve server-side by NAME (the API rejects cross-folder
9290
+ // refs with empty target name even when folderId is supplied), so the SDK
9291
+ // fetches the name once for each cross-folder choice-set field. Relationship
9292
+ // targets resolve by folderId — no lookup needed.
9293
+ async buildReferenceMeta(field) {
9294
+ if (field.referenceFolderKey === undefined)
9295
+ return undefined;
9296
+ if (field.referenceEntityId === undefined && field.choiceSetId === undefined)
9297
+ return undefined;
9298
+ const folderId = field.referenceFolderKey;
9299
+ const meta = {};
9300
+ if (field.referenceEntityId !== undefined) {
9301
+ meta.referenceEntity = { id: field.referenceEntityId, folderId };
9302
+ }
9303
+ if (field.choiceSetId !== undefined) {
9304
+ const lookupFolderKey = folderId === DATA_FABRIC_TENANT_FOLDER_ID ? undefined : folderId;
9305
+ const target = await this.get(DATA_FABRIC_ENDPOINTS.ENTITY.GET_BY_ID(field.choiceSetId), { headers: createHeaders({ [FOLDER_KEY]: lookupFolderKey }) });
9306
+ meta.referenceChoiceSet = {
9307
+ id: field.choiceSetId,
9308
+ name: target.data.name,
9309
+ folderId,
9310
+ entityType: EntityType.ChoiceSet,
9311
+ entityTypeId: ENTITY_TYPE_IDS[EntityType.ChoiceSet],
9312
+ };
9313
+ }
9314
+ return meta;
9315
+ }
9160
9316
  /** Converts a user-facing EntityCreateFieldOptions to the raw API field payload */
9161
- buildSchemaFieldPayload(field) {
9317
+ buildSchemaFieldPayload(field, refMeta) {
9162
9318
  const fieldType = field.type ?? EntityFieldDataType.STRING;
9163
9319
  this.validateFieldConstraints(fieldType, field, field.fieldName);
9164
9320
  const isRelationship = fieldType === EntityFieldDataType.RELATIONSHIP;
@@ -9169,6 +9325,10 @@ class EntityService extends BaseService {
9169
9325
  });
9170
9326
  }
9171
9327
  const mapping = EntitySchemaFieldTypeMap[fieldType];
9328
+ // Prefer the resolved {id, name, folderId} body so cross-folder targets resolve
9329
+ // server-side; fall back to a bare {id} when no meta was fetched.
9330
+ const referenceEntityBody = refMeta?.referenceEntity ?? (field.referenceEntityId === undefined ? undefined : { id: field.referenceEntityId });
9331
+ const referenceChoiceSetBody = refMeta?.referenceChoiceSet;
9172
9332
  return {
9173
9333
  name: field.fieldName,
9174
9334
  displayName: field.displayName ?? field.fieldName,
@@ -9187,7 +9347,8 @@ class EntityService extends BaseService {
9187
9347
  ...(field.choiceSetId !== undefined && { choiceSetId: field.choiceSetId }),
9188
9348
  ...((isRelationship || isFile) && { isForeignKey: true }),
9189
9349
  ...(isRelationship && { referenceType: ReferenceType.ManyToOne }),
9190
- ...(field.referenceEntityId !== undefined && { referenceEntity: { id: field.referenceEntityId } }),
9350
+ ...(referenceEntityBody !== undefined && { referenceEntity: referenceEntityBody }),
9351
+ ...(referenceChoiceSetBody !== undefined && { referenceChoiceSet: referenceChoiceSetBody }),
9191
9352
  ...(field.referenceFieldId !== undefined && { referenceField: { id: field.referenceFieldId } }),
9192
9353
  };
9193
9354
  }
@@ -9350,8 +9511,14 @@ __decorate([
9350
9511
 
9351
9512
  class ChoiceSetService extends BaseService {
9352
9513
  /**
9353
- * Gets all choice sets in the system
9514
+ * Gets choice sets in the tenant.
9515
+ *
9516
+ * Three call modes:
9517
+ * - `getAll()` — default. Returns only tenant-level choice sets.
9518
+ * - `getAll({ folderKey: "<uuid>" })` — preferred for folder-scoped data. Returns only choice sets in that folder.
9519
+ * - `getAll({ includeFolderChoiceSets: true })` — returns tenant-level **and** folder-level choice sets together. `folderKey` is preferred over `includeFolderChoiceSets` when both are set.
9354
9520
  *
9521
+ * @param options - Optional {@link ChoiceSetGetAllOptions} (`folderKey` to list a single folder's choice sets — preferred when scoping to a folder; `includeFolderChoiceSets: true` to list tenant + folder choice sets together) The `folderKey` property is **experimental**.
9355
9522
  * @returns Promise resolving to an array of choice set metadata
9356
9523
  *
9357
9524
  * @example
@@ -9360,18 +9527,33 @@ class ChoiceSetService extends BaseService {
9360
9527
  *
9361
9528
  * const choiceSets = new ChoiceSets(sdk);
9362
9529
  *
9363
- * // Get all choice sets
9364
- * const allChoiceSets = await choiceSets.getAll();
9530
+ * // Tenant-only (default)
9531
+ * const tenantChoiceSets = await choiceSets.getAll();
9365
9532
  *
9366
- * // Iterate through choice sets
9367
- * allChoiceSets.forEach(choiceSet => {
9368
- * console.log(`ChoiceSet: ${choiceSet.displayName} (${choiceSet.name})`);
9369
- * console.log(`Description: ${choiceSet.description}`);
9370
- * });
9533
+ * // A single folder's choice sets (preferred when targeting a specific folder)
9534
+ * const folderChoiceSets = await choiceSets.getAll({ folderKey: "<folderKey>" });
9535
+ *
9536
+ * // Tenant + folder choice sets together
9537
+ * const allChoiceSets = await choiceSets.getAll({ includeFolderChoiceSets: true });
9371
9538
  * ```
9372
9539
  */
9373
- async getAll() {
9374
- const rawResponse = await this.get(DATA_FABRIC_ENDPOINTS.CHOICESETS.GET_ALL);
9540
+ async getAll(options) {
9541
+ return this.fetchAllChoiceSets(options);
9542
+ }
9543
+ /**
9544
+ * Internal helper that performs the choice-set fetch. Kept separate from the
9545
+ * public `getAll()` so that internal callers (e.g. `resolveChoiceSetName`)
9546
+ * can reuse it without triggering double `@track` telemetry.
9547
+ */
9548
+ async fetchAllChoiceSets(options) {
9549
+ // The choice-set endpoint returns cross-scope results when called without
9550
+ // a folder header. To stay tenant-only by default, send the tenant-marker
9551
+ // UUID as the folder key unless the caller explicitly opts into cross-scope
9552
+ // via includeFolderChoiceSets: true. folderKey is preferred over
9553
+ // includeFolderChoiceSets when both are set.
9554
+ const folderKey = options?.folderKey
9555
+ ?? (options?.includeFolderChoiceSets ? undefined : DATA_FABRIC_TENANT_FOLDER_ID);
9556
+ const rawResponse = await this.get(DATA_FABRIC_ENDPOINTS.CHOICESETS.GET_ALL, { headers: createHeaders({ [FOLDER_KEY]: folderKey }) });
9375
9557
  // Transform field names
9376
9558
  const data = rawResponse.data || [];
9377
9559
  return data.map(choiceSet => transformData(choiceSet, EntityMap));
@@ -9384,7 +9566,7 @@ class ChoiceSetService extends BaseService {
9384
9566
  * - A PaginatedResponse with navigation cursors (when any pagination parameter is provided)
9385
9567
  *
9386
9568
  * @param choiceSetId - UUID of the choice set
9387
- * @param options - Pagination options
9569
+ * @param options - Pagination options and optional `folderKey` for folder-scoped choice sets The `folderKey` property is **experimental**.
9388
9570
  * @returns Promise resolving to choice set values or paginated result
9389
9571
  *
9390
9572
  * @example
@@ -9413,6 +9595,9 @@ class ChoiceSetService extends BaseService {
9413
9595
  * if (page1.hasNextPage) {
9414
9596
  * const page2 = await choiceSets.getById(choiceSetId, { cursor: page1.nextCursor });
9415
9597
  * }
9598
+ *
9599
+ * // Folder-scoped choice set
9600
+ * const folderValues = await choiceSets.getById(choiceSetId, { folderKey: "<folderKey>" });
9416
9601
  * ```
9417
9602
  */
9418
9603
  async getById(choiceSetId, options) {
@@ -9421,11 +9606,16 @@ class ChoiceSetService extends BaseService {
9421
9606
  const camelCased = pascalToCamelCaseKeys(item);
9422
9607
  return transformData(camelCased, EntityMap);
9423
9608
  };
9609
+ // folderKey is header-only — destructure it out so PaginationHelpers doesn't
9610
+ // include it in the POST body alongside pagination params.
9611
+ const { folderKey, ...rest } = options ?? {};
9612
+ const downstreamOptions = options === undefined ? undefined : rest;
9424
9613
  return PaginationHelpers.getAll({
9425
9614
  serviceAccess: this.createPaginationServiceAccess(),
9426
9615
  getEndpoint: () => DATA_FABRIC_ENDPOINTS.CHOICESETS.GET_BY_ID(choiceSetId),
9427
9616
  transformFn,
9428
9617
  method: HTTP_METHODS.POST,
9618
+ headers: createHeaders({ [FOLDER_KEY]: folderKey }),
9429
9619
  pagination: {
9430
9620
  paginationType: PaginationType.OFFSET,
9431
9621
  itemsField: CHOICESET_VALUES_PAGINATION.ITEMS_FIELD,
@@ -9436,7 +9626,7 @@ class ChoiceSetService extends BaseService {
9436
9626
  countParam: ENTITY_OFFSET_PARAMS.COUNT_PARAM
9437
9627
  }
9438
9628
  }
9439
- }, options);
9629
+ }, downstreamOptions);
9440
9630
  }
9441
9631
  /**
9442
9632
  * Creates a new Data Fabric choice set
@@ -9444,7 +9634,7 @@ class ChoiceSetService extends BaseService {
9444
9634
  * @param name - Choice set name. Must start with a
9445
9635
  * letter, may contain only letters, numbers, and underscores, length
9446
9636
  * 3–100 characters (e.g., `"expenseTypes"`).
9447
- * @param options - Optional choice-set-level settings ({@link ChoiceSetCreateOptions})
9637
+ * @param options - Optional choice-set-level settings ({@link ChoiceSetCreateOptions}) The `folderKey` property is **experimental**.
9448
9638
  * @returns Promise resolving to the UUID of the created choice set
9449
9639
  *
9450
9640
  * @example
@@ -9475,7 +9665,7 @@ class ChoiceSetService extends BaseService {
9475
9665
  folderId: opts.folderKey ?? DATA_FABRIC_TENANT_FOLDER_ID,
9476
9666
  },
9477
9667
  };
9478
- const response = await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.CREATE, payload);
9668
+ const response = await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.CREATE, payload, { headers: createHeaders({ [FOLDER_KEY]: opts.folderKey }) });
9479
9669
  return response.data;
9480
9670
  }
9481
9671
  /**
@@ -9485,7 +9675,7 @@ class ChoiceSetService extends BaseService {
9485
9675
  * the call throws `ValidationError` if both are omitted.
9486
9676
  *
9487
9677
  * @param choiceSetId - UUID of the choice set to update
9488
- * @param options - Metadata fields to change ({@link ChoiceSetUpdateOptions})
9678
+ * @param options - Metadata fields to change ({@link ChoiceSetUpdateOptions}) The `folderKey` property is **experimental**.
9489
9679
  * @returns Promise resolving when the update is complete
9490
9680
  *
9491
9681
  * @example
@@ -9510,12 +9700,13 @@ class ChoiceSetService extends BaseService {
9510
9700
  await this.patch(DATA_FABRIC_ENDPOINTS.CHOICESETS.UPDATE(choiceSetId), {
9511
9701
  ...(options.displayName !== undefined && { displayName: options.displayName }),
9512
9702
  ...(options.description !== undefined && { description: options.description }),
9513
- });
9703
+ }, { headers: createHeaders({ [FOLDER_KEY]: options.folderKey }) });
9514
9704
  }
9515
9705
  /**
9516
9706
  * Deletes a Data Fabric choice set and all its values.
9517
9707
  *
9518
9708
  * @param choiceSetId - UUID of the choice set to delete
9709
+ * @param options - Optional {@link ChoiceSetDeleteByIdOptions} (e.g. `folderKey` for folder-scoped choice sets) The `folderKey` property is **experimental**.
9519
9710
  * @returns Promise resolving when the choice set is deleted
9520
9711
  *
9521
9712
  * @example
@@ -9525,18 +9716,21 @@ class ChoiceSetService extends BaseService {
9525
9716
  * const expenseTypes = allChoiceSets.find(cs => cs.name === 'expense_types');
9526
9717
  *
9527
9718
  * await choicesets.deleteById(expenseTypes.id);
9719
+ *
9720
+ * // Folder-scoped choice set
9721
+ * await choicesets.deleteById(expenseTypes.id, { folderKey: "<folderKey>" });
9528
9722
  * ```
9529
9723
  * @internal
9530
9724
  */
9531
- async deleteById(choiceSetId) {
9532
- await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.DELETE(choiceSetId), {});
9725
+ async deleteById(choiceSetId, options) {
9726
+ await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.DELETE(choiceSetId), {}, { headers: createHeaders({ [FOLDER_KEY]: options?.folderKey }) });
9533
9727
  }
9534
9728
  /**
9535
9729
  * Inserts a single value into a choice set.
9536
9730
  *
9537
9731
  * @param choiceSetId - UUID of the parent choice set
9538
9732
  * @param name - Identifier name of the new value (e.g., `"TRAVEL"`)
9539
- * @param options - Optional fields ({@link ChoiceSetValueInsertOptions})
9733
+ * @param options - Optional fields ({@link ChoiceSetValueInsertOptions}) The `folderKey` property is **experimental**.
9540
9734
  * @returns Promise resolving to the inserted value ({@link ChoiceSetValueInsertResponse})
9541
9735
  *
9542
9736
  * @example
@@ -9549,16 +9743,22 @@ class ChoiceSetService extends BaseService {
9549
9743
  * displayName: 'Travel',
9550
9744
  * });
9551
9745
  * console.log(inserted.id);
9746
+ *
9747
+ * // Folder-scoped choice set: folderKey is required on the wire
9748
+ * await choicesets.insertValueById(expenseTypes.id, 'TRAVEL', {
9749
+ * displayName: 'Travel',
9750
+ * folderKey: "<folderKey>",
9751
+ * });
9552
9752
  * ```
9553
9753
  * @internal
9554
9754
  */
9555
9755
  async insertValueById(choiceSetId, name, options) {
9556
- const choiceSetName = await this.resolveChoiceSetName(choiceSetId);
9756
+ const choiceSetName = await this.resolveChoiceSetName(choiceSetId, options?.folderKey);
9557
9757
  const payload = {
9558
9758
  Name: name,
9559
9759
  ...(options?.displayName !== undefined && { DisplayName: options.displayName }),
9560
9760
  };
9561
- const response = await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.INSERT_BY_NAME(choiceSetName), payload);
9761
+ const response = await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.INSERT_BY_NAME(choiceSetName), payload, { headers: createHeaders({ [FOLDER_KEY]: options?.folderKey }) });
9562
9762
  const camelCased = pascalToCamelCaseKeys(response.data);
9563
9763
  return transformData(camelCased, EntityMap);
9564
9764
  }
@@ -9571,6 +9771,7 @@ class ChoiceSetService extends BaseService {
9571
9771
  * @param choiceSetId - UUID of the parent choice set
9572
9772
  * @param valueId - UUID of the value to update
9573
9773
  * @param displayName - New human-readable display name for the value
9774
+ * @param options - Optional {@link ChoiceSetValueUpdateOptions} — pass `folderKey` for folder-scoped choice sets; omit for tenant-level. The `folderKey` property is **experimental**.
9574
9775
  * @returns Promise resolving to the updated value ({@link ChoiceSetValueUpdateResponse})
9575
9776
  *
9576
9777
  * @example
@@ -9582,13 +9783,18 @@ class ChoiceSetService extends BaseService {
9582
9783
  * const travel = values.items.find(v => v.name === 'TRAVEL');
9583
9784
  *
9584
9785
  * await choicesets.updateValueById(expenseTypes.id, travel.id, 'Business Travel');
9786
+ *
9787
+ * // Folder-scoped choice set: folderKey is required on the wire
9788
+ * await choicesets.updateValueById(expenseTypes.id, travel.id, 'Business Travel', {
9789
+ * folderKey: "<folderKey>",
9790
+ * });
9585
9791
  * ```
9586
9792
  * @internal
9587
9793
  */
9588
- async updateValueById(choiceSetId, valueId, displayName) {
9589
- const choiceSetName = await this.resolveChoiceSetName(choiceSetId);
9794
+ async updateValueById(choiceSetId, valueId, displayName, options) {
9795
+ const choiceSetName = await this.resolveChoiceSetName(choiceSetId, options?.folderKey);
9590
9796
  const payload = { DisplayName: displayName };
9591
- const response = await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.UPDATE_BY_NAME(choiceSetName, valueId), payload);
9797
+ const response = await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.UPDATE_BY_NAME(choiceSetName, valueId), payload, { headers: createHeaders({ [FOLDER_KEY]: options?.folderKey }) });
9592
9798
  const camelCased = pascalToCamelCaseKeys(response.data);
9593
9799
  return transformData(camelCased, EntityMap);
9594
9800
  }
@@ -9597,6 +9803,7 @@ class ChoiceSetService extends BaseService {
9597
9803
  *
9598
9804
  * @param choiceSetId - UUID of the parent choice set
9599
9805
  * @param valueIds - Array of value UUIDs to delete
9806
+ * @param options - Optional {@link ChoiceSetValueDeleteOptions} (e.g. `folderKey` for folder-scoped choice sets) The `folderKey` property is **experimental**.
9600
9807
  * @returns Promise resolving when the values are deleted
9601
9808
  *
9602
9809
  * @example
@@ -9606,14 +9813,20 @@ class ChoiceSetService extends BaseService {
9606
9813
  * const idsToDelete = values.items.slice(0, 2).map(v => v.id);
9607
9814
  *
9608
9815
  * await choicesets.deleteValuesById('<choiceSetId>', idsToDelete);
9816
+ *
9817
+ * // Folder-scoped choice set
9818
+ * await choicesets.deleteValuesById('<choiceSetId>', idsToDelete, { folderKey: "<folderKey>" });
9609
9819
  * ```
9610
9820
  * @internal
9611
9821
  */
9612
- async deleteValuesById(choiceSetId, valueIds) {
9613
- await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.DELETE_BY_ID(choiceSetId), valueIds);
9822
+ async deleteValuesById(choiceSetId, valueIds, options) {
9823
+ await this.post(DATA_FABRIC_ENDPOINTS.CHOICESETS.DELETE_BY_ID(choiceSetId), valueIds, { headers: createHeaders({ [FOLDER_KEY]: options?.folderKey }) });
9614
9824
  }
9615
- async resolveChoiceSetName(choiceSetId) {
9616
- const all = await this.getAll();
9825
+ async resolveChoiceSetName(choiceSetId, folderKey) {
9826
+ // Use the un-tracked helper directly so we don't fire a duplicate
9827
+ // `Choicesets.GetAll` telemetry event for every insertValueById /
9828
+ // updateValueById call.
9829
+ const all = await this.fetchAllChoiceSets(folderKey === undefined ? undefined : { folderKey });
9617
9830
  const match = all.find(cs => cs.id === choiceSetId);
9618
9831
  if (!match) {
9619
9832
  throw new NotFoundError({ message: `Choice set with id '${choiceSetId}' not found.` });
@@ -11382,17 +11595,19 @@ function createTaskMethods(taskData, service) {
11382
11595
  async assign(options) {
11383
11596
  if (!taskData.id)
11384
11597
  throw new Error('Task ID is undefined');
11598
+ const criteria = options.assignmentCriteria !== undefined ? { assignmentCriteria: options.assignmentCriteria } : {};
11385
11599
  const assignmentOptions = 'userId' in options && options.userId !== undefined
11386
- ? { taskId: taskData.id, userId: options.userId }
11387
- : { taskId: taskData.id, userNameOrEmail: options.userNameOrEmail };
11600
+ ? { taskId: taskData.id, userId: options.userId, ...criteria }
11601
+ : { taskId: taskData.id, userNameOrEmail: options.userNameOrEmail, ...criteria };
11388
11602
  return service.assign(assignmentOptions);
11389
11603
  },
11390
11604
  async reassign(options) {
11391
11605
  if (!taskData.id)
11392
11606
  throw new Error('Task ID is undefined');
11607
+ const criteria = options.assignmentCriteria !== undefined ? { assignmentCriteria: options.assignmentCriteria } : {};
11393
11608
  const assignmentOptions = 'userId' in options && options.userId !== undefined
11394
- ? { taskId: taskData.id, userId: options.userId }
11395
- : { taskId: taskData.id, userNameOrEmail: options.userNameOrEmail };
11609
+ ? { taskId: taskData.id, userId: options.userId, ...criteria }
11610
+ : { taskId: taskData.id, userNameOrEmail: options.userNameOrEmail, ...criteria };
11396
11611
  return service.reassign(assignmentOptions);
11397
11612
  },
11398
11613
  async unassign() {
@@ -11705,6 +11920,26 @@ class TaskService extends BaseService {
11705
11920
  * }
11706
11921
  * ]);
11707
11922
  * ```
11923
+ *
11924
+ * @example Group assignment
11925
+ * ```typescript
11926
+ * import { TaskAssignmentCriteria } from '@uipath/uipath-typescript/tasks';
11927
+ *
11928
+ * // Assign to a directory group by userId + criteria — Action Center
11929
+ * // distributes the task across the group's members based on the criteria
11930
+ * const result = await tasks.assign({
11931
+ * taskId: 123,
11932
+ * userId: 456, // a DirectoryGroup id from tasks.getUsers()
11933
+ * assignmentCriteria: TaskAssignmentCriteria.AllUsers
11934
+ * });
11935
+ *
11936
+ * // ...or identify the group by name instead of id
11937
+ * const result2 = await tasks.assign({
11938
+ * taskId: 123,
11939
+ * userNameOrEmail: "My Group",
11940
+ * assignmentCriteria: TaskAssignmentCriteria.AllUsers
11941
+ * });
11942
+ * ```
11708
11943
  */
11709
11944
  async assign(taskAssignments) {
11710
11945
  // Normalize input to array
@@ -11756,6 +11991,25 @@ class TaskService extends BaseService {
11756
11991
  * }
11757
11992
  * ]);
11758
11993
  * ```
11994
+ *
11995
+ * @example Group reassignment
11996
+ * ```typescript
11997
+ * import { TaskAssignmentCriteria } from '@uipath/uipath-typescript/tasks';
11998
+ *
11999
+ * // Reassign to a directory group by userId + criteria
12000
+ * const result = await tasks.reassign({
12001
+ * taskId: 123,
12002
+ * userId: 456, // a DirectoryGroup id from tasks.getUsers()
12003
+ * assignmentCriteria: TaskAssignmentCriteria.AllUsers
12004
+ * });
12005
+ *
12006
+ * // ...or identify the group by name instead of id
12007
+ * const result2 = await tasks.reassign({
12008
+ * taskId: 123,
12009
+ * userNameOrEmail: "My Group",
12010
+ * assignmentCriteria: TaskAssignmentCriteria.AllUsers
12011
+ * });
12012
+ * ```
11759
12013
  */
11760
12014
  async reassign(taskAssignments) {
11761
12015
  // Normalize input to array
@@ -13041,48 +13295,32 @@ class BucketService extends FolderScopedService {
13041
13295
  }
13042
13296
  }, options);
13043
13297
  }
13044
- /**
13045
- * Gets metadata for files in a bucket with optional filtering and pagination
13046
- *
13047
- * The method returns either:
13048
- * - A NonPaginatedResponse with items array (when no pagination parameters are provided)
13049
- * - A PaginatedResponse with navigation cursors (when any pagination parameter is provided)
13050
- *
13051
- * @param bucketId - The ID of the bucket to get file metadata from
13052
- * @param folderId - Required folder ID for organization unit context
13053
- * @param options - Optional parameters for filtering, pagination and access URL generation
13054
- * @returns Promise resolving to the list of file metadata in the bucket or paginated result
13055
- *
13056
- * @example
13057
- * ```typescript
13058
- * import { Buckets } from '@uipath/uipath-typescript/buckets';
13059
- *
13060
- * const buckets = new Buckets(sdk);
13061
- *
13062
- * // Get metadata for all files in a bucket
13063
- * const fileMetadata = await buckets.getFileMetaData(123, 456);
13064
- *
13065
- * // Get file metadata with a specific prefix
13066
- * const fileMetadata = await buckets.getFileMetaData(123, 456, {
13067
- * prefix: '/folder1'
13068
- * });
13069
- *
13070
- * // First page with pagination
13071
- * const page1 = await buckets.getFileMetaData(123, 456, { pageSize: 10 });
13072
- *
13073
- * // Navigate using cursor
13074
- * if (page1.hasNextPage) {
13075
- * const page2 = await buckets.getFileMetaData(123, 456, { cursor: page1.nextCursor });
13076
- * }
13077
- * ```
13078
- */
13079
- async getFileMetaData(bucketId, folderId, options) {
13298
+ async getFileMetaData(bucketId, optionsOrFolderId, legacyOptions) {
13080
13299
  if (!bucketId) {
13081
13300
  throw new ValidationError({ message: 'bucketId is required for getFileMetaData' });
13082
13301
  }
13083
- if (!folderId) {
13084
- throw new ValidationError({ message: 'folderId is required for getFileMetaData' });
13302
+ // Normalize the two overload forms into a single internal shape.
13303
+ let folderId;
13304
+ let folderKey;
13305
+ let folderPath;
13306
+ let restOptions;
13307
+ if (typeof optionsOrFolderId === 'number') {
13308
+ // Deprecated positional form: getFileMetaData(bucketId, folderId, options?)
13309
+ folderId = optionsOrFolderId;
13310
+ restOptions = (legacyOptions ?? {});
13085
13311
  }
13312
+ else {
13313
+ // Preferred form: getFileMetaData(bucketId, options?)
13314
+ const opts = optionsOrFolderId ?? {};
13315
+ ({ folderId, folderKey, folderPath, ...restOptions } = opts);
13316
+ }
13317
+ const headers = resolveFolderHeaders({
13318
+ folderId,
13319
+ folderKey,
13320
+ folderPath,
13321
+ resourceType: 'Buckets.getFileMetaData',
13322
+ fallbackFolderKey: this.config.folderKey,
13323
+ });
13086
13324
  // Transformation function for blob items
13087
13325
  const transformBlobItem = (item) => transformData(item, BucketMap);
13088
13326
  return PaginationHelpers.getAll({
@@ -13098,93 +13336,97 @@ class BucketService extends FolderScopedService {
13098
13336
  tokenParam: BUCKET_TOKEN_PARAMS.TOKEN_PARAM
13099
13337
  }
13100
13338
  },
13101
- excludeFromPrefix: ['prefix'] // Bucket-specific param, not OData
13102
- }, { ...options, folderId });
13339
+ excludeFromPrefix: ['prefix'], // Bucket-specific param, not OData
13340
+ headers,
13341
+ }, restOptions);
13103
13342
  }
13104
- /**
13105
- * Uploads a file to a bucket
13106
- *
13107
- * @param options - Options for file upload including bucket ID, folder ID, path, content, and optional parameters
13108
- * @returns Promise resolving to a response with success status and HTTP status code
13109
- *
13110
- * @example
13111
- * ```typescript
13112
- * import { Buckets } from '@uipath/uipath-typescript/buckets';
13113
- *
13114
- * const buckets = new Buckets(sdk);
13115
- *
13116
- * // Upload a file from browser
13117
- * const file = new File(['file content'], 'example.txt');
13118
- * const result = await buckets.uploadFile({
13119
- * bucketId: 123,
13120
- * folderId: 456,
13121
- * path: '/folder/example.txt',
13122
- * content: file
13123
- * });
13124
- *
13125
- * // In Node env with Buffer
13126
- * const buffer = Buffer.from('file content');
13127
- * const result = await buckets.uploadFile({
13128
- * bucketId: 123,
13129
- * folderId: 456,
13130
- * path: '/folder/example.txt',
13131
- * content: buffer
13132
- * });
13133
- * ```
13134
- */
13135
- async uploadFile(options) {
13136
- const { bucketId, folderId, path, content } = options;
13343
+ async uploadFile(bucketIdOrOptions, path, content, options) {
13344
+ // Normalize the two overload forms into a single internal shape.
13345
+ let bucketId;
13346
+ let resolvedPath;
13347
+ let resolvedContent;
13348
+ let folderId;
13349
+ let folderKey;
13350
+ let folderPath;
13351
+ if (bucketIdOrOptions !== null && typeof bucketIdOrOptions === 'object') {
13352
+ // Deprecated options-only form: uploadFile({ bucketId, path, content, ... })
13353
+ ({ bucketId, path: resolvedPath, content: resolvedContent, folderId, folderKey, folderPath } = bucketIdOrOptions);
13354
+ }
13355
+ else {
13356
+ // Preferred positional form: uploadFile(bucketId, path, content, options?)
13357
+ bucketId = bucketIdOrOptions;
13358
+ resolvedPath = path;
13359
+ resolvedContent = content;
13360
+ const opts = options ?? {};
13361
+ ({ folderId, folderKey, folderPath } = opts);
13362
+ }
13137
13363
  if (!bucketId) {
13138
13364
  throw new ValidationError({ message: 'bucketId is required for uploadFile' });
13139
13365
  }
13140
- if (!folderId) {
13141
- throw new ValidationError({ message: 'folderId is required for uploadFile' });
13142
- }
13143
- if (!path) {
13366
+ if (!resolvedPath) {
13144
13367
  throw new ValidationError({ message: 'path is required for uploadFile' });
13145
13368
  }
13146
- if (!content) {
13369
+ if (!resolvedContent) {
13147
13370
  throw new ValidationError({ message: 'content is required for uploadFile' });
13148
13371
  }
13372
+ const headers = resolveFolderHeaders({
13373
+ folderId,
13374
+ folderKey,
13375
+ folderPath,
13376
+ resourceType: 'Buckets.uploadFile',
13377
+ fallbackFolderKey: this.config.folderKey,
13378
+ });
13149
13379
  const uriResponse = await this._getWriteUri({
13150
13380
  bucketId,
13151
- folderId,
13152
- path,
13381
+ path: resolvedPath,
13382
+ headers,
13153
13383
  });
13154
13384
  // Upload file to the provided URI
13155
- const response = await this._uploadToUri(uriResponse, content);
13385
+ const response = await this._uploadToUri(uriResponse, resolvedContent);
13156
13386
  return {
13157
13387
  success: response.status >= 200 && response.status < 300,
13158
13388
  statusCode: response.status
13159
13389
  };
13160
13390
  }
13161
- /**
13162
- * Gets a direct download URL for a file in the bucket
13163
- *
13164
- * @param options - Contains bucketId, folderId, file path and optional expiry time
13165
- * @returns Promise resolving to blob file access information
13166
- *
13167
- * @example
13168
- * ```typescript
13169
- * import { Buckets } from '@uipath/uipath-typescript/buckets';
13170
- *
13171
- * const buckets = new Buckets(sdk);
13172
- *
13173
- * // Get download URL for a file
13174
- * const fileAccess = await buckets.getReadUri({
13175
- * bucketId: 123,
13176
- * folderId: 456,
13177
- * path: '/folder/file.pdf'
13178
- * });
13179
- * ```
13180
- */
13181
- async getReadUri(options) {
13182
- const { bucketId, folderId, path, expiryInMinutes, ...restOptions } = options;
13391
+ async getReadUri(bucketIdOrOptions, path, options) {
13392
+ // Normalize the two overload forms into a single internal shape.
13393
+ let bucketId;
13394
+ let resolvedPath;
13395
+ let folderId;
13396
+ let folderKey;
13397
+ let folderPath;
13398
+ let expiryInMinutes;
13399
+ let restOptions;
13400
+ if (bucketIdOrOptions !== null && typeof bucketIdOrOptions === 'object') {
13401
+ // Deprecated options-only form: getReadUri({ bucketId, path, ... })
13402
+ const { bucketId: bid, path: p, expiryInMinutes: e, folderId: fid, folderKey: fkey, folderPath: fpath, ...rest } = bucketIdOrOptions;
13403
+ bucketId = bid;
13404
+ resolvedPath = p;
13405
+ expiryInMinutes = e;
13406
+ folderId = fid;
13407
+ folderKey = fkey;
13408
+ folderPath = fpath;
13409
+ restOptions = rest;
13410
+ }
13411
+ else {
13412
+ // Preferred positional form: getReadUri(bucketId, path, options?)
13413
+ bucketId = bucketIdOrOptions;
13414
+ resolvedPath = path;
13415
+ const opts = options ?? {};
13416
+ ({ expiryInMinutes, folderId, folderKey, folderPath, ...restOptions } = opts);
13417
+ }
13418
+ const headers = resolveFolderHeaders({
13419
+ folderId,
13420
+ folderKey,
13421
+ folderPath,
13422
+ resourceType: 'Buckets.getReadUri',
13423
+ fallbackFolderKey: this.config.folderKey,
13424
+ });
13183
13425
  const queryOptions = {
13184
13426
  expiryInMinutes,
13185
13427
  ...addPrefixToKeys(restOptions, ODATA_PREFIX, Object.keys(restOptions))
13186
13428
  };
13187
- return this._getUri(BUCKET_ENDPOINTS.GET_READ_URI(bucketId), bucketId, folderId, path, queryOptions);
13429
+ return this._getUri(BUCKET_ENDPOINTS.GET_READ_URI(bucketId), bucketId, resolvedPath, headers, queryOptions);
13188
13430
  }
13189
13431
  /**
13190
13432
  * Uploads content to the provided URI
@@ -13214,23 +13456,18 @@ class BucketService extends FolderScopedService {
13214
13456
  * Private method to handle common URI request logic
13215
13457
  * @param endpoint - The API endpoint to call
13216
13458
  * @param bucketId - The bucket ID
13217
- * @param folderId - The folder ID
13218
13459
  * @param path - The file path
13460
+ * @param headers - Pre-built folder-context headers (built via `resolveFolderHeaders`)
13219
13461
  * @param queryOptions - Additional query parameters
13220
13462
  * @returns Promise resolving to blob file access information
13221
13463
  */
13222
- async _getUri(endpoint, bucketId, folderId, path, queryOptions = {}) {
13464
+ async _getUri(endpoint, bucketId, path, headers, queryOptions = {}) {
13223
13465
  if (!bucketId) {
13224
13466
  throw new ValidationError({ message: 'bucketId is required for getUri' });
13225
13467
  }
13226
- if (!folderId) {
13227
- throw new ValidationError({ message: 'folderId is required for getUri' });
13228
- }
13229
13468
  if (!path) {
13230
13469
  throw new ValidationError({ message: 'path is required for getUri' });
13231
13470
  }
13232
- // Create headers with required folder ID
13233
- const headers = createHeaders({ [FOLDER_ID]: folderId });
13234
13471
  // Filter out undefined values and build query params
13235
13472
  const queryParams = filterUndefined({
13236
13473
  path,
@@ -13365,16 +13602,16 @@ class BucketService extends FolderScopedService {
13365
13602
  /**
13366
13603
  * Gets a direct upload URL for a file in the bucket
13367
13604
  *
13368
- * @param options - Contains bucketId, folderId, file path, optional expiry time
13605
+ * @param options - Contains bucketId, file path, optional expiry time, and pre-built folder-context headers
13369
13606
  * @returns Promise resolving to blob file access information
13370
13607
  */
13371
13608
  async _getWriteUri(options) {
13372
- const { bucketId, folderId, path, expiryInMinutes, ...restOptions } = options;
13609
+ const { bucketId, path, expiryInMinutes, headers, ...restOptions } = options;
13373
13610
  const queryOptions = {
13374
13611
  expiryInMinutes,
13375
13612
  ...addPrefixToKeys(restOptions, ODATA_PREFIX, Object.keys(restOptions))
13376
13613
  };
13377
- return this._getUri(BUCKET_ENDPOINTS.GET_WRITE_URI(bucketId), bucketId, folderId, path, queryOptions);
13614
+ return this._getUri(BUCKET_ENDPOINTS.GET_WRITE_URI(bucketId), bucketId, path, headers, queryOptions);
13378
13615
  }
13379
13616
  }
13380
13617
  __decorate([
@@ -14838,6 +15075,24 @@ var AgentListSortColumn;
14838
15075
  AgentListSortColumn["QuantityPLTU"] = "QuantityPLTU";
14839
15076
  AgentListSortColumn["FolderPath"] = "FolderPath";
14840
15077
  })(AgentListSortColumn || (AgentListSortColumn = {}));
15078
+ /**
15079
+ * Columns available for ordering / grouping the agent errors list.
15080
+ */
15081
+ var AgentErrorSortColumn;
15082
+ (function (AgentErrorSortColumn) {
15083
+ AgentErrorSortColumn["AgentId"] = "AgentId";
15084
+ AgentErrorSortColumn["AgentName"] = "AgentName";
15085
+ AgentErrorSortColumn["ParentProcessName"] = "ParentProcessName";
15086
+ AgentErrorSortColumn["ErrorTitle"] = "ErrorTitle";
15087
+ AgentErrorSortColumn["FirstSeenStartTime"] = "FirstSeenStartTime";
15088
+ AgentErrorSortColumn["ExecutionCount"] = "ExecutionCount";
15089
+ AgentErrorSortColumn["Type"] = "Type";
15090
+ AgentErrorSortColumn["FirstSeenFolderName"] = "FirstSeenFolderName";
15091
+ AgentErrorSortColumn["FirstSeenFolderPath"] = "FirstSeenFolderPath";
15092
+ AgentErrorSortColumn["LastSeenStartTime"] = "LastSeenStartTime";
15093
+ AgentErrorSortColumn["LastSeenFolderName"] = "LastSeenFolderName";
15094
+ AgentErrorSortColumn["LastSeenFolderPath"] = "LastSeenFolderPath";
15095
+ })(AgentErrorSortColumn || (AgentErrorSortColumn = {}));
14841
15096
 
14842
15097
  /**
14843
15098
  * Types for the Agent Memory metrics service.
@@ -15142,6 +15397,86 @@ var PolicyEvaluationResult;
15142
15397
  PolicyEvaluationResult["SimulatedDeny"] = "SimulatedDeny";
15143
15398
  })(PolicyEvaluationResult || (PolicyEvaluationResult = {}));
15144
15399
 
15400
+ /** Status of a span: whether it completed successfully, with an error, or was not set. */
15401
+ var SpanStatus;
15402
+ (function (SpanStatus) {
15403
+ SpanStatus["Unset"] = "Unset";
15404
+ SpanStatus["Ok"] = "Ok";
15405
+ SpanStatus["Error"] = "Error";
15406
+ /** Span is still in progress. */
15407
+ SpanStatus["Running"] = "Running";
15408
+ /** Span data is hidden from the caller due to tenant/folder permission rules. */
15409
+ SpanStatus["Restricted"] = "Restricted";
15410
+ /** Span was cancelled before completion. */
15411
+ SpanStatus["Cancelled"] = "Cancelled";
15412
+ })(SpanStatus || (SpanStatus = {}));
15413
+ /** Platform source that produced the span. */
15414
+ var SpanSource;
15415
+ (function (SpanSource) {
15416
+ SpanSource["Testing"] = "Testing";
15417
+ SpanSource["Agents"] = "Agents";
15418
+ SpanSource["ProcessOrchestration"] = "ProcessOrchestration";
15419
+ SpanSource["ApiWorkflows"] = "ApiWorkflows";
15420
+ SpanSource["Robots"] = "Robots";
15421
+ SpanSource["ConversationalAgentsService"] = "ConversationalAgentsService";
15422
+ SpanSource["IntegrationServiceTrigger"] = "IntegrationServiceTrigger";
15423
+ SpanSource["Playground"] = "Playground";
15424
+ SpanSource["Governance"] = "Governance";
15425
+ /** Intelligent Experience Platform — unstructured and complex document processing source. */
15426
+ SpanSource["IXPUnstructuredAndComplexDocuments"] = "IXPUnstructuredAndComplexDocuments";
15427
+ /** Agents authored in code (as opposed to visual/no-code designers). */
15428
+ SpanSource["CodedAgents"] = "CodedAgents";
15429
+ /** Intelligent Experience Platform — communications mining source. */
15430
+ SpanSource["IXPCommunicationsMining"] = "IXPCommunicationsMining";
15431
+ /** UiPath Context Grounding — span produced by the Enterprise Context Service for RAG/knowledge-base operations. */
15432
+ SpanSource["EnterpriseContextService"] = "EnterpriseContextService";
15433
+ /** Model Context Protocol — span produced by an MCP server integration. */
15434
+ SpanSource["MCP"] = "MCP";
15435
+ /** Agent-to-Agent — span produced by an A2A protocol call between agents. */
15436
+ SpanSource["A2A"] = "A2A";
15437
+ /** Serverless — span produced by a serverless function execution. */
15438
+ SpanSource["Serverless"] = "Serverless";
15439
+ })(SpanSource || (SpanSource = {}));
15440
+ /** Minimum severity level of events captured in the span. */
15441
+ var SpanVerbosityLevel;
15442
+ (function (SpanVerbosityLevel) {
15443
+ SpanVerbosityLevel["Verbose"] = "Verbose";
15444
+ SpanVerbosityLevel["Trace"] = "Trace";
15445
+ SpanVerbosityLevel["Information"] = "Information";
15446
+ SpanVerbosityLevel["Warning"] = "Warning";
15447
+ SpanVerbosityLevel["Error"] = "Error";
15448
+ SpanVerbosityLevel["Critical"] = "Critical";
15449
+ SpanVerbosityLevel["Off"] = "Off";
15450
+ })(SpanVerbosityLevel || (SpanVerbosityLevel = {}));
15451
+ /** Whether the span was produced during a debug or production runtime. */
15452
+ var SpanExecutionType;
15453
+ (function (SpanExecutionType) {
15454
+ SpanExecutionType["Debug"] = "Debug";
15455
+ SpanExecutionType["Runtime"] = "Runtime";
15456
+ })(SpanExecutionType || (SpanExecutionType = {}));
15457
+ /** Whether the caller has permission to read this span's data. */
15458
+ var SpanPermissionStatus;
15459
+ (function (SpanPermissionStatus) {
15460
+ SpanPermissionStatus["Allow"] = "Allow";
15461
+ /** Some span fields are redacted due to permission constraints (e.g. attributes visible but payload hidden). */
15462
+ SpanPermissionStatus["PartialBlock"] = "PartialBlock";
15463
+ SpanPermissionStatus["Block"] = "Block";
15464
+ })(SpanPermissionStatus || (SpanPermissionStatus = {}));
15465
+ /** Storage provider that created or manages the attachment. */
15466
+ var SpanAttachmentProvider;
15467
+ (function (SpanAttachmentProvider) {
15468
+ SpanAttachmentProvider["Orchestrator"] = "Orchestrator";
15469
+ /** Span attachment stored by the observability platform. */
15470
+ SpanAttachmentProvider["LLMOps"] = "LLMOps";
15471
+ })(SpanAttachmentProvider || (SpanAttachmentProvider = {}));
15472
+ /** Whether the attachment is an input, output, or neither. */
15473
+ var SpanAttachmentDirection;
15474
+ (function (SpanAttachmentDirection) {
15475
+ SpanAttachmentDirection["None"] = "None";
15476
+ SpanAttachmentDirection["In"] = "In";
15477
+ SpanAttachmentDirection["Out"] = "Out";
15478
+ })(SpanAttachmentDirection || (SpanAttachmentDirection = {}));
15479
+
15145
15480
  /**
15146
15481
  * Asset resolution utilities for UiPath Coded Apps
15147
15482
  *
@@ -15217,4 +15552,4 @@ function getAppBase() {
15217
15552
  return getMetaTagContent(UiPathMetaTags.APP_BASE) || '/';
15218
15553
  }
15219
15554
 
15220
- export { AgentListSortColumn, AgentMap, AgentMemoryExecutionType, AssetValueScope, AssetValueType, AuthenticationError, AuthorizationError, BucketOptions, CitationErrorType, ConversationGetAllFilterMap, ConversationMap, DEFAULT_ITEMS_FIELD, DEFAULT_PAGE_SIZE, DEFAULT_TOTAL_COUNT_FIELD, DataDirectionType, DebugMode, index as DuFramework, EntityAggregateFunction, EntityFieldDataType, EntityType, ErrorType, EscalationActionType, EscalationRecipientScope, EscalationTriggerType, ExchangeMap, FeedbackRating, FeedbackStatus, FieldDisplayType, HttpStatus, InputStreamSpeechSensitivity, InstanceFinalStatus, InstanceStatus, InterruptType, JobPriority, JobSourceType, JobState, JobSubState, JobType, JoinType, LogicalOperator$1 as LogicalOperator, MAX_PAGE_SIZE, MessageMap, MessageRole, NetworkError, NotFoundError, PackageSourceType, PackageType, PolicyEvaluationResult, ProcessIncidentSeverity, ProcessIncidentStatus, ProcessIncidentType, QueryFilterOperator, RateLimitError, ReferenceType, RemoteControlAccess, RobotSize, RuntimeType, SLADurationUnit, ServerError, ServerlessJobType, SlaSummaryStatus, SortOrder, StageTaskType, StartStrategy, StopStrategy, TargetFramework, TaskActivityType, TaskPriority, TaskSlaCriteria, TaskSlaStatus, TaskSourceName, TaskStatus, TaskType, TaskUserType, TimeInterval, UiPath, UiPathError, UiPathMetaTags, UserSettingsMap, ValidationError, createAgentWithMethods, createCaseInstanceWithMethods, createCaseWithMethods, createConversationWithMethods, createEntityWithMethods, createJobWithMethods, createProcessInstanceWithMethods, createProcessWithMethods, createTaskWithMethods, getAppBase, getAsset, getErrorDetails, getLimitedPageSize, isAuthenticationError, isAuthorizationError, isNetworkError, isNotFoundError, isRateLimitError, isServerError, isUiPathError, isValidationError, loadFromMetaTags, telemetryClient, track, trackEvent };
15555
+ export { AgentErrorSortColumn, AgentListSortColumn, AgentMap, AgentMemoryExecutionType, SpanExecutionType as AgentTraceExecutionType, AssetValueScope, AssetValueType, AuthenticationError, AuthorizationError, BucketOptions, CitationErrorType, ConversationGetAllFilterMap, ConversationMap, DEFAULT_ITEMS_FIELD, DEFAULT_PAGE_SIZE, DEFAULT_TOTAL_COUNT_FIELD, DataDirectionType, DebugMode, index as DuFramework, EntityAggregateFunction, EntityFieldDataType, EntityType, ErrorType, EscalationActionType, EscalationRecipientScope, EscalationTriggerType, ExchangeMap, FeedbackRating, FeedbackStatus, FieldDisplayType, HttpStatus, InputStreamSpeechSensitivity, InstanceFinalStatus, InstanceStatus, InterruptType, JobPriority, JobSourceType, JobState, JobSubState, JobType, JoinType, LogicalOperator$1 as LogicalOperator, MAX_PAGE_SIZE, MessageMap, MessageRole, NetworkError, NotFoundError, PackageSourceType, PackageType, PolicyEvaluationResult, ProcessIncidentSeverity, ProcessIncidentStatus, ProcessIncidentType, QueryFilterOperator, RateLimitError, ReferenceType, RemoteControlAccess, RobotSize, RuntimeType, SLADurationUnit, ServerError, ServerlessJobType, SlaSummaryStatus, SortOrder, SpanAttachmentDirection, SpanAttachmentProvider, SpanExecutionType, SpanPermissionStatus, SpanSource, SpanStatus, SpanVerbosityLevel, StageTaskType, StartStrategy, StopStrategy, TargetFramework, TaskActivityType, TaskAssignmentCriteria, TaskPriority, TaskSlaCriteria, TaskSlaStatus, TaskSourceName, TaskStatus, TaskType, TaskUserType, TimeInterval, UiPath, UiPathError, UiPathMetaTags, UserSettingsMap, ValidationError, createAgentWithMethods, createCaseInstanceWithMethods, createCaseWithMethods, createConversationWithMethods, createEntityWithMethods, createJobWithMethods, createProcessInstanceWithMethods, createProcessWithMethods, createTaskWithMethods, getAppBase, getAsset, getErrorDetails, getLimitedPageSize, isAuthenticationError, isAuthorizationError, isNetworkError, isNotFoundError, isRateLimitError, isServerError, isUiPathError, isValidationError, loadFromMetaTags, telemetryClient, track, trackEvent };