@dx-do/client 6.3.5 → 7.0.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.
package/dist/index.esm.js CHANGED
@@ -2014,7 +2014,7 @@ utils$3.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => {
2014
2014
 
2015
2015
  utils$3.freezeMethods(AxiosHeaders$1);
2016
2016
 
2017
- const REDACTED = '[REDACTED ****]';
2017
+ const REDACTED$1 = '[REDACTED ****]';
2018
2018
 
2019
2019
  function hasOwnOrPrototypeToJSON(source) {
2020
2020
  if (utils$3.hasOwnProp(source, 'toJSON')) {
@@ -2069,7 +2069,7 @@ function redactConfig(config, redactKeys) {
2069
2069
 
2070
2070
  result = Object.create(null);
2071
2071
  for (const [key, value] of Object.entries(source)) {
2072
- const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED : visit(value);
2072
+ const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED$1 : visit(value);
2073
2073
  if (!utils$3.isUndefined(reducedValue)) {
2074
2074
  result[key] = reducedValue;
2075
2075
  }
@@ -14690,6 +14690,18 @@ var setToStringTag = esSetTostringtag;
14690
14690
  var hasOwn$1 = hasown;
14691
14691
  var populate = populate$1;
14692
14692
 
14693
+ /**
14694
+ * Escape CR, LF, and `"` in a multipart `name`/`filename` parameter, so a field
14695
+ * name or filename can not break out of its header line to inject headers or
14696
+ * smuggle additional parts. Matches the WHATWG HTML multipart/form-data encoding.
14697
+ *
14698
+ * @param {string} str - the parameter value to escape
14699
+ * @returns {string} the escaped value
14700
+ */
14701
+ function escapeHeaderParam(str) {
14702
+ return String(str).replace(/\r/g, '%0D').replace(/\n/g, '%0A').replace(/"/g, '%22');
14703
+ }
14704
+
14693
14705
  /**
14694
14706
  * Create readable "multipart/form-data" streams.
14695
14707
  * Can be used to submit forms
@@ -14855,7 +14867,7 @@ FormData$2.prototype._multiPartHeader = function (field, value, options) {
14855
14867
  var contents = '';
14856
14868
  var headers = {
14857
14869
  // add custom disposition as third element or keep it two elements if not
14858
- 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
14870
+ 'Content-Disposition': ['form-data', 'name="' + escapeHeaderParam(field) + '"'].concat(contentDisposition || []),
14859
14871
  // if no content type. allow it to be empty array
14860
14872
  'Content-Type': [].concat(contentType || [])
14861
14873
  };
@@ -14909,7 +14921,7 @@ FormData$2.prototype._getContentDisposition = function (value, options) { // esl
14909
14921
  }
14910
14922
 
14911
14923
  if (filename) {
14912
- return 'filename="' + filename + '"';
14924
+ return 'filename="' + escapeHeaderParam(filename) + '"';
14913
14925
  }
14914
14926
  };
14915
14927
 
@@ -61933,6 +61945,99 @@ class StrictMap extends Map {
61933
61945
  }
61934
61946
  }
61935
61947
 
61948
+ /**
61949
+ * Redaction helpers for keeping auth tokens and other secrets out of logs.
61950
+ *
61951
+ * Auth tokens live in axios `error.config.headers` — e.g. `Authorization: Bearer
61952
+ * <userToken>` and `X-Asm-Auth: <dxASMToken>`. Anything that serializes a whole
61953
+ * error / config / headers object (`JSON.stringify`, an AxiosError's `.toJSON()`,
61954
+ * `console.log(err)`, or a logger that deep-prints its argument) will spill them.
61955
+ * These helpers strip the secrets before anything is logged or re-thrown.
61956
+ */
61957
+ const REDACTED = '[REDACTED]';
61958
+ /** Lowercased object-key names whose values must never be logged. */
61959
+ const SENSITIVE_KEYS = new Set([
61960
+ 'authorization',
61961
+ 'x-asm-auth',
61962
+ 'cookie',
61963
+ 'set-cookie',
61964
+ 'proxy-authorization',
61965
+ 'usertoken',
61966
+ 'dxasmtoken',
61967
+ 'tenanttoken',
61968
+ 'agenttoken',
61969
+ 'accesstoken',
61970
+ 'refreshtoken',
61971
+ 'password',
61972
+ 'apikey',
61973
+ 'x-api-key',
61974
+ ]);
61975
+ /** Matches `Bearer <token>` anywhere in a string. */
61976
+ const BEARER = /Bearer\s+\S+/gi;
61977
+ function redactString(value) {
61978
+ return value.replace(BEARER, `Bearer ${REDACTED}`);
61979
+ }
61980
+ /**
61981
+ * Returns a deep copy of `value` with sensitive object keys masked and any
61982
+ * `Bearer <token>` substrings scrubbed. Safe to pass anything: it is
61983
+ * circular-reference safe (axios errors are circular), and `Error` instances are
61984
+ * reduced to `{ name, message, stack }` (all scrubbed) so their token-bearing
61985
+ * `config`/`request`/`response` are dropped entirely.
61986
+ */
61987
+ function redactValue(value, seen = new WeakSet()) {
61988
+ if (typeof value === 'string')
61989
+ return redactString(value);
61990
+ if (value === null || typeof value !== 'object')
61991
+ return value;
61992
+ if (seen.has(value))
61993
+ return '[Circular]';
61994
+ seen.add(value);
61995
+ if (Array.isArray(value)) {
61996
+ return value.map((entry) => redactValue(entry, seen));
61997
+ }
61998
+ if (value instanceof Error) {
61999
+ return {
62000
+ name: value.name,
62001
+ message: redactString(value.message),
62002
+ stack: value.stack ? redactString(value.stack) : undefined,
62003
+ };
62004
+ }
62005
+ const out = {};
62006
+ for (const [key, entry] of Object.entries(value)) {
62007
+ out[key] = SENSITIVE_KEYS.has(key.toLowerCase())
62008
+ ? REDACTED
62009
+ : redactValue(entry, seen);
62010
+ }
62011
+ return out;
62012
+ }
62013
+ /**
62014
+ * Strips auth tokens from an (possibly Axios) error IN PLACE and returns it, so it
62015
+ * stays a throwable `Error` with its stack intact but no longer carries the token
62016
+ * in `config.headers`, `response.config.headers`, or the raw request header string.
62017
+ * Non-error / non-axios values are returned unchanged.
62018
+ *
62019
+ * Use this at the axios boundary (a response error interceptor) so every catch,
62020
+ * re-throw, and top-level handler downstream sees a token-free error.
62021
+ */
62022
+ function sanitizeAxiosError(err) {
62023
+ if (!err || typeof err !== 'object')
62024
+ return err;
62025
+ const e = err;
62026
+ // Only touch things that look like axios errors.
62027
+ if (!e.isAxiosError && !e.config && !e.response)
62028
+ return err;
62029
+ if (e.config?.headers)
62030
+ e.config.headers = redactValue(e.config.headers);
62031
+ if (e.response?.config?.headers) {
62032
+ e.response.config.headers = redactValue(e.response.config.headers);
62033
+ }
62034
+ // Node's ClientRequest keeps the raw request (incl. the Authorization line) in `_header`.
62035
+ if (e.request && typeof e.request._header === 'string') {
62036
+ e.request._header = redactString(e.request._header);
62037
+ }
62038
+ return err;
62039
+ }
62040
+
61936
62041
  /**
61937
62042
  * Service for APM agents: query by name/regex, list names/statuses, traces,
61938
62043
  * thread dumps, and license/device reporting.
@@ -64575,12 +64680,15 @@ class AsmService {
64575
64680
  baseURL =
64576
64681
  this.dxSaaSService.dxdoConfiguration.dxConfiguration.dxASMbaseAPIURL;
64577
64682
  }
64578
- this.localClient = createClient({
64683
+ const client = createClient({
64579
64684
  baseURL,
64580
64685
  headers: {
64581
64686
  'X-Asm-Auth': this.dxSaaSService.dxdoConfiguration.dxConfiguration.dxASMToken,
64582
64687
  },
64583
64688
  });
64689
+ // Strip the X-Asm-Auth token from any error before it can be logged/propagated.
64690
+ client.instance.interceptors.response.use((response) => response, (error) => Promise.reject(sanitizeAxiosError(error)));
64691
+ this.localClient = client;
64584
64692
  }
64585
64693
  return this.localClient;
64586
64694
  }
@@ -64593,7 +64701,7 @@ class AsmService {
64593
64701
  return foldersList.data;
64594
64702
  })
64595
64703
  .catch((error) => {
64596
- this.log.error(error);
64704
+ this.log.error('ASM foldersList failed', error instanceof Error ? error.message : String(error));
64597
64705
  throw error;
64598
64706
  });
64599
64707
  }
@@ -64701,6 +64809,23 @@ class AuthorizationService {
64701
64809
  }
64702
64810
  return raw;
64703
64811
  }
64812
+ /**
64813
+ * Returns true if a user with the given identifier exists on the tenant.
64814
+ * Matches case-insensitively against each account's `userId` (the login
64815
+ * principal — usually the upper-cased email) and any of its `emailIds`.
64816
+ *
64817
+ * @remarks Fetches the user list via {@link getUsersV2} (a single page, up
64818
+ * to 5000 accounts). A tenant with more users than that could yield a false
64819
+ * negative for an account beyond the page.
64820
+ */
64821
+ async userExists(userIdentifier) {
64822
+ const needle = userIdentifier.trim().toUpperCase();
64823
+ if (needle.length === 0)
64824
+ return false;
64825
+ const response = await this.getUsersV2(1, 5000);
64826
+ return response.users.some((user) => (user.userId ?? '').toUpperCase() === needle ||
64827
+ (user.emailIds ?? []).some((email) => (email.emailAddr ?? '').toUpperCase() === needle));
64828
+ }
64704
64829
  /** Reformats a cohort id to upper-cased, dashed GUID form (`8-4-4-4-12`). */
64705
64830
  toGuidCohortId(cohortId) {
64706
64831
  const hex = cohortId.replace(/-/g, '').toLowerCase();
@@ -70229,6 +70354,9 @@ class DxSaasService {
70229
70354
  .replace(/-/g, '')
70230
70355
  .toLowerCase();
70231
70356
  this.initializeProxyIfNecessary();
70357
+ // Strip auth tokens from any error this client surfaces, so nothing downstream
70358
+ // (handleAxiosError, re-throws, top-level catches) can log the Authorization header.
70359
+ this._httpClient.interceptors.response.use((response) => response, (error) => Promise.reject(sanitizeAxiosError(error)));
70232
70360
  if (process$1.env.DXDO_LOG_REQUESTS) {
70233
70361
  log.info('Logging requests');
70234
70362
  const requestLogFile = process$1.env.DXDO_REQUEST_LOG_FILE ??
@@ -71188,20 +71316,21 @@ class DxSaasService {
71188
71316
  }
71189
71317
  static handleAxiosError(reason, isStream = false) {
71190
71318
  if (reason.isAxiosError && reason.response) {
71191
- DxSaasService.staticLog.debug('[Axios Error DEBUG]', reason.toJSON());
71192
- DxSaasService.staticLog.error('[Axios Error BASIC]', `${reason.request.method} ${reason.config?.url} ${JSON.stringify(reason.config?.params ?? {})}`);
71193
- DxSaasService.staticLog.error('[Axios Error HEADER]', `${JSON.stringify(reason.config?.headers)}`);
71194
- DxSaasService.staticLog.error('[Axios Error BODY]', reason.config?.data ?? {});
71319
+ // NB: request headers are already token-scrubbed by the response interceptor;
71320
+ // redactValue is belt-and-suspenders in case this is ever called off-path.
71321
+ DxSaasService.staticLog.debug('[Axios Error DEBUG]', redactValue(reason.toJSON()));
71322
+ DxSaasService.staticLog.error('[Axios Error BASIC]', `${reason.request.method} ${reason.config?.url} ${JSON.stringify(redactValue(reason.config?.params ?? {}))}`);
71323
+ DxSaasService.staticLog.error('[Axios Error BODY]', redactValue(reason.config?.data ?? {}));
71195
71324
  if (isStream) {
71196
71325
  DxSaasService.staticLog.error(`[Axios Error STATUS] ${reason.response.status} / ${reason.message} `);
71197
71326
  }
71198
71327
  else {
71199
- DxSaasService.staticLog.error(`[Axios Error STATUS] ${reason.response.status} / ${reason.message} / ${JSON.stringify(reason.response.data)}`);
71328
+ DxSaasService.staticLog.error(`[Axios Error STATUS] ${reason.response.status} / ${reason.message} / ${JSON.stringify(redactValue(reason.response.data))}`);
71200
71329
  }
71201
71330
  return new SimpleHTTPError(reason.response.status, reason.message);
71202
71331
  }
71203
71332
  else
71204
- return reason; // stupid.
71333
+ return sanitizeAxiosError(reason); // scrub before propagating
71205
71334
  }
71206
71335
  static async legacyAuth(v3Configuration) {
71207
71336
  return this.legacyAxaRequest(v3Configuration, 'GET', 'ess/security/v1/me', false, false);
@@ -78706,6 +78835,419 @@ class DataStoreNASSService {
78706
78835
  }
78707
78836
  }
78708
78837
 
78838
+ /**
78839
+ * Service Universe models — an **OI-owned universe (view) scoped to a curated
78840
+ * list of services**, managed through the tenant `views/*` API. The wire shape
78841
+ * here matches the real server payload (verified against a live tenant): `views`
78842
+ * is an **array** of typed sub-views and access grants carry a `permissions`
78843
+ * array. (This is deliberately distinct from the object-shaped `ViewBodySchema`
78844
+ * in `./query`, which models a different, unused surface.)
78845
+ */
78846
+ /** Access permission granted on a service universe. */
78847
+ const ServiceUniversePermissionSchema = z
78848
+ .enum(['READ', 'WRITE'])
78849
+ .describe('Permission granted on the universe');
78850
+ /** A single user or group access grant on a service universe. */
78851
+ const ServiceUniverseAccessEntrySchema = z.looseObject({
78852
+ name: z.string().describe('User email or group name being granted access'),
78853
+ permissions: z
78854
+ .array(ServiceUniversePermissionSchema)
78855
+ .optional()
78856
+ .describe('Permissions granted to this principal (READ and/or WRITE)'),
78857
+ canManage: z
78858
+ .boolean()
78859
+ .optional()
78860
+ .describe('Whether the principal may manage (re-share) the universe'),
78861
+ attributeInclude: z
78862
+ .array(z.unknown())
78863
+ .optional()
78864
+ .describe('Attribute-based include scoping for this grant'),
78865
+ attributeExclude: z
78866
+ .array(z.unknown())
78867
+ .optional()
78868
+ .describe('Attribute-based exclude scoping for this grant'),
78869
+ isValid: z
78870
+ .array(z.string())
78871
+ .optional()
78872
+ .describe('Server-side validation hints for the principal (UI-supplied)'),
78873
+ });
78874
+ /** Access policy for a service universe (per-user and per-group grants). */
78875
+ const ServiceUniverseAccessSchema = z.looseObject({
78876
+ users: z
78877
+ .array(ServiceUniverseAccessEntrySchema)
78878
+ .optional()
78879
+ .describe('Per-user access grants'),
78880
+ groups: z
78881
+ .array(ServiceUniverseAccessEntrySchema)
78882
+ .optional()
78883
+ .describe('Per-group access grants'),
78884
+ });
78885
+ /** The TAS scoping of a service universe — its inner filter selects the services. */
78886
+ const ServiceUniverseTasSpecSchema = z.looseObject({
78887
+ filter: TasFilterSchema.optional().describe('TAS filter selecting the topology; for a service universe this is a SERVICE-op filter over the chosen service names'),
78888
+ includeMetricFilter: z
78889
+ .boolean()
78890
+ .optional()
78891
+ .describe('Whether a metric filter is applied; defaults to false'),
78892
+ projection: z
78893
+ .string()
78894
+ .optional()
78895
+ .describe("Projection mode, e.g. 'NO_TYPE'"),
78896
+ projectionFilter: z
78897
+ .looseObject({
78898
+ attributes: z
78899
+ .array(z.string())
78900
+ .optional()
78901
+ .describe('Attributes to project, e.g. ["name"]'),
78902
+ })
78903
+ .optional()
78904
+ .describe('Which vertex attributes to project'),
78905
+ });
78906
+ /** A TAS sub-view of a service universe. */
78907
+ const ServiceUniverseTasViewSchema = z.looseObject({
78908
+ type: z.literal('tas').describe('Discriminator: topology (TAS) sub-view'),
78909
+ filter: ServiceUniverseTasSpecSchema.describe('TAS scoping for this sub-view'),
78910
+ permissions: z
78911
+ .array(ServiceUniversePermissionSchema)
78912
+ .optional()
78913
+ .describe('Permissions on this sub-view'),
78914
+ });
78915
+ /** A NASS (metrics) sub-view of a service universe. */
78916
+ const ServiceUniverseNassViewSchema = z.looseObject({
78917
+ type: z.literal('nass').describe('Discriminator: metrics (NASS) sub-view'),
78918
+ filter: z
78919
+ .looseObject({
78920
+ filter: z
78921
+ .looseObject({ op: z.string().describe('Filter op, e.g. "ALL"') })
78922
+ .optional()
78923
+ .describe('NASS filter tree'),
78924
+ serviceFilter: z
78925
+ .unknown()
78926
+ .optional()
78927
+ .describe('Optional service-scoped NASS filter'),
78928
+ })
78929
+ .optional()
78930
+ .describe('NASS scoping for this sub-view'),
78931
+ permissions: z
78932
+ .array(ServiceUniversePermissionSchema)
78933
+ .optional()
78934
+ .describe('Permissions on this sub-view'),
78935
+ });
78936
+ /** A service universe sub-view: TAS (service-scoped topology) or NASS (metrics). */
78937
+ const ServiceUniverseViewSchema = z
78938
+ .discriminatedUnion('type', [
78939
+ ServiceUniverseTasViewSchema,
78940
+ ServiceUniverseNassViewSchema,
78941
+ ])
78942
+ .describe('A TAS or NASS sub-view of the universe');
78943
+ /** Metadata for a service universe. */
78944
+ const ServiceUniverseAttributesSchema = z.looseObject({
78945
+ owner: z
78946
+ .string()
78947
+ .optional()
78948
+ .describe("Owning product; service universes are 'OI'"),
78949
+ label: z.string().describe('Human-readable universe name'),
78950
+ description: z.string().optional().describe('Universe description'),
78951
+ });
78952
+ /**
78953
+ * The create/update request body for a service universe
78954
+ * (`POST/PUT views/view`).
78955
+ */
78956
+ const ServiceUniverseBodySchema = z.looseObject({
78957
+ inactive: z
78958
+ .boolean()
78959
+ .optional()
78960
+ .describe('Whether the universe is inactive (hidden from active use)'),
78961
+ attributes: ServiceUniverseAttributesSchema.describe('Universe metadata (owner, label, description)'),
78962
+ access: ServiceUniverseAccessSchema.optional().describe('Access policy (users/groups)'),
78963
+ views: z
78964
+ .array(ServiceUniverseViewSchema)
78965
+ .describe('The TAS + NASS sub-views defining the universe scope'),
78966
+ });
78967
+ /**
78968
+ * A summary row from `GET oi/v2/universe/getAllUniverseList`.
78969
+ */
78970
+ const ServiceUniverseListItemSchema = z.looseObject({
78971
+ id: z.string().describe('Universe (view) id, e.g. "VIEW1821"'),
78972
+ name: z.string().optional().describe('Universe label'),
78973
+ description: z.string().optional().describe('Universe description'),
78974
+ owner: z
78975
+ .string()
78976
+ .optional()
78977
+ .describe("Owning product; service universes are 'OI'"),
78978
+ inactive: z.boolean().optional().describe('Whether the universe is inactive'),
78979
+ });
78980
+ const ServiceUniverseListResponseSchema = z
78981
+ .array(ServiceUniverseListItemSchema)
78982
+ .describe('All universes returned by getAllUniverseList');
78983
+ /**
78984
+ * A full service universe as returned by `POST views/queryView` (op:ID).
78985
+ * Loosely modeled — the detail response echoes the body plus server-resolved
78986
+ * fields (viewId, resolved access).
78987
+ */
78988
+ const ServiceUniverseSchema = z.looseObject({
78989
+ viewId: z.string().optional().describe('Server-assigned view id'),
78990
+ inactive: z.boolean().optional().describe('Whether the universe is inactive'),
78991
+ attributes: ServiceUniverseAttributesSchema.optional().describe('Universe metadata'),
78992
+ access: ServiceUniverseAccessSchema.optional().describe('Access policy'),
78993
+ views: z
78994
+ .array(z.unknown())
78995
+ .optional()
78996
+ .describe('The universe sub-views (TAS/NASS)'),
78997
+ });
78998
+ /** Response wrapper for `POST views/queryView`. */
78999
+ const ServiceUniverseQueryResponseSchema = z.looseObject({
79000
+ views: z
79001
+ .array(ServiceUniverseSchema)
79002
+ .optional()
79003
+ .describe('Universes matching the query filter'),
79004
+ });
79005
+
79006
+ /**
79007
+ * Service for **Service Universes** — OI-owned universes (views) scoped to a
79008
+ * curated list of services, managed via the tenant `views/*` API plus the OI
79009
+ * universe-list endpoint. The "View sample" preview runs the SERVICE-op filter
79010
+ * as a TAS graph query.
79011
+ *
79012
+ * @example
79013
+ * ```ts
79014
+ * const svc = new ServiceUniverseService(dxSaasService, log);
79015
+ * const body = ServiceUniverseService.buildBody({ label: 'IoT', serviceNames: ['IoT RDS'] });
79016
+ * await svc.createServiceUniverse(body);
79017
+ * ```
79018
+ */
79019
+ class ServiceUniverseService {
79020
+ dxSaasService;
79021
+ log;
79022
+ constructor(dxSaasService, log) {
79023
+ this.dxSaasService = dxSaasService;
79024
+ this.log = log;
79025
+ }
79026
+ /**
79027
+ * Lists service universes (OI-owned) via
79028
+ * `GET oi/v2/universe/getAllUniverseList` (VIEWALL).
79029
+ *
79030
+ * @remarks Response-validated (mismatch → `log.warn`, raw still returned).
79031
+ */
79032
+ async listServiceUniverses() {
79033
+ const raw = await this.dxSaasService.oiGet('oi/v2/universe/getAllUniverseList');
79034
+ const result = ServiceUniverseListResponseSchema.safeParse(raw);
79035
+ if (!result.success) {
79036
+ this.log.warn('ServiceUniverseListResponse validation warning:', result.error.message);
79037
+ }
79038
+ const all = raw ?? [];
79039
+ return all.filter((u) => (u.owner ?? '').toUpperCase() === 'OI');
79040
+ }
79041
+ /**
79042
+ * Returns a single service universe by its view id via
79043
+ * `POST views/queryView` (op:ID). Throws if not exactly one match.
79044
+ */
79045
+ async getServiceUniverse(viewId) {
79046
+ const raw = await this.dxSaasService.tenantPost('views/queryView', {
79047
+ filter: { op: 'ID', ids: [viewId], input: { op: 'ALL' } },
79048
+ includeInactive: true,
79049
+ });
79050
+ const result = ServiceUniverseQueryResponseSchema.safeParse(raw);
79051
+ if (!result.success) {
79052
+ this.log.warn('ServiceUniverseQueryResponse validation warning:', result.error.message);
79053
+ }
79054
+ const views = raw.views ?? [];
79055
+ if (views.length !== 1) {
79056
+ throw new Error(`Expected exactly one universe with viewId '${viewId}', found ${views.length}.`);
79057
+ }
79058
+ return views[0];
79059
+ }
79060
+ /**
79061
+ * Creates a service universe via `POST views/view`.
79062
+ *
79063
+ * @throws ZodError if the body fails schema validation.
79064
+ */
79065
+ async createServiceUniverse(body) {
79066
+ ServiceUniverseBodySchema.parse(body);
79067
+ return this.dxSaasService.tenantPost('views/view', body);
79068
+ }
79069
+ /**
79070
+ * Updates a service universe via `PUT views/view/{viewId}`.
79071
+ *
79072
+ * @throws ZodError if the body fails schema validation.
79073
+ */
79074
+ async updateServiceUniverse(viewId, body) {
79075
+ ServiceUniverseBodySchema.parse(body);
79076
+ return this.dxSaasService.tenantPut(`views/view/${encodeURIComponent(viewId)}`, body);
79077
+ }
79078
+ /**
79079
+ * PUTs a full universe body to `views/view/{viewId}` **without** re-validating
79080
+ * it against the client schema. Used by the access commands, which round-trip
79081
+ * the universe's existing views verbatim (a UI-created universe may carry view
79082
+ * shapes our builder wouldn't reconstruct); only the `access` policy changes.
79083
+ */
79084
+ async putServiceUniverse(viewId, body) {
79085
+ return this.dxSaasService.tenantPut(`views/view/${encodeURIComponent(viewId)}`, body);
79086
+ }
79087
+ /** Deletes a service universe via `DELETE views/view/{viewId}`. */
79088
+ async deleteServiceUniverse(viewId) {
79089
+ return this.dxSaasService.tenantDelete(`views/view/${encodeURIComponent(viewId)}`);
79090
+ }
79091
+ /**
79092
+ * Checks which of the given service names actually exist on the tenant, via
79093
+ * `GET oi/v2/sa/services/{name}` per name. A 404 means the service does not
79094
+ * exist; any other error is re-thrown (so a transient failure is never
79095
+ * silently reported as "missing").
79096
+ *
79097
+ * @throws Error if any name could not be verified for a non-404 reason.
79098
+ */
79099
+ async resolveServiceNames(serviceNames) {
79100
+ const existing = [];
79101
+ const missing = [];
79102
+ const errored = [];
79103
+ await dist$1.PromisePool.for(serviceNames)
79104
+ .withConcurrency(5)
79105
+ .process(async (name) => {
79106
+ try {
79107
+ await this.dxSaasService.oiGet(`oi/v2/sa/services/${encodeURIComponent(name)}`, { subservices: false });
79108
+ existing.push(name);
79109
+ }
79110
+ catch (err) {
79111
+ if (err.httpCode === 404) {
79112
+ missing.push(name);
79113
+ }
79114
+ else {
79115
+ errored.push({ name, error: err });
79116
+ }
79117
+ }
79118
+ });
79119
+ if (errored.length > 0) {
79120
+ const first = errored[0].error;
79121
+ const reason = first instanceof Error ? first.message : String(first);
79122
+ throw new Error(`Could not verify ${errored.length} service name(s) (${errored
79123
+ .map((e) => e.name)
79124
+ .join(', ')}): ${reason}`);
79125
+ }
79126
+ return { existing, missing };
79127
+ }
79128
+ /**
79129
+ * "View sample": runs the SERVICE-scoped filter as a TAS graph query
79130
+ * (`POST tas/graph/query`) and returns the matching entities — the dry-run
79131
+ * preview of what a universe over `serviceNames` would contain.
79132
+ *
79133
+ * @remarks Response-validated (mismatch → `log.warn`, raw still returned).
79134
+ */
79135
+ async sampleServices(serviceNames, options = {}) {
79136
+ const query = {
79137
+ filter: {
79138
+ op: 'OR',
79139
+ input: [
79140
+ {
79141
+ op: 'SERVICE',
79142
+ values: serviceNames,
79143
+ includeServiceHierarchy: options.includeServiceHierarchy ?? true,
79144
+ excludeSubServices: options.excludeSubServices ?? false,
79145
+ },
79146
+ ],
79147
+ },
79148
+ authorizationView: 'VIEWALL',
79149
+ schema: 'SA',
79150
+ limit: options.limit ?? 200,
79151
+ };
79152
+ TasQuerySchema.parse(query);
79153
+ const raw = await this.dxSaasService.tenantPost('tas/graph/query', query);
79154
+ const result = TasGraphSchema.safeParse(raw);
79155
+ if (!result.success) {
79156
+ this.log.warn('ServiceUniverse sample (TasGraph) validation warning:', result.error.message);
79157
+ }
79158
+ return raw;
79159
+ }
79160
+ /**
79161
+ * Builds a service universe request body: a SERVICE-scoped TAS sub-view over
79162
+ * `serviceNames` (or an ALL view when empty) plus an ALL NASS sub-view. Mirrors
79163
+ * the shape the DXO2 Service Universe UI submits.
79164
+ */
79165
+ /** A user/group access grant: READ+WRITE, no attribute scoping (per current UX). */
79166
+ static accessEntry(name, canManage) {
79167
+ return {
79168
+ name,
79169
+ permissions: ['READ', 'WRITE'],
79170
+ canManage,
79171
+ attributeInclude: [],
79172
+ attributeExclude: [],
79173
+ };
79174
+ }
79175
+ /**
79176
+ * Returns a copy of `existing` with a user/group access grant added (or
79177
+ * updated in place if the principal already has a grant). Preserves the
79178
+ * universe's server-managed fields and views verbatim — only `access`
79179
+ * changes. Pass exactly one of `user` / `group`.
79180
+ */
79181
+ static withAccessEntry(existing, target) {
79182
+ const isGroup = !!target.group;
79183
+ const name = (target.user ?? target.group);
79184
+ const users = [...(existing.access?.users ?? [])];
79185
+ const groups = [...(existing.access?.groups ?? [])];
79186
+ const list = isGroup ? groups : users;
79187
+ const next = list.filter((e) => e.name !== name);
79188
+ next.push(this.accessEntry(name, target.canManage));
79189
+ const access = isGroup
79190
+ ? { users, groups: next }
79191
+ : { users: next, groups };
79192
+ return {
79193
+ ...existing,
79194
+ access,
79195
+ };
79196
+ }
79197
+ /**
79198
+ * Returns a copy of `existing` with a user/group access grant removed.
79199
+ * Preserves everything else verbatim. Pass exactly one of `user` / `group`.
79200
+ */
79201
+ static withoutAccessEntry(existing, target) {
79202
+ const isGroup = !!target.group;
79203
+ const name = (target.user ?? target.group);
79204
+ const users = (existing.access?.users ?? []).filter((e) => isGroup || e.name !== name);
79205
+ const groups = (existing.access?.groups ?? []).filter((e) => !isGroup || e.name !== name);
79206
+ return {
79207
+ ...existing,
79208
+ access: { users, groups },
79209
+ };
79210
+ }
79211
+ static buildBody(input) {
79212
+ const { label, description, serviceNames, inactive, includeServiceHierarchy, excludeSubServices, access, } = input;
79213
+ const tasFilter = serviceNames.length === 0
79214
+ ? { op: 'ALL' }
79215
+ : {
79216
+ op: 'SERVICE',
79217
+ values: serviceNames,
79218
+ includeServiceHierarchy: includeServiceHierarchy ?? true,
79219
+ excludeSubServices: excludeSubServices ?? false,
79220
+ };
79221
+ return {
79222
+ inactive: inactive ?? false,
79223
+ attributes: { owner: 'OI', label, description: description ?? '' },
79224
+ access: access ?? { groups: [], users: [] },
79225
+ views: [
79226
+ {
79227
+ type: 'tas',
79228
+ filter: {
79229
+ filter: tasFilter,
79230
+ includeMetricFilter: false,
79231
+ projection: 'NO_TYPE',
79232
+ projectionFilter: { attributes: ['name'] },
79233
+ },
79234
+ permissions: ['READ', 'WRITE'],
79235
+ },
79236
+ {
79237
+ type: 'nass',
79238
+ filter: {
79239
+ filter: { op: 'ALL' },
79240
+ serviceFilter: serviceNames.length === 0
79241
+ ? undefined
79242
+ : { op: 'SERVICE', values: serviceNames },
79243
+ },
79244
+ permissions: ['READ', 'WRITE'],
79245
+ },
79246
+ ],
79247
+ };
79248
+ }
79249
+ }
79250
+
78709
79251
  var NullSimpleLog = Logging.NullSimpleLog;
78710
79252
  /**
78711
79253
  * Creates and returns a container of all DX client services (ACC, alerts, alarms,
@@ -78740,6 +79282,7 @@ function createServiceMonolith(dxDoConfiguration, log = new NullSimpleLog()) {
78740
79282
  dxDataStoreNASSService: new DataStoreNASSService(dxSaaSService, log),
78741
79283
  dxDataStoreNASSQLService: new DataStoreNASSQLService(dxSaaSService, log),
78742
79284
  dxDataStoreTASService: new DataStoreTASService(dxSaaSService, log),
79285
+ dxServiceUniverseService: new ServiceUniverseService(dxSaaSService, log),
78743
79286
  dxEventService: new EventService(dxSaaSService, log),
78744
79287
  dxExperienceService: new ExperienceService(dxSaaSService, log),
78745
79288
  dxFeaturesService: new DataStoreFeaturesService(dxSaaSService, log),
@@ -78773,5 +79316,5 @@ function createServiceMonolith(dxDoConfiguration, log = new NullSimpleLog()) {
78773
79316
  };
78774
79317
  }
78775
79318
 
78776
- export { AXAActivities, AccService, AgentService, AgentTrace, AlarmEnrichment, AlarmEnrichmentFilter, AlarmService, AlertDefinitionResponse, AlertResponse, AlertResponseV2, AlertService, AlignmentSchema, ApmUniverseService, AsmService, AttributeExpressionComparatorSchema, AttributeExpressionOperatorSchema, AttributeExpressionSchema, AttributeFilterOperator, AttributeNameAllSpecifierSchema, AttributeNameAndSpecifierSchema, AttributeNameAnyNumericSpecifierSchema, AttributeNameAttributeSpecifierSchema, AttributeNameChildrenSpecifierSchema, AttributeNameExactSpecifierSchema, AttributeNameFolderSpecifierSchema, AttributeNameNoneSpecifierSchema, AttributeNameNotSpecifierSchema, AttributeNameOperatorSpecifierSchema, AttributeNameOrSpecifierSchema, AttributeNameRegExSpecifierSchema, AttributeNameSpecifierSchema, AttributeNameTypeSpecifierSchema, AttributeService, AttributeValueAsFieldSchema, AuthorizationService, AxaService, BlobAllFilterSchema, BlobAsyncCommandSchema, BlobAsyncDeleteSchemaCommandSchema, BlobAsyncResultEntrySchema, BlobAsyncResultRequestSchema, BlobAsyncResultResponseSchema, BlobAsyncResultStateSchema, BlobAttributeExpressionSchema, BlobAttributeFilterSchema, BlobAttributesSchema, BlobBulkDeleteEntrySchema, BlobBulkDeleteRequestSchema, BlobBulkDeleteResponseSchema, BlobBulkItemSchema, BlobBulkStoreRequestSchema, BlobBulkStoreResponseSchema, BlobDeleteParamsSchema, BlobDeleteResponseSchema, BlobDeleteSchemaResultSchema, BlobExecuteAsyncRequestSchema, BlobExecuteAsyncResponseSchema, BlobFetchParamsSchema, BlobFileEnvelopeSchema, BlobFilterSchema, BlobMetadataSchema, BlobQueryRequestSchema, BlobQueryResponseSchema, BlobSchemaItemSchema, BlobSchemaListRequestSchema, BlobSchemaListResponseSchema, BlobService, BlobStoreParamsSchema, BlobStoreResponseSchema, CalendarIntervalSchema, ChannelService, DEFAULT_EXPERIENCE_REQUEST_BODY, DXChannel, DashboardPermissionsUpdateRequest, DashboardSearch, DashboardService, DataStoreAuditService, DataStoreAuthViewsService, DataStoreBlobStorageService, DataStoreFeaturesService, DataStoreMetricsMetadataService, DataStoreNASSQLService, DataStoreNASSService, DataStoreStatesService, DataStoreTASService, DataStoreTokensService, DxSaasService, DxoiService, EdgeNumericIdSchema, EventService, ExperienceService, FillModeSchema, FilterOperation, FolderNameAllSpecifierSchema, FolderNameAndSpecifierSchema, FolderNameChildrenSpecifierSchema, FolderNameExactSpecifierSchema, FolderNameNoneSpecifierSchema, FolderNameNotSpecifierSchema, FolderNameOrSpecifierSchema, FolderNameRegExSpecifierSchema, FolderNameSpecifierSchema, GraphResponse, GraphService, Inventory, InventoryAttributes, InventoryService, JoinTypeSchema, JsExtensionService, LogIngest, LogQuery, LogsService, METRIC_TYPE_ENUM, METRIC_TYPE_ENUM_NAMES, METRIC_TYPE_REGION, MServe, MaintenanceBulkDeleteResponseSchema, MaintenanceCreateRequestSchema, MaintenanceCreateResponseSchema, MaintenanceDeleteRequestSchema, MaintenanceDetailSchema, MaintenanceExcludedMemberSchema, MaintenanceFilterLeafSchema, MaintenanceFilterSchema, MaintenanceMemberSchema, MaintenanceMemberSourceSchema, MaintenanceMemberTypeSchema, MaintenancePreviewRequestSchema, MaintenancePreviewResponseSchema, MaintenanceScheduleSchema, MaintenanceSearchRequestSchema, MaintenanceSearchResponseSchema, MaintenanceService, MaintenanceSummarySchema, ManagementModuleIdSchema, ManagementModuleService, MatchType, MetadataMetricQueryResponseV2Schema, MetadataMetricQuerySchema, MetricAttributeSchema, MetricBatchService, MetricFolderSchema, MetricGroupingService, MetricRegisterRequestSchema, MetricRegisterResponseSchema, MetricRegisterSchema, MetricRegisterSourceSchema, MetricTypeEnumNameSchema, NASS, NASSService, NassDatapointSchema, NassExtensionDatapointSchema, NassRegularDatapointSchema, NassStoreRequestSchema, NassStoreResponseSchema, NassValueTypeSchema, NotificationService, NumericOperatorSchema, O2NotificationService, O2UniverseService, OIAlarm, OIService, OIUsersV2, OperatorSchema, PerspectiveService, PlatformAlertService, PlatformFilters, PlatformManagementModuleService, PlatformMetricGroupingService, QuantileMethodSchema, QueryAllSpecifierSchema, QueryAndSpecifierSchema, QueryAttributeExpressionSchema, QueryAttributeSpecifierSchema, QueryColumnTypeSpecSchema, QueryFilterPredicateSpecSchema, QueryFunctionSpecSchema, QueryHintForceRangeSchema, QueryHintSchema, QueryIdSpecifierSchema, QueryMetricGroupSpecifierSchema, QueryMetricIdSchema, QueryNoneSpecifierSchema, QueryNotSpecifierSchema, QueryOrSpecifierSchema, QueryRangeSpecSchema, QueryRequestSchema, QueryResultSchema, QuerySpecSpecifierSchema, QuerySpecifierSchema, RecurrencePattern, SLIService, SQLService, ServiceExport, ServiceFilterSpecifierSchema, ServiceService, ServiceTransform, SessionService, SimpleHTTPError, SituationLifecycle, SituationService, Situations, SliFilterSchema, SliGroupSchema, SliSaveRequestSchema, SliSaveResponseSchema, SliSearchRequestSchema, SliSearchResponseSchema, SourceNameAllSpecifierSchema, SourceNameAndSpecifierSchema, SourceNameExactSpecifierSchema, SourceNameNoneSpecifierSchema, SourceNameNotSpecifierSchema, SourceNameOrSpecifierSchema, SourceNamePartOperatorSpecifierSchema, SourceNameRegExSpecifierSchema, SourceNameSpecifierSchema, TAS, TASGraph, TASService, TasAddFlowsFilterSchema, TasAddTransitioningEdgesFilterSchema, TasAddWireContextFilterSchema, TasAddWiresFilterSchema, TasAllFilterSchema, TasAnalyticBaseSchema, TasAnalyticResultSchema, TasAndFilterSchema, TasAttributeAlertStatisticsSchema, TasAttributeFilterModeSchema, TasAttributeFilterSchema, TasAttributeNameSchema, TasAttributeTypeSchema, TasCollectAttributeNamesFilterSchema, TasCollectAttributeNamesResultSchema, TasCollectAttributeResultSchema, TasCollectAttributesFilterSchema, TasCollectCardInfoFilterSchema, TasCollectCardInfoResultSchema, TasCollectCardInfoTierSchema, TasCollectCountsFilterSchema, TasCollectCountsResultSchema, TasCollectExperienceAttributesFilterSchema, TasCollectExperienceSelectorSchema, TasCollectGroupingInfoFilterSchema, TasCollectGroupingInfoResultSchema, TasCollectVertexIdFilterSchema, TasCoverageFilterSchema, TasEdgeSchema, TasEmptyFilterSchema, TasExternalIdSchema, TasFilterSchema, TasFollowPathFilterSchema, TasFollowPathFlowFilterSchema, TasFollowPathTypeSchema, TasGraphSchema, TasGroupingAlertStatisticsSchema, TasGroupingInfoSchema, TasGroupingItemSchema, TasJoinFilterSchema, TasJoinTypeSchema, TasLayerFilterSchema, TasLegacyFilterSchema, TasLuceneFilterSchema, TasNotFilterSchema, TasOrFilterSchema, TasOrderSchema, TasProjectionFilterSchema, TasQuerySchema, TasServiceFilterSchema, TasStatusFilterSchema, TasStoreChangeSchema, TasStoreGraphInputSchema, TasStoreGraphResponseSchema, TasTakeEdgesFilterSchema, TasTakeFlowsFilterSchema, TasTakeVerticesFilterSchema, TasTraverseFilterSchema, TasVariableFilterSchema, TasVariableSchema, TasVertexIdFilterSchema, TasVertexSchema, TasViewSchema, Trace, TraversalEdgeFilterSchema, TraversalVertexFilterSchema, TraverseCollectSchema, TraverseDirectionSchema, TraverseSchema, VertexMappingConfigurationModule, VertexService, VertexStateExternalIdSchema, VertexStateNumericIdSchema, VertexStateSchema, VertexStatusChanges, ags, agsresponse, apiTokenCreate, apiTokenDelete, apiTokenGet, apiTokenList, apiTokenUpdate, checkGet, composeMetricTypeBits, contactActivate, contactDelete, contactTestSend, contactsBlockDelete, contactsBlockPut, contactsConfirm, contactsCreate, contactsGet, contactsGetDetail, contactsReplaceNotificationsWith, contactsRequestConfirmationCode, contactsUpdate, convertLegacyConfiguration, createPostmanRequest, createServiceMonolith, decodeMetricTypeBits, escapeRegExp, example, excludedAttributes, folderAccessGet, folderDelete, folderGet, folderPost, folderUpdate, foldersList, getDataStoreSchema, getUserTokenSub, getUserTokenTid, getVertexAttributeValue, getVertexAttributeValueOrNull, hasVertexAttribute, inventorizePreview, inventorizeResponse, inventorySearchRequestBodyExample, inventorySearchResponseBody, isDataStoreSchemaType, isTenantToken, isUserToken, listDataStoreSchemaOps, locationsCreate, locationsDelete, locationsGet, locationsGetAll, locationsGetByType, locationsLeafGetFilter, locationsPost, logGet, logGetEvent, maintenanceDelete, maintenanceDeleteWindows, maintenanceFilter, maintenanceGet, maintenanceGetDetail, maintenanceGetWindows, maintenanceGetWindowsDetail, maintenanceUpdateWindowsDetail, maintenancesCreate, maintenancesImmediateDelete, maintenancesImmediatePut, maintenancesPostWindows, maintenancesUpdate, messageGet, messagesList, monitorActivate, monitorCreate, monitorDeactivate, monitorDelete, monitorGet, monitorGetAll, monitorUpdate, oauthClientTokensCreate, oauthClientTokensDelete, oauthClientTokensGet, oauthClientTokensList, oauthClientTokensUpdate, oauthCreateToken, oauthGetRefreshTokenList, oauthGetTokenList, oauthRefreshTokenDeleteId, oauthTokenCognateDelete, oauthTokenCognateDeleteCurrent, oauthTokenDelete, oauthTokenDeleteCurrent, parseFilter, sampleServiceDetailRequestBody, searchUniverse, serviceDetailResponseBody, settingsGet, settingsGetDetail, settingsUpdate, stationDelete, stationsAgentType, stationsCreate, stationsDeleteMaintenance, stationsGet, stationsGetAgents, stationsLatest, stationsList, stationsOnpremiseConnected, stationsOnpremiseConnectedAll, stationsOnpremiseList, stationsPutMaintenance, stationsUpdate, statistic, summarizeDataStoreSchema, tagsGetAll, timezonesList, toSliSaveRequest, userBlockDelete, userBlockPut, userDelete, userGet, userLockDelete, userPut, userSubaccountsGet, userSubaccountsPost, verifyAndDumpLegacyConfiguration, verifyAndDumpVersion3Configuration, verifyAndDumpVersion4Configuration, vertexMatchesFilters };
79319
+ export { AXAActivities, AccService, AgentService, AgentTrace, AlarmEnrichment, AlarmEnrichmentFilter, AlarmService, AlertDefinitionResponse, AlertResponse, AlertResponseV2, AlertService, AlignmentSchema, ApmUniverseService, AsmService, AttributeExpressionComparatorSchema, AttributeExpressionOperatorSchema, AttributeExpressionSchema, AttributeFilterOperator, AttributeNameAllSpecifierSchema, AttributeNameAndSpecifierSchema, AttributeNameAnyNumericSpecifierSchema, AttributeNameAttributeSpecifierSchema, AttributeNameChildrenSpecifierSchema, AttributeNameExactSpecifierSchema, AttributeNameFolderSpecifierSchema, AttributeNameNoneSpecifierSchema, AttributeNameNotSpecifierSchema, AttributeNameOperatorSpecifierSchema, AttributeNameOrSpecifierSchema, AttributeNameRegExSpecifierSchema, AttributeNameSpecifierSchema, AttributeNameTypeSpecifierSchema, AttributeService, AttributeValueAsFieldSchema, AuthorizationService, AxaService, BlobAllFilterSchema, BlobAsyncCommandSchema, BlobAsyncDeleteSchemaCommandSchema, BlobAsyncResultEntrySchema, BlobAsyncResultRequestSchema, BlobAsyncResultResponseSchema, BlobAsyncResultStateSchema, BlobAttributeExpressionSchema, BlobAttributeFilterSchema, BlobAttributesSchema, BlobBulkDeleteEntrySchema, BlobBulkDeleteRequestSchema, BlobBulkDeleteResponseSchema, BlobBulkItemSchema, BlobBulkStoreRequestSchema, BlobBulkStoreResponseSchema, BlobDeleteParamsSchema, BlobDeleteResponseSchema, BlobDeleteSchemaResultSchema, BlobExecuteAsyncRequestSchema, BlobExecuteAsyncResponseSchema, BlobFetchParamsSchema, BlobFileEnvelopeSchema, BlobFilterSchema, BlobMetadataSchema, BlobQueryRequestSchema, BlobQueryResponseSchema, BlobSchemaItemSchema, BlobSchemaListRequestSchema, BlobSchemaListResponseSchema, BlobService, BlobStoreParamsSchema, BlobStoreResponseSchema, CalendarIntervalSchema, ChannelService, DEFAULT_EXPERIENCE_REQUEST_BODY, DXChannel, DashboardPermissionsUpdateRequest, DashboardSearch, DashboardService, DataStoreAuditService, DataStoreAuthViewsService, DataStoreBlobStorageService, DataStoreFeaturesService, DataStoreMetricsMetadataService, DataStoreNASSQLService, DataStoreNASSService, DataStoreStatesService, DataStoreTASService, DataStoreTokensService, DxSaasService, DxoiService, EdgeNumericIdSchema, EventService, ExperienceService, FillModeSchema, FilterOperation, FolderNameAllSpecifierSchema, FolderNameAndSpecifierSchema, FolderNameChildrenSpecifierSchema, FolderNameExactSpecifierSchema, FolderNameNoneSpecifierSchema, FolderNameNotSpecifierSchema, FolderNameOrSpecifierSchema, FolderNameRegExSpecifierSchema, FolderNameSpecifierSchema, GraphResponse, GraphService, Inventory, InventoryAttributes, InventoryService, JoinTypeSchema, JsExtensionService, LogIngest, LogQuery, LogsService, METRIC_TYPE_ENUM, METRIC_TYPE_ENUM_NAMES, METRIC_TYPE_REGION, MServe, MaintenanceBulkDeleteResponseSchema, MaintenanceCreateRequestSchema, MaintenanceCreateResponseSchema, MaintenanceDeleteRequestSchema, MaintenanceDetailSchema, MaintenanceExcludedMemberSchema, MaintenanceFilterLeafSchema, MaintenanceFilterSchema, MaintenanceMemberSchema, MaintenanceMemberSourceSchema, MaintenanceMemberTypeSchema, MaintenancePreviewRequestSchema, MaintenancePreviewResponseSchema, MaintenanceScheduleSchema, MaintenanceSearchRequestSchema, MaintenanceSearchResponseSchema, MaintenanceService, MaintenanceSummarySchema, ManagementModuleIdSchema, ManagementModuleService, MatchType, MetadataMetricQueryResponseV2Schema, MetadataMetricQuerySchema, MetricAttributeSchema, MetricBatchService, MetricFolderSchema, MetricGroupingService, MetricRegisterRequestSchema, MetricRegisterResponseSchema, MetricRegisterSchema, MetricRegisterSourceSchema, MetricTypeEnumNameSchema, NASS, NASSService, NassDatapointSchema, NassExtensionDatapointSchema, NassRegularDatapointSchema, NassStoreRequestSchema, NassStoreResponseSchema, NassValueTypeSchema, NotificationService, NumericOperatorSchema, O2NotificationService, O2UniverseService, OIAlarm, OIService, OIUsersV2, OperatorSchema, PerspectiveService, PlatformAlertService, PlatformFilters, PlatformManagementModuleService, PlatformMetricGroupingService, QuantileMethodSchema, QueryAllSpecifierSchema, QueryAndSpecifierSchema, QueryAttributeExpressionSchema, QueryAttributeSpecifierSchema, QueryColumnTypeSpecSchema, QueryFilterPredicateSpecSchema, QueryFunctionSpecSchema, QueryHintForceRangeSchema, QueryHintSchema, QueryIdSpecifierSchema, QueryMetricGroupSpecifierSchema, QueryMetricIdSchema, QueryNoneSpecifierSchema, QueryNotSpecifierSchema, QueryOrSpecifierSchema, QueryRangeSpecSchema, QueryRequestSchema, QueryResultSchema, QuerySpecSpecifierSchema, QuerySpecifierSchema, RecurrencePattern, SLIService, SQLService, ServiceExport, ServiceFilterSpecifierSchema, ServiceService, ServiceTransform, ServiceUniverseService, SessionService, SimpleHTTPError, SituationLifecycle, SituationService, Situations, SliFilterSchema, SliGroupSchema, SliSaveRequestSchema, SliSaveResponseSchema, SliSearchRequestSchema, SliSearchResponseSchema, SourceNameAllSpecifierSchema, SourceNameAndSpecifierSchema, SourceNameExactSpecifierSchema, SourceNameNoneSpecifierSchema, SourceNameNotSpecifierSchema, SourceNameOrSpecifierSchema, SourceNamePartOperatorSpecifierSchema, SourceNameRegExSpecifierSchema, SourceNameSpecifierSchema, TAS, TASGraph, TASService, TasAddFlowsFilterSchema, TasAddTransitioningEdgesFilterSchema, TasAddWireContextFilterSchema, TasAddWiresFilterSchema, TasAllFilterSchema, TasAnalyticBaseSchema, TasAnalyticResultSchema, TasAndFilterSchema, TasAttributeAlertStatisticsSchema, TasAttributeFilterModeSchema, TasAttributeFilterSchema, TasAttributeNameSchema, TasAttributeTypeSchema, TasCollectAttributeNamesFilterSchema, TasCollectAttributeNamesResultSchema, TasCollectAttributeResultSchema, TasCollectAttributesFilterSchema, TasCollectCardInfoFilterSchema, TasCollectCardInfoResultSchema, TasCollectCardInfoTierSchema, TasCollectCountsFilterSchema, TasCollectCountsResultSchema, TasCollectExperienceAttributesFilterSchema, TasCollectExperienceSelectorSchema, TasCollectGroupingInfoFilterSchema, TasCollectGroupingInfoResultSchema, TasCollectVertexIdFilterSchema, TasCoverageFilterSchema, TasEdgeSchema, TasEmptyFilterSchema, TasExternalIdSchema, TasFilterSchema, TasFollowPathFilterSchema, TasFollowPathFlowFilterSchema, TasFollowPathTypeSchema, TasGraphSchema, TasGroupingAlertStatisticsSchema, TasGroupingInfoSchema, TasGroupingItemSchema, TasJoinFilterSchema, TasJoinTypeSchema, TasLayerFilterSchema, TasLegacyFilterSchema, TasLuceneFilterSchema, TasNotFilterSchema, TasOrFilterSchema, TasOrderSchema, TasProjectionFilterSchema, TasQuerySchema, TasServiceFilterSchema, TasStatusFilterSchema, TasStoreChangeSchema, TasStoreGraphInputSchema, TasStoreGraphResponseSchema, TasTakeEdgesFilterSchema, TasTakeFlowsFilterSchema, TasTakeVerticesFilterSchema, TasTraverseFilterSchema, TasVariableFilterSchema, TasVariableSchema, TasVertexIdFilterSchema, TasVertexSchema, TasViewSchema, Trace, TraversalEdgeFilterSchema, TraversalVertexFilterSchema, TraverseCollectSchema, TraverseDirectionSchema, TraverseSchema, VertexMappingConfigurationModule, VertexService, VertexStateExternalIdSchema, VertexStateNumericIdSchema, VertexStateSchema, VertexStatusChanges, ags, agsresponse, apiTokenCreate, apiTokenDelete, apiTokenGet, apiTokenList, apiTokenUpdate, checkGet, composeMetricTypeBits, contactActivate, contactDelete, contactTestSend, contactsBlockDelete, contactsBlockPut, contactsConfirm, contactsCreate, contactsGet, contactsGetDetail, contactsReplaceNotificationsWith, contactsRequestConfirmationCode, contactsUpdate, convertLegacyConfiguration, createPostmanRequest, createServiceMonolith, decodeMetricTypeBits, escapeRegExp, example, excludedAttributes, folderAccessGet, folderDelete, folderGet, folderPost, folderUpdate, foldersList, getDataStoreSchema, getUserTokenSub, getUserTokenTid, getVertexAttributeValue, getVertexAttributeValueOrNull, hasVertexAttribute, inventorizePreview, inventorizeResponse, inventorySearchRequestBodyExample, inventorySearchResponseBody, isDataStoreSchemaType, isTenantToken, isUserToken, listDataStoreSchemaOps, locationsCreate, locationsDelete, locationsGet, locationsGetAll, locationsGetByType, locationsLeafGetFilter, locationsPost, logGet, logGetEvent, maintenanceDelete, maintenanceDeleteWindows, maintenanceFilter, maintenanceGet, maintenanceGetDetail, maintenanceGetWindows, maintenanceGetWindowsDetail, maintenanceUpdateWindowsDetail, maintenancesCreate, maintenancesImmediateDelete, maintenancesImmediatePut, maintenancesPostWindows, maintenancesUpdate, messageGet, messagesList, monitorActivate, monitorCreate, monitorDeactivate, monitorDelete, monitorGet, monitorGetAll, monitorUpdate, oauthClientTokensCreate, oauthClientTokensDelete, oauthClientTokensGet, oauthClientTokensList, oauthClientTokensUpdate, oauthCreateToken, oauthGetRefreshTokenList, oauthGetTokenList, oauthRefreshTokenDeleteId, oauthTokenCognateDelete, oauthTokenCognateDeleteCurrent, oauthTokenDelete, oauthTokenDeleteCurrent, parseFilter, sampleServiceDetailRequestBody, searchUniverse, serviceDetailResponseBody, settingsGet, settingsGetDetail, settingsUpdate, stationDelete, stationsAgentType, stationsCreate, stationsDeleteMaintenance, stationsGet, stationsGetAgents, stationsLatest, stationsList, stationsOnpremiseConnected, stationsOnpremiseConnectedAll, stationsOnpremiseList, stationsPutMaintenance, stationsUpdate, statistic, summarizeDataStoreSchema, tagsGetAll, timezonesList, toSliSaveRequest, userBlockDelete, userBlockPut, userDelete, userGet, userLockDelete, userPut, userSubaccountsGet, userSubaccountsPost, verifyAndDumpLegacyConfiguration, verifyAndDumpVersion3Configuration, verifyAndDumpVersion4Configuration, vertexMatchesFilters };
78777
79320
  //# sourceMappingURL=index.esm.js.map