@ignos/api-client 20250729.0.12229-alpha → 20250805.0.12270-alpha

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.
@@ -2623,10 +2623,12 @@ export interface IWorkordersClient {
2623
2623
  * Deleteds existing work order mappings.
2624
2624
  */
2625
2625
  deleteWorkOrderMappings(): Promise<void>;
2626
- getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessage[]>;
2627
- addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<WorkorderDiscussionMessage>;
2626
+ getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessageDto[]>;
2627
+ addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<void>;
2628
2628
  updateMessage(id: string, messageId: string, content: string): Promise<FileResponse>;
2629
2629
  deleteMessage(id: string, messageId: string): Promise<FileResponse>;
2630
+ getLastRead(id: string, operationId: string | null | undefined, resourceId: string | null | undefined, userUpn: string | null | undefined): Promise<WorkorderDiscussionReadStatusDto>;
2631
+ setLastRead(id: string, request: SetDiscussionLastRead): Promise<void>;
2630
2632
  }
2631
2633
  export declare class WorkordersClient extends AuthorizedApiBase implements IWorkordersClient {
2632
2634
  private http;
@@ -2756,14 +2758,18 @@ export declare class WorkordersClient extends AuthorizedApiBase implements IWork
2756
2758
  */
2757
2759
  deleteWorkOrderMappings(): Promise<void>;
2758
2760
  protected processDeleteWorkOrderMappings(response: Response): Promise<void>;
2759
- getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessage[]>;
2760
- protected processGetDiscussionMessages(response: Response): Promise<WorkorderDiscussionMessage[]>;
2761
- addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<WorkorderDiscussionMessage>;
2762
- protected processAddDiscussionMessage(response: Response): Promise<WorkorderDiscussionMessage>;
2761
+ getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessageDto[]>;
2762
+ protected processGetDiscussionMessages(response: Response): Promise<WorkorderDiscussionMessageDto[]>;
2763
+ addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<void>;
2764
+ protected processAddDiscussionMessage(response: Response): Promise<void>;
2763
2765
  updateMessage(id: string, messageId: string, content: string): Promise<FileResponse>;
2764
2766
  protected processUpdateMessage(response: Response): Promise<FileResponse>;
2765
2767
  deleteMessage(id: string, messageId: string): Promise<FileResponse>;
2766
2768
  protected processDeleteMessage(response: Response): Promise<FileResponse>;
2769
+ getLastRead(id: string, operationId: string | null | undefined, resourceId: string | null | undefined, userUpn: string | null | undefined): Promise<WorkorderDiscussionReadStatusDto>;
2770
+ protected processGetLastRead(response: Response): Promise<WorkorderDiscussionReadStatusDto>;
2771
+ setLastRead(id: string, request: SetDiscussionLastRead): Promise<void>;
2772
+ protected processSetLastRead(response: Response): Promise<void>;
2767
2773
  }
2768
2774
  export declare class AzureRegionDto implements IAzureRegionDto {
2769
2775
  displayName: string;
@@ -14422,80 +14428,39 @@ export interface ICreateWorkOrderMapping {
14422
14428
  existingWorkOrderId: string;
14423
14429
  newWorkOrderId: string;
14424
14430
  }
14425
- export declare class TableEntityBase implements ITableEntityBase {
14426
- partitionKey?: string;
14427
- rowKey?: string;
14428
- timestamp?: Date | null;
14429
- eTag?: ETag;
14430
- created?: Date | null;
14431
- createdBy?: string | null;
14432
- createdById?: string | null;
14433
- updatedBy?: string | null;
14434
- updatedById?: string | null;
14435
- insertAuditInfo?: AuditInfo;
14436
- constructor(data?: ITableEntityBase);
14437
- init(_data?: any): void;
14438
- static fromJS(data: any): TableEntityBase;
14439
- toJSON(data?: any): any;
14440
- }
14441
- export interface ITableEntityBase {
14442
- partitionKey?: string;
14443
- rowKey?: string;
14444
- timestamp?: Date | null;
14445
- eTag?: ETag;
14446
- created?: Date | null;
14447
- createdBy?: string | null;
14448
- createdById?: string | null;
14449
- updatedBy?: string | null;
14450
- updatedById?: string | null;
14451
- insertAuditInfo?: AuditInfo;
14452
- }
14453
- export declare class WorkorderDiscussionMessage extends TableEntityBase implements IWorkorderDiscussionMessage {
14431
+ export declare class WorkorderDiscussionMessageDto implements IWorkorderDiscussionMessageDto {
14432
+ id?: string;
14433
+ workorderId?: string;
14434
+ companyId?: string;
14454
14435
  content?: string;
14455
14436
  senderUpn?: string;
14456
14437
  senderName?: string;
14457
14438
  operationId?: string | null;
14458
14439
  operationName?: string | null;
14459
14440
  resourceId?: string | null;
14460
- constructor(data?: IWorkorderDiscussionMessage);
14441
+ created?: Date;
14442
+ constructor(data?: IWorkorderDiscussionMessageDto);
14461
14443
  init(_data?: any): void;
14462
- static fromJS(data: any): WorkorderDiscussionMessage;
14444
+ static fromJS(data: any): WorkorderDiscussionMessageDto;
14463
14445
  toJSON(data?: any): any;
14464
14446
  }
14465
- export interface IWorkorderDiscussionMessage extends ITableEntityBase {
14447
+ export interface IWorkorderDiscussionMessageDto {
14448
+ id?: string;
14449
+ workorderId?: string;
14450
+ companyId?: string;
14466
14451
  content?: string;
14467
14452
  senderUpn?: string;
14468
14453
  senderName?: string;
14469
14454
  operationId?: string | null;
14470
14455
  operationName?: string | null;
14471
14456
  resourceId?: string | null;
14472
- }
14473
- /** Represents an HTTP ETag. */
14474
- export declare class ETag implements IETag {
14475
- constructor(data?: IETag);
14476
- init(_data?: any): void;
14477
- static fromJS(data: any): ETag;
14478
- toJSON(data?: any): any;
14479
- }
14480
- /** Represents an HTTP ETag. */
14481
- export interface IETag {
14482
- }
14483
- export declare class AuditInfo implements IAuditInfo {
14484
- objectId?: string;
14485
- userId?: string;
14486
- userFullName?: string | null;
14487
- constructor(data?: IAuditInfo);
14488
- init(_data?: any): void;
14489
- static fromJS(data: any): AuditInfo;
14490
- toJSON(data?: any): any;
14491
- }
14492
- export interface IAuditInfo {
14493
- objectId?: string;
14494
- userId?: string;
14495
- userFullName?: string | null;
14457
+ created?: Date;
14496
14458
  }
14497
14459
  export declare class AddDiscussionMessageRequest implements IAddDiscussionMessageRequest {
14460
+ companyId?: string;
14498
14461
  message?: string;
14462
+ senderUpn?: string;
14463
+ senderName?: string;
14499
14464
  operationId?: string | null;
14500
14465
  operationName?: string | null;
14501
14466
  resourceId?: string | null;
@@ -14505,11 +14470,48 @@ export declare class AddDiscussionMessageRequest implements IAddDiscussionMessag
14505
14470
  toJSON(data?: any): any;
14506
14471
  }
14507
14472
  export interface IAddDiscussionMessageRequest {
14473
+ companyId?: string;
14508
14474
  message?: string;
14475
+ senderUpn?: string;
14476
+ senderName?: string;
14509
14477
  operationId?: string | null;
14510
14478
  operationName?: string | null;
14511
14479
  resourceId?: string | null;
14512
14480
  }
14481
+ export declare class WorkorderDiscussionReadStatusDto implements IWorkorderDiscussionReadStatusDto {
14482
+ workorderId?: string;
14483
+ operationId?: string | null;
14484
+ resourceId?: string | null;
14485
+ userUpn?: string;
14486
+ lastRead?: Date;
14487
+ constructor(data?: IWorkorderDiscussionReadStatusDto);
14488
+ init(_data?: any): void;
14489
+ static fromJS(data: any): WorkorderDiscussionReadStatusDto;
14490
+ toJSON(data?: any): any;
14491
+ }
14492
+ export interface IWorkorderDiscussionReadStatusDto {
14493
+ workorderId?: string;
14494
+ operationId?: string | null;
14495
+ resourceId?: string | null;
14496
+ userUpn?: string;
14497
+ lastRead?: Date;
14498
+ }
14499
+ export declare class SetDiscussionLastRead implements ISetDiscussionLastRead {
14500
+ workorderId?: string;
14501
+ operationId?: string | null;
14502
+ resourceId?: string | null;
14503
+ userUpn?: string;
14504
+ constructor(data?: ISetDiscussionLastRead);
14505
+ init(_data?: any): void;
14506
+ static fromJS(data: any): SetDiscussionLastRead;
14507
+ toJSON(data?: any): any;
14508
+ }
14509
+ export interface ISetDiscussionLastRead {
14510
+ workorderId?: string;
14511
+ operationId?: string | null;
14512
+ resourceId?: string | null;
14513
+ userUpn?: string;
14514
+ }
14513
14515
  export interface FileParameter {
14514
14516
  data: any;
14515
14517
  fileName: string;
@@ -22754,7 +22754,7 @@ export class WorkordersClient extends AuthorizedApiBase {
22754
22754
  if (Array.isArray(resultData200)) {
22755
22755
  result200 = [];
22756
22756
  for (let item of resultData200)
22757
- result200.push(WorkorderDiscussionMessage.fromJS(item));
22757
+ result200.push(WorkorderDiscussionMessageDto.fromJS(item));
22758
22758
  }
22759
22759
  return result200;
22760
22760
  });
@@ -22778,7 +22778,6 @@ export class WorkordersClient extends AuthorizedApiBase {
22778
22778
  method: "POST",
22779
22779
  headers: {
22780
22780
  "Content-Type": "application/json",
22781
- "Accept": "application/json"
22782
22781
  }
22783
22782
  };
22784
22783
  return this.transformOptions(options_).then(transformedOptions_ => {
@@ -22794,12 +22793,9 @@ export class WorkordersClient extends AuthorizedApiBase {
22794
22793
  response.headers.forEach((v, k) => _headers[k] = v);
22795
22794
  }
22796
22795
  ;
22797
- if (status === 201) {
22796
+ if (status === 204) {
22798
22797
  return response.text().then((_responseText) => {
22799
- let result201 = null;
22800
- let resultData201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
22801
- result201 = WorkorderDiscussionMessage.fromJS(resultData201);
22802
- return result201;
22798
+ return;
22803
22799
  });
22804
22800
  }
22805
22801
  else if (status !== 200 && status !== 204) {
@@ -22908,6 +22904,91 @@ export class WorkordersClient extends AuthorizedApiBase {
22908
22904
  }
22909
22905
  return Promise.resolve(null);
22910
22906
  }
22907
+ getLastRead(id, operationId, resourceId, userUpn) {
22908
+ let url_ = this.baseUrl + "/erp/workorders/{id}/discussion/last-read?";
22909
+ if (id === undefined || id === null)
22910
+ throw new Error("The parameter 'id' must be defined.");
22911
+ url_ = url_.replace("{id}", encodeURIComponent("" + id));
22912
+ if (operationId !== undefined && operationId !== null)
22913
+ url_ += "operationId=" + encodeURIComponent("" + operationId) + "&";
22914
+ if (resourceId !== undefined && resourceId !== null)
22915
+ url_ += "resourceId=" + encodeURIComponent("" + resourceId) + "&";
22916
+ if (userUpn !== undefined && userUpn !== null)
22917
+ url_ += "userUpn=" + encodeURIComponent("" + userUpn) + "&";
22918
+ url_ = url_.replace(/[?&]$/, "");
22919
+ let options_ = {
22920
+ method: "GET",
22921
+ headers: {
22922
+ "Accept": "application/json"
22923
+ }
22924
+ };
22925
+ return this.transformOptions(options_).then(transformedOptions_ => {
22926
+ return this.http.fetch(url_, transformedOptions_);
22927
+ }).then((_response) => {
22928
+ return this.processGetLastRead(_response);
22929
+ });
22930
+ }
22931
+ processGetLastRead(response) {
22932
+ const status = response.status;
22933
+ let _headers = {};
22934
+ if (response.headers && response.headers.forEach) {
22935
+ response.headers.forEach((v, k) => _headers[k] = v);
22936
+ }
22937
+ ;
22938
+ if (status === 200) {
22939
+ return response.text().then((_responseText) => {
22940
+ let result200 = null;
22941
+ let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
22942
+ result200 = WorkorderDiscussionReadStatusDto.fromJS(resultData200);
22943
+ return result200;
22944
+ });
22945
+ }
22946
+ else if (status !== 200 && status !== 204) {
22947
+ return response.text().then((_responseText) => {
22948
+ return throwException("An unexpected server error occurred.", status, _responseText, _headers);
22949
+ });
22950
+ }
22951
+ return Promise.resolve(null);
22952
+ }
22953
+ setLastRead(id, request) {
22954
+ let url_ = this.baseUrl + "/erp/workorders/{id}/discussion/last-read";
22955
+ if (id === undefined || id === null)
22956
+ throw new Error("The parameter 'id' must be defined.");
22957
+ url_ = url_.replace("{id}", encodeURIComponent("" + id));
22958
+ url_ = url_.replace(/[?&]$/, "");
22959
+ const content_ = JSON.stringify(request);
22960
+ let options_ = {
22961
+ body: content_,
22962
+ method: "POST",
22963
+ headers: {
22964
+ "Content-Type": "application/json",
22965
+ }
22966
+ };
22967
+ return this.transformOptions(options_).then(transformedOptions_ => {
22968
+ return this.http.fetch(url_, transformedOptions_);
22969
+ }).then((_response) => {
22970
+ return this.processSetLastRead(_response);
22971
+ });
22972
+ }
22973
+ processSetLastRead(response) {
22974
+ const status = response.status;
22975
+ let _headers = {};
22976
+ if (response.headers && response.headers.forEach) {
22977
+ response.headers.forEach((v, k) => _headers[k] = v);
22978
+ }
22979
+ ;
22980
+ if (status === 204) {
22981
+ return response.text().then((_responseText) => {
22982
+ return;
22983
+ });
22984
+ }
22985
+ else if (status !== 200 && status !== 204) {
22986
+ return response.text().then((_responseText) => {
22987
+ return throwException("An unexpected server error occurred.", status, _responseText, _headers);
22988
+ });
22989
+ }
22990
+ return Promise.resolve(null);
22991
+ }
22911
22992
  }
22912
22993
  export class AzureRegionDto {
22913
22994
  constructor(data) {
@@ -46783,7 +46864,7 @@ export class CreateWorkOrderMapping {
46783
46864
  return data;
46784
46865
  }
46785
46866
  }
46786
- export class TableEntityBase {
46867
+ export class WorkorderDiscussionMessageDto {
46787
46868
  constructor(data) {
46788
46869
  if (data) {
46789
46870
  for (var property in data) {
@@ -46794,74 +46875,40 @@ export class TableEntityBase {
46794
46875
  }
46795
46876
  init(_data) {
46796
46877
  if (_data) {
46797
- this.partitionKey = _data["partitionKey"];
46798
- this.rowKey = _data["rowKey"];
46799
- this.timestamp = _data["timestamp"] ? new Date(_data["timestamp"].toString()) : undefined;
46800
- this.eTag = _data["eTag"] ? ETag.fromJS(_data["eTag"]) : undefined;
46801
- this.created = _data["created"] ? new Date(_data["created"].toString()) : undefined;
46802
- this.createdBy = _data["createdBy"];
46803
- this.createdById = _data["createdById"];
46804
- this.updatedBy = _data["updatedBy"];
46805
- this.updatedById = _data["updatedById"];
46806
- this.insertAuditInfo = _data["insertAuditInfo"] ? AuditInfo.fromJS(_data["insertAuditInfo"]) : undefined;
46807
- }
46808
- }
46809
- static fromJS(data) {
46810
- data = typeof data === 'object' ? data : {};
46811
- let result = new TableEntityBase();
46812
- result.init(data);
46813
- return result;
46814
- }
46815
- toJSON(data) {
46816
- data = typeof data === 'object' ? data : {};
46817
- data["partitionKey"] = this.partitionKey;
46818
- data["rowKey"] = this.rowKey;
46819
- data["timestamp"] = this.timestamp ? this.timestamp.toISOString() : undefined;
46820
- data["eTag"] = this.eTag ? this.eTag.toJSON() : undefined;
46821
- data["created"] = this.created ? this.created.toISOString() : undefined;
46822
- data["createdBy"] = this.createdBy;
46823
- data["createdById"] = this.createdById;
46824
- data["updatedBy"] = this.updatedBy;
46825
- data["updatedById"] = this.updatedById;
46826
- data["insertAuditInfo"] = this.insertAuditInfo ? this.insertAuditInfo.toJSON() : undefined;
46827
- return data;
46828
- }
46829
- }
46830
- export class WorkorderDiscussionMessage extends TableEntityBase {
46831
- constructor(data) {
46832
- super(data);
46833
- }
46834
- init(_data) {
46835
- super.init(_data);
46836
- if (_data) {
46878
+ this.id = _data["id"];
46879
+ this.workorderId = _data["workorderId"];
46880
+ this.companyId = _data["companyId"];
46837
46881
  this.content = _data["content"];
46838
46882
  this.senderUpn = _data["senderUpn"];
46839
46883
  this.senderName = _data["senderName"];
46840
46884
  this.operationId = _data["operationId"];
46841
46885
  this.operationName = _data["operationName"];
46842
46886
  this.resourceId = _data["resourceId"];
46887
+ this.created = _data["created"] ? new Date(_data["created"].toString()) : undefined;
46843
46888
  }
46844
46889
  }
46845
46890
  static fromJS(data) {
46846
46891
  data = typeof data === 'object' ? data : {};
46847
- let result = new WorkorderDiscussionMessage();
46892
+ let result = new WorkorderDiscussionMessageDto();
46848
46893
  result.init(data);
46849
46894
  return result;
46850
46895
  }
46851
46896
  toJSON(data) {
46852
46897
  data = typeof data === 'object' ? data : {};
46898
+ data["id"] = this.id;
46899
+ data["workorderId"] = this.workorderId;
46900
+ data["companyId"] = this.companyId;
46853
46901
  data["content"] = this.content;
46854
46902
  data["senderUpn"] = this.senderUpn;
46855
46903
  data["senderName"] = this.senderName;
46856
46904
  data["operationId"] = this.operationId;
46857
46905
  data["operationName"] = this.operationName;
46858
46906
  data["resourceId"] = this.resourceId;
46859
- super.toJSON(data);
46907
+ data["created"] = this.created ? this.created.toISOString() : undefined;
46860
46908
  return data;
46861
46909
  }
46862
46910
  }
46863
- /** Represents an HTTP ETag. */
46864
- export class ETag {
46911
+ export class AddDiscussionMessageRequest {
46865
46912
  constructor(data) {
46866
46913
  if (data) {
46867
46914
  for (var property in data) {
@@ -46871,19 +46918,35 @@ export class ETag {
46871
46918
  }
46872
46919
  }
46873
46920
  init(_data) {
46921
+ if (_data) {
46922
+ this.companyId = _data["companyId"];
46923
+ this.message = _data["message"];
46924
+ this.senderUpn = _data["senderUpn"];
46925
+ this.senderName = _data["senderName"];
46926
+ this.operationId = _data["operationId"];
46927
+ this.operationName = _data["operationName"];
46928
+ this.resourceId = _data["resourceId"];
46929
+ }
46874
46930
  }
46875
46931
  static fromJS(data) {
46876
46932
  data = typeof data === 'object' ? data : {};
46877
- let result = new ETag();
46933
+ let result = new AddDiscussionMessageRequest();
46878
46934
  result.init(data);
46879
46935
  return result;
46880
46936
  }
46881
46937
  toJSON(data) {
46882
46938
  data = typeof data === 'object' ? data : {};
46939
+ data["companyId"] = this.companyId;
46940
+ data["message"] = this.message;
46941
+ data["senderUpn"] = this.senderUpn;
46942
+ data["senderName"] = this.senderName;
46943
+ data["operationId"] = this.operationId;
46944
+ data["operationName"] = this.operationName;
46945
+ data["resourceId"] = this.resourceId;
46883
46946
  return data;
46884
46947
  }
46885
46948
  }
46886
- export class AuditInfo {
46949
+ export class WorkorderDiscussionReadStatusDto {
46887
46950
  constructor(data) {
46888
46951
  if (data) {
46889
46952
  for (var property in data) {
@@ -46894,26 +46957,30 @@ export class AuditInfo {
46894
46957
  }
46895
46958
  init(_data) {
46896
46959
  if (_data) {
46897
- this.objectId = _data["objectId"];
46898
- this.userId = _data["userId"];
46899
- this.userFullName = _data["userFullName"];
46960
+ this.workorderId = _data["workorderId"];
46961
+ this.operationId = _data["operationId"];
46962
+ this.resourceId = _data["resourceId"];
46963
+ this.userUpn = _data["userUpn"];
46964
+ this.lastRead = _data["lastRead"] ? new Date(_data["lastRead"].toString()) : undefined;
46900
46965
  }
46901
46966
  }
46902
46967
  static fromJS(data) {
46903
46968
  data = typeof data === 'object' ? data : {};
46904
- let result = new AuditInfo();
46969
+ let result = new WorkorderDiscussionReadStatusDto();
46905
46970
  result.init(data);
46906
46971
  return result;
46907
46972
  }
46908
46973
  toJSON(data) {
46909
46974
  data = typeof data === 'object' ? data : {};
46910
- data["objectId"] = this.objectId;
46911
- data["userId"] = this.userId;
46912
- data["userFullName"] = this.userFullName;
46975
+ data["workorderId"] = this.workorderId;
46976
+ data["operationId"] = this.operationId;
46977
+ data["resourceId"] = this.resourceId;
46978
+ data["userUpn"] = this.userUpn;
46979
+ data["lastRead"] = this.lastRead ? this.lastRead.toISOString() : undefined;
46913
46980
  return data;
46914
46981
  }
46915
46982
  }
46916
- export class AddDiscussionMessageRequest {
46983
+ export class SetDiscussionLastRead {
46917
46984
  constructor(data) {
46918
46985
  if (data) {
46919
46986
  for (var property in data) {
@@ -46924,24 +46991,24 @@ export class AddDiscussionMessageRequest {
46924
46991
  }
46925
46992
  init(_data) {
46926
46993
  if (_data) {
46927
- this.message = _data["message"];
46994
+ this.workorderId = _data["workorderId"];
46928
46995
  this.operationId = _data["operationId"];
46929
- this.operationName = _data["operationName"];
46930
46996
  this.resourceId = _data["resourceId"];
46997
+ this.userUpn = _data["userUpn"];
46931
46998
  }
46932
46999
  }
46933
47000
  static fromJS(data) {
46934
47001
  data = typeof data === 'object' ? data : {};
46935
- let result = new AddDiscussionMessageRequest();
47002
+ let result = new SetDiscussionLastRead();
46936
47003
  result.init(data);
46937
47004
  return result;
46938
47005
  }
46939
47006
  toJSON(data) {
46940
47007
  data = typeof data === 'object' ? data : {};
46941
- data["message"] = this.message;
47008
+ data["workorderId"] = this.workorderId;
46942
47009
  data["operationId"] = this.operationId;
46943
- data["operationName"] = this.operationName;
46944
47010
  data["resourceId"] = this.resourceId;
47011
+ data["userUpn"] = this.userUpn;
46945
47012
  return data;
46946
47013
  }
46947
47014
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ignos/api-client",
3
- "version": "20250729.0.12229-alpha",
3
+ "version": "20250805.0.12270-alpha",
4
4
  "description": "IGNOS API Client",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -23184,13 +23184,17 @@ export interface IWorkordersClient {
23184
23184
  */
23185
23185
  deleteWorkOrderMappings(): Promise<void>;
23186
23186
 
23187
- getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessage[]>;
23187
+ getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessageDto[]>;
23188
23188
 
23189
- addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<WorkorderDiscussionMessage>;
23189
+ addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<void>;
23190
23190
 
23191
23191
  updateMessage(id: string, messageId: string, content: string): Promise<FileResponse>;
23192
23192
 
23193
23193
  deleteMessage(id: string, messageId: string): Promise<FileResponse>;
23194
+
23195
+ getLastRead(id: string, operationId: string | null | undefined, resourceId: string | null | undefined, userUpn: string | null | undefined): Promise<WorkorderDiscussionReadStatusDto>;
23196
+
23197
+ setLastRead(id: string, request: SetDiscussionLastRead): Promise<void>;
23194
23198
  }
23195
23199
 
23196
23200
  export class WorkordersClient extends AuthorizedApiBase implements IWorkordersClient {
@@ -24271,7 +24275,7 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24271
24275
  return Promise.resolve<void>(null as any);
24272
24276
  }
24273
24277
 
24274
- getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessage[]> {
24278
+ getDiscussionMessages(id: string): Promise<WorkorderDiscussionMessageDto[]> {
24275
24279
  let url_ = this.baseUrl + "/erp/workorders/{id}/discussion";
24276
24280
  if (id === undefined || id === null)
24277
24281
  throw new Error("The parameter 'id' must be defined.");
@@ -24292,7 +24296,7 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24292
24296
  });
24293
24297
  }
24294
24298
 
24295
- protected processGetDiscussionMessages(response: Response): Promise<WorkorderDiscussionMessage[]> {
24299
+ protected processGetDiscussionMessages(response: Response): Promise<WorkorderDiscussionMessageDto[]> {
24296
24300
  const status = response.status;
24297
24301
  let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };
24298
24302
  if (status === 200) {
@@ -24302,7 +24306,7 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24302
24306
  if (Array.isArray(resultData200)) {
24303
24307
  result200 = [] as any;
24304
24308
  for (let item of resultData200)
24305
- result200!.push(WorkorderDiscussionMessage.fromJS(item));
24309
+ result200!.push(WorkorderDiscussionMessageDto.fromJS(item));
24306
24310
  }
24307
24311
  return result200;
24308
24312
  });
@@ -24311,10 +24315,10 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24311
24315
  return throwException("An unexpected server error occurred.", status, _responseText, _headers);
24312
24316
  });
24313
24317
  }
24314
- return Promise.resolve<WorkorderDiscussionMessage[]>(null as any);
24318
+ return Promise.resolve<WorkorderDiscussionMessageDto[]>(null as any);
24315
24319
  }
24316
24320
 
24317
- addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<WorkorderDiscussionMessage> {
24321
+ addDiscussionMessage(id: string, request: AddDiscussionMessageRequest): Promise<void> {
24318
24322
  let url_ = this.baseUrl + "/erp/workorders/{id}/discussion";
24319
24323
  if (id === undefined || id === null)
24320
24324
  throw new Error("The parameter 'id' must be defined.");
@@ -24328,7 +24332,6 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24328
24332
  method: "POST",
24329
24333
  headers: {
24330
24334
  "Content-Type": "application/json",
24331
- "Accept": "application/json"
24332
24335
  }
24333
24336
  };
24334
24337
 
@@ -24339,22 +24342,19 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24339
24342
  });
24340
24343
  }
24341
24344
 
24342
- protected processAddDiscussionMessage(response: Response): Promise<WorkorderDiscussionMessage> {
24345
+ protected processAddDiscussionMessage(response: Response): Promise<void> {
24343
24346
  const status = response.status;
24344
24347
  let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };
24345
- if (status === 201) {
24348
+ if (status === 204) {
24346
24349
  return response.text().then((_responseText) => {
24347
- let result201: any = null;
24348
- let resultData201 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
24349
- result201 = WorkorderDiscussionMessage.fromJS(resultData201);
24350
- return result201;
24350
+ return;
24351
24351
  });
24352
24352
  } else if (status !== 200 && status !== 204) {
24353
24353
  return response.text().then((_responseText) => {
24354
24354
  return throwException("An unexpected server error occurred.", status, _responseText, _headers);
24355
24355
  });
24356
24356
  }
24357
- return Promise.resolve<WorkorderDiscussionMessage>(null as any);
24357
+ return Promise.resolve<void>(null as any);
24358
24358
  }
24359
24359
 
24360
24360
  updateMessage(id: string, messageId: string, content: string): Promise<FileResponse> {
@@ -24452,6 +24452,90 @@ export class WorkordersClient extends AuthorizedApiBase implements IWorkordersCl
24452
24452
  }
24453
24453
  return Promise.resolve<FileResponse>(null as any);
24454
24454
  }
24455
+
24456
+ getLastRead(id: string, operationId: string | null | undefined, resourceId: string | null | undefined, userUpn: string | null | undefined): Promise<WorkorderDiscussionReadStatusDto> {
24457
+ let url_ = this.baseUrl + "/erp/workorders/{id}/discussion/last-read?";
24458
+ if (id === undefined || id === null)
24459
+ throw new Error("The parameter 'id' must be defined.");
24460
+ url_ = url_.replace("{id}", encodeURIComponent("" + id));
24461
+ if (operationId !== undefined && operationId !== null)
24462
+ url_ += "operationId=" + encodeURIComponent("" + operationId) + "&";
24463
+ if (resourceId !== undefined && resourceId !== null)
24464
+ url_ += "resourceId=" + encodeURIComponent("" + resourceId) + "&";
24465
+ if (userUpn !== undefined && userUpn !== null)
24466
+ url_ += "userUpn=" + encodeURIComponent("" + userUpn) + "&";
24467
+ url_ = url_.replace(/[?&]$/, "");
24468
+
24469
+ let options_: RequestInit = {
24470
+ method: "GET",
24471
+ headers: {
24472
+ "Accept": "application/json"
24473
+ }
24474
+ };
24475
+
24476
+ return this.transformOptions(options_).then(transformedOptions_ => {
24477
+ return this.http.fetch(url_, transformedOptions_);
24478
+ }).then((_response: Response) => {
24479
+ return this.processGetLastRead(_response);
24480
+ });
24481
+ }
24482
+
24483
+ protected processGetLastRead(response: Response): Promise<WorkorderDiscussionReadStatusDto> {
24484
+ const status = response.status;
24485
+ let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };
24486
+ if (status === 200) {
24487
+ return response.text().then((_responseText) => {
24488
+ let result200: any = null;
24489
+ let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
24490
+ result200 = WorkorderDiscussionReadStatusDto.fromJS(resultData200);
24491
+ return result200;
24492
+ });
24493
+ } else if (status !== 200 && status !== 204) {
24494
+ return response.text().then((_responseText) => {
24495
+ return throwException("An unexpected server error occurred.", status, _responseText, _headers);
24496
+ });
24497
+ }
24498
+ return Promise.resolve<WorkorderDiscussionReadStatusDto>(null as any);
24499
+ }
24500
+
24501
+ setLastRead(id: string, request: SetDiscussionLastRead): Promise<void> {
24502
+ let url_ = this.baseUrl + "/erp/workorders/{id}/discussion/last-read";
24503
+ if (id === undefined || id === null)
24504
+ throw new Error("The parameter 'id' must be defined.");
24505
+ url_ = url_.replace("{id}", encodeURIComponent("" + id));
24506
+ url_ = url_.replace(/[?&]$/, "");
24507
+
24508
+ const content_ = JSON.stringify(request);
24509
+
24510
+ let options_: RequestInit = {
24511
+ body: content_,
24512
+ method: "POST",
24513
+ headers: {
24514
+ "Content-Type": "application/json",
24515
+ }
24516
+ };
24517
+
24518
+ return this.transformOptions(options_).then(transformedOptions_ => {
24519
+ return this.http.fetch(url_, transformedOptions_);
24520
+ }).then((_response: Response) => {
24521
+ return this.processSetLastRead(_response);
24522
+ });
24523
+ }
24524
+
24525
+ protected processSetLastRead(response: Response): Promise<void> {
24526
+ const status = response.status;
24527
+ let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };
24528
+ if (status === 204) {
24529
+ return response.text().then((_responseText) => {
24530
+ return;
24531
+ });
24532
+ } else if (status !== 200 && status !== 204) {
24533
+ return response.text().then((_responseText) => {
24534
+ return throwException("An unexpected server error occurred.", status, _responseText, _headers);
24535
+ });
24536
+ }
24537
+ return Promise.resolve<void>(null as any);
24538
+ }
24455
24539
  }
24456
24540
 
24457
24541
  export class AzureRegionDto implements IAzureRegionDto {
@@ -60036,19 +60120,19 @@ export interface ICreateWorkOrderMapping {
60036
60120
  newWorkOrderId: string;
60037
60121
  }
60038
60122
 
60039
- export class TableEntityBase implements ITableEntityBase {
60040
- partitionKey?: string;
60041
- rowKey?: string;
60042
- timestamp?: Date | null;
60043
- eTag?: ETag;
60044
- created?: Date | null;
60045
- createdBy?: string | null;
60046
- createdById?: string | null;
60047
- updatedBy?: string | null;
60048
- updatedById?: string | null;
60049
- insertAuditInfo?: AuditInfo;
60123
+ export class WorkorderDiscussionMessageDto implements IWorkorderDiscussionMessageDto {
60124
+ id?: string;
60125
+ workorderId?: string;
60126
+ companyId?: string;
60127
+ content?: string;
60128
+ senderUpn?: string;
60129
+ senderName?: string;
60130
+ operationId?: string | null;
60131
+ operationName?: string | null;
60132
+ resourceId?: string | null;
60133
+ created?: Date;
60050
60134
 
60051
- constructor(data?: ITableEntityBase) {
60135
+ constructor(data?: IWorkorderDiscussionMessageDto) {
60052
60136
  if (data) {
60053
60137
  for (var property in data) {
60054
60138
  if (data.hasOwnProperty(property))
@@ -60059,112 +60143,65 @@ export class TableEntityBase implements ITableEntityBase {
60059
60143
 
60060
60144
  init(_data?: any) {
60061
60145
  if (_data) {
60062
- this.partitionKey = _data["partitionKey"];
60063
- this.rowKey = _data["rowKey"];
60064
- this.timestamp = _data["timestamp"] ? new Date(_data["timestamp"].toString()) : <any>undefined;
60065
- this.eTag = _data["eTag"] ? ETag.fromJS(_data["eTag"]) : <any>undefined;
60066
- this.created = _data["created"] ? new Date(_data["created"].toString()) : <any>undefined;
60067
- this.createdBy = _data["createdBy"];
60068
- this.createdById = _data["createdById"];
60069
- this.updatedBy = _data["updatedBy"];
60070
- this.updatedById = _data["updatedById"];
60071
- this.insertAuditInfo = _data["insertAuditInfo"] ? AuditInfo.fromJS(_data["insertAuditInfo"]) : <any>undefined;
60072
- }
60073
- }
60074
-
60075
- static fromJS(data: any): TableEntityBase {
60076
- data = typeof data === 'object' ? data : {};
60077
- let result = new TableEntityBase();
60078
- result.init(data);
60079
- return result;
60080
- }
60081
-
60082
- toJSON(data?: any) {
60083
- data = typeof data === 'object' ? data : {};
60084
- data["partitionKey"] = this.partitionKey;
60085
- data["rowKey"] = this.rowKey;
60086
- data["timestamp"] = this.timestamp ? this.timestamp.toISOString() : <any>undefined;
60087
- data["eTag"] = this.eTag ? this.eTag.toJSON() : <any>undefined;
60088
- data["created"] = this.created ? this.created.toISOString() : <any>undefined;
60089
- data["createdBy"] = this.createdBy;
60090
- data["createdById"] = this.createdById;
60091
- data["updatedBy"] = this.updatedBy;
60092
- data["updatedById"] = this.updatedById;
60093
- data["insertAuditInfo"] = this.insertAuditInfo ? this.insertAuditInfo.toJSON() : <any>undefined;
60094
- return data;
60095
- }
60096
- }
60097
-
60098
- export interface ITableEntityBase {
60099
- partitionKey?: string;
60100
- rowKey?: string;
60101
- timestamp?: Date | null;
60102
- eTag?: ETag;
60103
- created?: Date | null;
60104
- createdBy?: string | null;
60105
- createdById?: string | null;
60106
- updatedBy?: string | null;
60107
- updatedById?: string | null;
60108
- insertAuditInfo?: AuditInfo;
60109
- }
60110
-
60111
- export class WorkorderDiscussionMessage extends TableEntityBase implements IWorkorderDiscussionMessage {
60112
- content?: string;
60113
- senderUpn?: string;
60114
- senderName?: string;
60115
- operationId?: string | null;
60116
- operationName?: string | null;
60117
- resourceId?: string | null;
60118
-
60119
- constructor(data?: IWorkorderDiscussionMessage) {
60120
- super(data);
60121
- }
60122
-
60123
- override init(_data?: any) {
60124
- super.init(_data);
60125
- if (_data) {
60146
+ this.id = _data["id"];
60147
+ this.workorderId = _data["workorderId"];
60148
+ this.companyId = _data["companyId"];
60126
60149
  this.content = _data["content"];
60127
60150
  this.senderUpn = _data["senderUpn"];
60128
60151
  this.senderName = _data["senderName"];
60129
60152
  this.operationId = _data["operationId"];
60130
60153
  this.operationName = _data["operationName"];
60131
60154
  this.resourceId = _data["resourceId"];
60155
+ this.created = _data["created"] ? new Date(_data["created"].toString()) : <any>undefined;
60132
60156
  }
60133
60157
  }
60134
60158
 
60135
- static override fromJS(data: any): WorkorderDiscussionMessage {
60159
+ static fromJS(data: any): WorkorderDiscussionMessageDto {
60136
60160
  data = typeof data === 'object' ? data : {};
60137
- let result = new WorkorderDiscussionMessage();
60161
+ let result = new WorkorderDiscussionMessageDto();
60138
60162
  result.init(data);
60139
60163
  return result;
60140
60164
  }
60141
60165
 
60142
- override toJSON(data?: any) {
60166
+ toJSON(data?: any) {
60143
60167
  data = typeof data === 'object' ? data : {};
60168
+ data["id"] = this.id;
60169
+ data["workorderId"] = this.workorderId;
60170
+ data["companyId"] = this.companyId;
60144
60171
  data["content"] = this.content;
60145
60172
  data["senderUpn"] = this.senderUpn;
60146
60173
  data["senderName"] = this.senderName;
60147
60174
  data["operationId"] = this.operationId;
60148
60175
  data["operationName"] = this.operationName;
60149
60176
  data["resourceId"] = this.resourceId;
60150
- super.toJSON(data);
60177
+ data["created"] = this.created ? this.created.toISOString() : <any>undefined;
60151
60178
  return data;
60152
60179
  }
60153
60180
  }
60154
60181
 
60155
- export interface IWorkorderDiscussionMessage extends ITableEntityBase {
60182
+ export interface IWorkorderDiscussionMessageDto {
60183
+ id?: string;
60184
+ workorderId?: string;
60185
+ companyId?: string;
60156
60186
  content?: string;
60157
60187
  senderUpn?: string;
60158
60188
  senderName?: string;
60159
60189
  operationId?: string | null;
60160
60190
  operationName?: string | null;
60161
60191
  resourceId?: string | null;
60192
+ created?: Date;
60162
60193
  }
60163
60194
 
60164
- /** Represents an HTTP ETag. */
60165
- export class ETag implements IETag {
60195
+ export class AddDiscussionMessageRequest implements IAddDiscussionMessageRequest {
60196
+ companyId?: string;
60197
+ message?: string;
60198
+ senderUpn?: string;
60199
+ senderName?: string;
60200
+ operationId?: string | null;
60201
+ operationName?: string | null;
60202
+ resourceId?: string | null;
60166
60203
 
60167
- constructor(data?: IETag) {
60204
+ constructor(data?: IAddDiscussionMessageRequest) {
60168
60205
  if (data) {
60169
60206
  for (var property in data) {
60170
60207
  if (data.hasOwnProperty(property))
@@ -60174,31 +60211,55 @@ export class ETag implements IETag {
60174
60211
  }
60175
60212
 
60176
60213
  init(_data?: any) {
60214
+ if (_data) {
60215
+ this.companyId = _data["companyId"];
60216
+ this.message = _data["message"];
60217
+ this.senderUpn = _data["senderUpn"];
60218
+ this.senderName = _data["senderName"];
60219
+ this.operationId = _data["operationId"];
60220
+ this.operationName = _data["operationName"];
60221
+ this.resourceId = _data["resourceId"];
60222
+ }
60177
60223
  }
60178
60224
 
60179
- static fromJS(data: any): ETag {
60225
+ static fromJS(data: any): AddDiscussionMessageRequest {
60180
60226
  data = typeof data === 'object' ? data : {};
60181
- let result = new ETag();
60227
+ let result = new AddDiscussionMessageRequest();
60182
60228
  result.init(data);
60183
60229
  return result;
60184
60230
  }
60185
60231
 
60186
60232
  toJSON(data?: any) {
60187
60233
  data = typeof data === 'object' ? data : {};
60234
+ data["companyId"] = this.companyId;
60235
+ data["message"] = this.message;
60236
+ data["senderUpn"] = this.senderUpn;
60237
+ data["senderName"] = this.senderName;
60238
+ data["operationId"] = this.operationId;
60239
+ data["operationName"] = this.operationName;
60240
+ data["resourceId"] = this.resourceId;
60188
60241
  return data;
60189
60242
  }
60190
60243
  }
60191
60244
 
60192
- /** Represents an HTTP ETag. */
60193
- export interface IETag {
60245
+ export interface IAddDiscussionMessageRequest {
60246
+ companyId?: string;
60247
+ message?: string;
60248
+ senderUpn?: string;
60249
+ senderName?: string;
60250
+ operationId?: string | null;
60251
+ operationName?: string | null;
60252
+ resourceId?: string | null;
60194
60253
  }
60195
60254
 
60196
- export class AuditInfo implements IAuditInfo {
60197
- objectId?: string;
60198
- userId?: string;
60199
- userFullName?: string | null;
60255
+ export class WorkorderDiscussionReadStatusDto implements IWorkorderDiscussionReadStatusDto {
60256
+ workorderId?: string;
60257
+ operationId?: string | null;
60258
+ resourceId?: string | null;
60259
+ userUpn?: string;
60260
+ lastRead?: Date;
60200
60261
 
60201
- constructor(data?: IAuditInfo) {
60262
+ constructor(data?: IWorkorderDiscussionReadStatusDto) {
60202
60263
  if (data) {
60203
60264
  for (var property in data) {
60204
60265
  if (data.hasOwnProperty(property))
@@ -60209,41 +60270,47 @@ export class AuditInfo implements IAuditInfo {
60209
60270
 
60210
60271
  init(_data?: any) {
60211
60272
  if (_data) {
60212
- this.objectId = _data["objectId"];
60213
- this.userId = _data["userId"];
60214
- this.userFullName = _data["userFullName"];
60273
+ this.workorderId = _data["workorderId"];
60274
+ this.operationId = _data["operationId"];
60275
+ this.resourceId = _data["resourceId"];
60276
+ this.userUpn = _data["userUpn"];
60277
+ this.lastRead = _data["lastRead"] ? new Date(_data["lastRead"].toString()) : <any>undefined;
60215
60278
  }
60216
60279
  }
60217
60280
 
60218
- static fromJS(data: any): AuditInfo {
60281
+ static fromJS(data: any): WorkorderDiscussionReadStatusDto {
60219
60282
  data = typeof data === 'object' ? data : {};
60220
- let result = new AuditInfo();
60283
+ let result = new WorkorderDiscussionReadStatusDto();
60221
60284
  result.init(data);
60222
60285
  return result;
60223
60286
  }
60224
60287
 
60225
60288
  toJSON(data?: any) {
60226
60289
  data = typeof data === 'object' ? data : {};
60227
- data["objectId"] = this.objectId;
60228
- data["userId"] = this.userId;
60229
- data["userFullName"] = this.userFullName;
60290
+ data["workorderId"] = this.workorderId;
60291
+ data["operationId"] = this.operationId;
60292
+ data["resourceId"] = this.resourceId;
60293
+ data["userUpn"] = this.userUpn;
60294
+ data["lastRead"] = this.lastRead ? this.lastRead.toISOString() : <any>undefined;
60230
60295
  return data;
60231
60296
  }
60232
60297
  }
60233
60298
 
60234
- export interface IAuditInfo {
60235
- objectId?: string;
60236
- userId?: string;
60237
- userFullName?: string | null;
60299
+ export interface IWorkorderDiscussionReadStatusDto {
60300
+ workorderId?: string;
60301
+ operationId?: string | null;
60302
+ resourceId?: string | null;
60303
+ userUpn?: string;
60304
+ lastRead?: Date;
60238
60305
  }
60239
60306
 
60240
- export class AddDiscussionMessageRequest implements IAddDiscussionMessageRequest {
60241
- message?: string;
60307
+ export class SetDiscussionLastRead implements ISetDiscussionLastRead {
60308
+ workorderId?: string;
60242
60309
  operationId?: string | null;
60243
- operationName?: string | null;
60244
60310
  resourceId?: string | null;
60311
+ userUpn?: string;
60245
60312
 
60246
- constructor(data?: IAddDiscussionMessageRequest) {
60313
+ constructor(data?: ISetDiscussionLastRead) {
60247
60314
  if (data) {
60248
60315
  for (var property in data) {
60249
60316
  if (data.hasOwnProperty(property))
@@ -60254,35 +60321,35 @@ export class AddDiscussionMessageRequest implements IAddDiscussionMessageRequest
60254
60321
 
60255
60322
  init(_data?: any) {
60256
60323
  if (_data) {
60257
- this.message = _data["message"];
60324
+ this.workorderId = _data["workorderId"];
60258
60325
  this.operationId = _data["operationId"];
60259
- this.operationName = _data["operationName"];
60260
60326
  this.resourceId = _data["resourceId"];
60327
+ this.userUpn = _data["userUpn"];
60261
60328
  }
60262
60329
  }
60263
60330
 
60264
- static fromJS(data: any): AddDiscussionMessageRequest {
60331
+ static fromJS(data: any): SetDiscussionLastRead {
60265
60332
  data = typeof data === 'object' ? data : {};
60266
- let result = new AddDiscussionMessageRequest();
60333
+ let result = new SetDiscussionLastRead();
60267
60334
  result.init(data);
60268
60335
  return result;
60269
60336
  }
60270
60337
 
60271
60338
  toJSON(data?: any) {
60272
60339
  data = typeof data === 'object' ? data : {};
60273
- data["message"] = this.message;
60340
+ data["workorderId"] = this.workorderId;
60274
60341
  data["operationId"] = this.operationId;
60275
- data["operationName"] = this.operationName;
60276
60342
  data["resourceId"] = this.resourceId;
60343
+ data["userUpn"] = this.userUpn;
60277
60344
  return data;
60278
60345
  }
60279
60346
  }
60280
60347
 
60281
- export interface IAddDiscussionMessageRequest {
60282
- message?: string;
60348
+ export interface ISetDiscussionLastRead {
60349
+ workorderId?: string;
60283
60350
  operationId?: string | null;
60284
- operationName?: string | null;
60285
60351
  resourceId?: string | null;
60352
+ userUpn?: string;
60286
60353
  }
60287
60354
 
60288
60355
  function formatDate(d: Date) {