@things-factory/operato-ecs 6.2.0 → 6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,21 @@
1
+ import '@things-factory/notification'
2
+ import '@things-factory/board-ui'
1
3
  import '@operato/i18n/ox-i18n.js'
2
4
 
3
5
  import { html } from 'lit-html'
4
6
 
5
7
  import { registerDefaultGroups } from '@operato/board/register-default-groups.js'
6
8
  import { auth } from '@things-factory/auth-base'
9
+ import { hasPrivilege } from '@things-factory/auth-base/dist-client'
7
10
  import { setAuthManagementMenus } from '@things-factory/auth-ui'
11
+ import { APPEND_APP_TOOL } from '@things-factory/apptool-base'
8
12
  import { setupAppToolPart } from '@things-factory/apptool-ui'
9
13
  import { setupMenuPart, updateMenuTemplate } from '@things-factory/lite-menu'
10
14
  import { setupContextUIPart } from '@things-factory/context-ui'
11
15
  import { ADD_MORENDA } from '@things-factory/more-base'
12
16
  import { ADD_SETTING } from '@things-factory/setting-base'
13
17
  import { navigate, store } from '@things-factory/shell'
18
+ import { appendViewpart, toggleOverlay, TOOL_POSITION, VIEWPART_POSITION } from '@operato/layout'
14
19
 
15
20
  console.log(
16
21
  `%c
@@ -42,90 +47,103 @@ export default async function bootstrap() {
42
47
  registerDefaultGroups()
43
48
 
44
49
  /* set auth management menus into more-panel */
45
- auth.on('profile', async ({ credential }) => {
46
- setAuthManagementMenus(credential)
47
- })
50
+ setAuthManagementMenus()
48
51
 
49
- auth.on('profile', async ({ credential }) => {
50
- if (credential.owner) {
51
- store.dispatch({
52
- type: ADD_MORENDA,
53
- morenda: {
54
- icon: html` <mwc-icon>device_hub</mwc-icon> `,
55
- name: html` <ox-i18n msgid="text.connection"></ox-i18n> `,
56
- action: () => {
57
- navigate('connection')
58
- }
52
+ if (await hasPrivilege({ name: 'mutation', category: 'user', domainOwnerGranted: true, superUserGranted: true })) {
53
+ store.dispatch({
54
+ type: ADD_MORENDA,
55
+ morenda: {
56
+ icon: html` <mwc-icon>vpn_key</mwc-icon> `,
57
+ name: html` <ox-i18n msgid="text.oauth2-clients"></ox-i18n> `,
58
+ action: () => {
59
+ navigate('oauth2-clients')
59
60
  }
60
- })
61
-
62
- store.dispatch({
63
- type: ADD_MORENDA,
64
- morenda: {
65
- icon: html` <mwc-icon>format_list_numbered</mwc-icon> `,
66
- name: html` <ox-i18n msgid="text.scenario"></ox-i18n> `,
67
- action: () => {
68
- navigate('scenario')
69
- }
61
+ }
62
+ })
63
+ }
64
+
65
+ if (await hasPrivilege({ name: 'mutation', category: 'board', domainOwnerGranted: true })) {
66
+ store.dispatch({
67
+ type: ADD_MORENDA,
68
+ morenda: {
69
+ icon: html` <mwc-icon>font_download</mwc-icon> `,
70
+ name: html` <ox-i18n msgid="menu.fonts"></ox-i18n> `,
71
+ action: () => {
72
+ navigate('font-list')
70
73
  }
71
- })
72
-
73
- store.dispatch({
74
- type: ADD_MORENDA,
75
- morenda: {
76
- icon: html` <mwc-icon>font_download</mwc-icon> `,
77
- name: html` <ox-i18n msgid="menu.fonts"></ox-i18n> `,
78
- action: () => {
79
- navigate('font-list')
80
- }
74
+ }
75
+ })
76
+
77
+ store.dispatch({
78
+ type: ADD_MORENDA,
79
+ morenda: {
80
+ icon: html` <mwc-icon>attachment</mwc-icon> `,
81
+ name: html` <ox-i18n msgid="menu.attachments"></ox-i18n> `,
82
+ action: () => {
83
+ navigate('attachment-list')
81
84
  }
82
- })
83
-
84
- store.dispatch({
85
- type: ADD_MORENDA,
86
- morenda: {
87
- icon: html` <mwc-icon>attachment</mwc-icon> `,
88
- name: html` <ox-i18n msgid="menu.attachments"></ox-i18n> `,
89
- action: () => {
90
- navigate('attachment-list')
91
- }
85
+ }
86
+ })
87
+
88
+ store.dispatch({
89
+ type: ADD_MORENDA,
90
+ morenda: {
91
+ icon: html` <mwc-icon>dvr</mwc-icon> `,
92
+ name: html` <ox-i18n msgid="menu.board-list"></ox-i18n> `,
93
+ action: () => {
94
+ navigate('board-list')
92
95
  }
93
- })
94
-
95
- store.dispatch({
96
- type: ADD_MORENDA,
97
- morenda: {
98
- icon: html` <mwc-icon>dvr</mwc-icon> `,
99
- name: html` <ox-i18n msgid="menu.board-list"></ox-i18n> `,
100
- action: () => {
101
- navigate('board-list')
102
- }
96
+ }
97
+ })
98
+
99
+ store.dispatch({
100
+ type: ADD_MORENDA,
101
+ morenda: {
102
+ icon: html` <mwc-icon>airplay</mwc-icon> `,
103
+ name: html` <ox-i18n msgid="menu.play-groups"></ox-i18n> `,
104
+ action: () => {
105
+ navigate('play-list')
103
106
  }
104
- })
105
-
106
- store.dispatch({
107
- type: ADD_MORENDA,
108
- morenda: {
109
- icon: html` <mwc-icon>airplay</mwc-icon> `,
110
- name: html` <ox-i18n msgid="menu.play-groups"></ox-i18n> `,
111
- action: () => {
112
- navigate('play-list')
113
- }
107
+ }
108
+ })
109
+ }
110
+
111
+ if (await hasPrivilege({ name: 'mutation', category: 'scenario', domainOwnerGranted: true })) {
112
+ store.dispatch({
113
+ type: ADD_MORENDA,
114
+ morenda: {
115
+ icon: html` <mwc-icon>device_hub</mwc-icon> `,
116
+ name: html` <ox-i18n msgid="text.connection"></ox-i18n> `,
117
+ action: () => {
118
+ navigate('connection')
119
+ }
120
+ }
121
+ })
122
+
123
+ store.dispatch({
124
+ type: ADD_MORENDA,
125
+ morenda: {
126
+ icon: html` <mwc-icon>format_list_numbered</mwc-icon> `,
127
+ name: html` <ox-i18n msgid="text.scenario"></ox-i18n> `,
128
+ action: () => {
129
+ navigate('scenario')
114
130
  }
115
- })
116
-
117
- store.dispatch({
118
- type: ADD_MORENDA,
119
- morenda: {
120
- icon: html` <mwc-icon>vpn_key</mwc-icon> `,
121
- name: html` <ox-i18n msgid="text.oauth2-clients"></ox-i18n> `,
122
- action: () => {
123
- navigate('oauth2-clients')
124
- }
131
+ }
132
+ })
133
+
134
+ store.dispatch({
135
+ type: ADD_MORENDA,
136
+ morenda: {
137
+ icon: html` <mwc-icon>hub</mwc-icon> `,
138
+ name: html` <ox-i18n msgid="text.integration analysis"></ox-i18n>&nbsp;(beta)`,
139
+ action: () => {
140
+ navigate('integration-analysis')
125
141
  }
126
- })
127
- }
142
+ }
143
+ })
144
+ }
128
145
 
146
+ auth.on('profile', async ({ credential }) => {
129
147
  store.dispatch({
130
148
  type: ADD_MORENDA,
131
149
  morenda: {
@@ -155,5 +173,50 @@ export default async function bootstrap() {
155
173
  template: html` <lite-menu-setting-let></lite-menu-setting-let> `
156
174
  }
157
175
  })
176
+
177
+ /* setting app-tools */
178
+ store.dispatch({
179
+ type: APPEND_APP_TOOL,
180
+ tool: {
181
+ name: 'notification-badge',
182
+ template: html`
183
+ <notification-badge
184
+ @click=${e => {
185
+ toggleOverlay('notification', {
186
+ backdrop: true
187
+ })
188
+ }}
189
+ >
190
+ </notification-badge>
191
+ `,
192
+ position: TOOL_POSITION.REAR
193
+ }
194
+ })
195
+
196
+ appendViewpart({
197
+ name: 'notification',
198
+ viewpart: {
199
+ show: false,
200
+ hovering: 'edge',
201
+ template: html` <notification-list style="min-width: 300px;"></notification-list> `
202
+ },
203
+ position: VIEWPART_POSITION.ASIDEBAR
204
+ })
205
+
206
+ store.dispatch({
207
+ type: ADD_SETTING,
208
+ setting: {
209
+ seq: 20,
210
+ template: html` <notification-setting-let></notification-setting-let> `
211
+ }
212
+ })
213
+
214
+ store.dispatch({
215
+ type: ADD_SETTING,
216
+ setting: {
217
+ seq: 21,
218
+ template: html` <board-view-setting-let></board-view-setting-let> `
219
+ }
220
+ })
158
221
  })
159
222
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-ecs",
3
- "version": "6.2.0",
3
+ "version": "6.2.1",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -45,6 +45,7 @@
45
45
  "@operato/scene-form": "^1.0.0",
46
46
  "@operato/scene-gauge": "^1.0.0",
47
47
  "@operato/scene-half-roundrect": "^1.0.0",
48
+ "@operato/scene-image-slider": "^1.0.0",
48
49
  "@operato/scene-integration": "^1.0.0",
49
50
  "@operato/scene-news-ticker": "^1.0.0",
50
51
  "@operato/scene-progressbar": "^1.0.0",
@@ -55,7 +56,7 @@
55
56
  "@operato/scene-timer": "^1.0.0",
56
57
  "@things-factory/api": "^6.2.0",
57
58
  "@things-factory/apptool-ui": "^6.2.0",
58
- "@things-factory/auth-ui": "^6.2.0",
59
+ "@things-factory/auth-ui": "^6.2.1",
59
60
  "@things-factory/board-service": "^6.2.0",
60
61
  "@things-factory/board-ui": "^6.2.0",
61
62
  "@things-factory/context-ui": "^6.2.0",
@@ -69,9 +70,10 @@
69
70
  "@things-factory/integration-ui": "^6.2.0",
70
71
  "@things-factory/lite-menu": "^6.2.0",
71
72
  "@things-factory/more-ui": "^6.2.0",
73
+ "@things-factory/notification": "^6.2.1",
72
74
  "@things-factory/oauth2-client": "^6.2.0",
73
75
  "@things-factory/print-ui": "^6.2.0",
74
- "@things-factory/resource-ui": "^6.2.0",
76
+ "@things-factory/resource-ui": "^6.2.1",
75
77
  "@things-factory/setting-base": "^6.2.0",
76
78
  "@things-factory/setting-ui": "^6.2.0",
77
79
  "@things-factory/shell": "^6.2.0",
@@ -80,5 +82,5 @@
80
82
  "devDependencies": {
81
83
  "@things-factory/builder": "^6.2.0"
82
84
  },
83
- "gitHead": "2a98db1ae602fa3b2c73ffbcdd1cf3262a793d84"
85
+ "gitHead": "9f31c9e1266a516f3fd0968fd7c79645c943262b"
84
86
  }
package/schema.graphql CHANGED
@@ -3,6 +3,15 @@
3
3
  # !!! DO NOT MODIFY THIS FILE BY YOURSELF !!!
4
4
  # -----------------------------------------------
5
5
 
6
+ input APIDocCompletionInput {
7
+ code: String!
8
+ language: String
9
+ }
10
+
11
+ type APIDocCompletionOutput {
12
+ message: String
13
+ }
14
+
6
15
  type AccessToken {
7
16
  accesToken: String!
8
17
  refreshToken: String!
@@ -119,6 +128,64 @@ enum ApplicationType {
119
128
  XILNEX
120
129
  }
121
130
 
131
+ """Entity for ApprovalLine"""
132
+ type ApprovalLine {
133
+ createdAt: DateTimeISO
134
+ creator: User
135
+ description: String
136
+ domain: Domain
137
+ id: ID!
138
+ model: [ApprovalLineItem!]
139
+ name: String
140
+ owner: ApprovalLineOwner
141
+ ownerEmployee: Employee
142
+ ownerType: String
143
+ ownerValue: String
144
+ updatedAt: DateTimeISO
145
+ updater: User
146
+ }
147
+
148
+ """Entity for approval line item"""
149
+ type ApprovalLineItem {
150
+ approver: OrgMemberTarget
151
+ type: String
152
+ value: String
153
+ }
154
+
155
+ type ApprovalLineList {
156
+ items: [ApprovalLine!]!
157
+ total: Int!
158
+ }
159
+
160
+ type ApprovalLineOwner {
161
+ controlNo: String
162
+
163
+ """Field description"""
164
+ description: String
165
+
166
+ """Field id"""
167
+ id: ID!
168
+
169
+ """Field name"""
170
+ name: String
171
+ }
172
+
173
+ """type enumeration of a approvalLineOwner"""
174
+ enum ApprovalLineOwnerType {
175
+ Common
176
+ Employee
177
+ }
178
+
179
+ input ApprovalLinePatch {
180
+ cuFlag: String
181
+ description: String
182
+ id: ID
183
+ model: Object
184
+ name: String
185
+ owner: ObjectRefApprovalLineOwnerType
186
+ ownerType: ApprovalLineOwnerType
187
+ }
188
+
122
189
  type Attachment {
123
190
  category: String
124
191
  createdAt: DateTimeISO!
@@ -383,6 +450,24 @@ enum BoardTemplateStatus {
383
450
  RELEASED
384
451
  }
385
452
 
453
+ input ChatCompletionInput {
454
+ content: String!
455
+ }
456
+
457
+ type ChatCompletionOutput {
458
+ message: String
459
+ }
460
+
461
+ input CodeDecipherInput {
462
+ code: String!
463
+ language: String
464
+ system: String
465
+ }
466
+
467
+ type CodeDecipherOutput {
468
+ message: String
469
+ }
470
+
386
471
  """Entity for CommonCode"""
387
472
  type CommonCode {
388
473
  createdAt: DateTimeISO
@@ -492,6 +577,57 @@ type ConnectorType {
492
577
  taskPrefixes: [String!]
493
578
  }
494
579
 
580
+ """Entity for Contact"""
581
+ type Contact {
582
+ address: String
583
+ company: String
584
+ createdAt: DateTimeISO
585
+ creator: User
586
+ deletedAt: DateTimeISO
587
+ department: String
588
+ domain: Domain
589
+ email: String
590
+ id: ID!
591
+ items: [ContactItem!]
592
+ name: String
593
+ note: String
594
+ phone: String
595
+ profile: Profile
596
+ updatedAt: DateTimeISO
597
+ updater: User
598
+ }
599
+
600
+ type ContactItem {
601
+ label: String!
602
+ type: String!
603
+ value: String!
604
+ }
605
+
606
+ input ContactItemPatch {
607
+ label: String!
608
+ type: String!
609
+ value: String!
610
+ }
611
+
612
+ type ContactList {
613
+ items: [Contact!]!
614
+ total: Int!
615
+ }
616
+
617
+ input ContactPatch {
618
+ address: String
619
+ company: String
620
+ cuFlag: String
621
+ department: String
622
+ email: String
623
+ id: ID
624
+ items: [ContactItemPatch!]
625
+ name: String
626
+ note: String
627
+ phone: String
628
+ profile: ProfileInput
629
+ }
630
+
495
631
  type Data {
496
632
  """Data delivered by subscription"""
497
633
  data: Object
@@ -503,11 +639,61 @@ type Data {
503
639
  tag: String!
504
640
  }
505
641
 
642
+ """Date custom scalar type"""
643
+ scalar Date
644
+
506
645
  """
507
646
  A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.This scalar is serialized to a string in ISO 8601 format and parsed from a string in ISO 8601 format.
508
647
  """
509
648
  scalar DateTimeISO
510
649
 
650
+ """Entity for Department"""
651
+ type Department {
652
+ active: Boolean
653
+ children: [Department!]!
654
+ controlNo: String!
655
+ createdAt: DateTimeISO
656
+ creator: User
657
+ deletedAt: DateTimeISO
658
+ description: String
659
+ domain: Domain
660
+ extension: String
661
+ id: ID!
662
+ manager: Employee
663
+ members: [Employee!]!
664
+ name: String
665
+ parent: Department
666
+ picture: String
667
+ state: String
668
+ updatedAt: DateTimeISO
669
+ updater: User
670
+ version: Float
671
+ }
672
+
673
+ type DepartmentList {
674
+ items: [Department!]!
675
+ total: Int!
676
+ }
677
+
678
+ input DepartmentPatch {
679
+ active: Boolean
680
+ controlNo: String
681
+ cuFlag: String
682
+ description: String
683
+ id: ID
684
+ manager: ObjectRefForEmployee
685
+ name: String
686
+ parent: ObjectRef
687
+ picture: Upload
688
+ state: DepartmentStatus
689
+ }
690
+
691
+ """state enumeration of a department"""
692
+ enum DepartmentStatus {
693
+ STATUS_A
694
+ STATUS_B
695
+ }
696
+
511
697
  type Domain {
512
698
  attributes: Object
513
699
  brandImage: String
@@ -566,6 +752,72 @@ input DomainUserRoleInput {
566
752
  users: [NewUserByDomainWizardInput!]!
567
753
  }
568
754
 
755
+ """Entity for Employee"""
756
+ type Employee {
757
+ active: Boolean
758
+ address: String!
759
+ alias: String
760
+ approvalLines: [ApprovalLine!]!
761
+ contact: Contact
762
+ controlNo: String!
763
+ createdAt: DateTimeISO
764
+ creator: User
765
+ deletedAt: DateTimeISO
766
+ department: Department
767
+ domain: Domain
768
+ email: String
769
+ extension: String
770
+ hiredOn: String
771
+ id: ID!
772
+ jobPosition: String
773
+ jobResponsibility: String
774
+ manages: [Department!]!
775
+ name: String
776
+ note: String
777
+ phone: String
778
+ photo: String
779
+ profile: Profile
780
+ retiredAt: String
781
+ supervises: [Employee!]!
782
+ supervisor: Employee
783
+ type: String
784
+ updatedAt: DateTimeISO
785
+ updater: User
786
+ user: User
787
+ version: Float
788
+ }
789
+
790
+ type EmployeeList {
791
+ items: [Employee!]!
792
+ total: Int!
793
+ }
794
+
795
+ input EmployeePatch {
796
+ active: Boolean
797
+ alias: String
798
+ controlNo: String
799
+ cuFlag: String
800
+ department: ObjectRef
801
+ hiredOn: String
802
+ id: ID
803
+ jobPosition: String
804
+ jobResponsibility: String
805
+ name: String
806
+ note: String
807
+ photo: Upload
808
+ retiredAt: String
809
+ supervisor: ObjectRefForEmployee
810
+ type: EmployeeType
811
+ user: ObjectRefForUser
812
+ }
813
+
814
+ """type enumeration of a employee"""
815
+ enum EmployeeType {
816
+ FULLTIME
817
+ PARTTIME
818
+ TEMPORARY
819
+ }
820
+
569
821
  """Entity for Entity"""
570
822
  type Entity {
571
823
  active: Boolean
@@ -830,6 +1082,16 @@ input GroupPatch {
830
1082
  name: String
831
1083
  }
832
1084
 
1085
+ input ImageCompletionInput {
1086
+ count: Float!
1087
+ description: String!
1088
+ size: String!
1089
+ }
1090
+
1091
+ type ImageCompletionOutput {
1092
+ images: String
1093
+ }
1094
+
833
1095
  enum InheritedValueType {
834
1096
  Include
835
1097
  None
@@ -1277,6 +1539,9 @@ input MenuPatch {
1277
1539
  type Mutation {
1278
1540
  """To activate user"""
1279
1541
  activateUser(userId: String!): Boolean!
1542
+
1543
+ """To attach a contact on Employee"""
1544
+ attachContact(contactId: String!, id: String!): Employee!
1280
1545
  cancelInvitation(email: String!, reference: String!, type: String!): Boolean!
1281
1546
 
1282
1547
  """To clone a Board from existing Board"""
@@ -1293,6 +1558,9 @@ type Mutation {
1293
1558
 
1294
1559
  """To create new application"""
1295
1560
  createApplication(application: NewApplication!): Application!
1561
+
1562
+ """To create new ApprovalLine"""
1563
+ createApprovalLine(approvalLine: NewApprovalLine!): ApprovalLine!
1296
1564
  createAttachment(attachment: NewAttachment!): Attachment!
1297
1565
  createAttachments(attachments: [NewAttachment!]!): [Attachment!]!
1298
1566
 
@@ -1317,9 +1585,18 @@ type Mutation {
1317
1585
  """To create new connection"""
1318
1586
  createConnection(connection: NewConnection!): Connection!
1319
1587
 
1588
+ """To create new Contact"""
1589
+ createContact(contact: NewContact!): Contact!
1590
+
1591
+ """To create new Department"""
1592
+ createDepartment(department: NewDepartment!): Department!
1593
+
1320
1594
  """To create domain (Only superuser is granted this privilege.)"""
1321
1595
  createDomain(domainInput: DomainPatch!): Domain!
1322
1596
 
1597
+ """To create new Employee"""
1598
+ createEmployee(employee: NewEmployee!): Employee!
1599
+
1323
1600
  """To create new Entity"""
1324
1601
  createEntity(entity: NewEntity!): Entity!
1325
1602
 
@@ -1356,6 +1633,15 @@ type Mutation {
1356
1633
  """To create new MenuDetailColumn"""
1357
1634
  createMenuDetailColumn(menuDetailColumn: NewMenuDetailColumn!): MenuDetailColumn!
1358
1635
 
1636
+ """To create new ApprovalLine for current user"""
1637
+ createMyApprovalLine(approvalLine: NewApprovalLine!): ApprovalLine!
1638
+
1639
+ """To create new Notification"""
1640
+ createNotification(notification: NewNotification!): Notification!
1641
+
1642
+ """To create new NotificationRule"""
1643
+ createNotificationRule(notificationRule: NewNotificationRule!): NotificationRule!
1644
+
1359
1645
  """To create new Oauth2Client"""
1360
1646
  createOauth2Client(oauth2Client: NewOauth2Client!): Oauth2Client!
1361
1647
 
@@ -1395,6 +1681,12 @@ type Mutation {
1395
1681
 
1396
1682
  """To delete application"""
1397
1683
  deleteApplication(id: String!): Boolean!
1684
+
1685
+ """To delete ApprovalLine"""
1686
+ deleteApprovalLine(id: String!): Boolean!
1687
+
1688
+ """To delete multiple ApprovalLines"""
1689
+ deleteApprovalLines(ids: [String!]!): Boolean!
1398
1690
  deleteAttachment(id: String!): Boolean!
1399
1691
  deleteAttachmentsByRef(refBys: [String!]!): Boolean!
1400
1692
 
@@ -1432,6 +1724,18 @@ type Mutation {
1432
1724
  """To delete multiple connections"""
1433
1725
  deleteConnections(names: [String!]!): Boolean!
1434
1726
 
1727
+ """To delete Contact"""
1728
+ deleteContact(id: String!): Boolean!
1729
+
1730
+ """To delete multiple Contacts"""
1731
+ deleteContacts(ids: [String!]!): Boolean!
1732
+
1733
+ """To delete Department"""
1734
+ deleteDepartment(id: String!): Boolean!
1735
+
1736
+ """To delete multiple Departments"""
1737
+ deleteDepartments(ids: [String!]!): Boolean!
1738
+
1435
1739
  """To delete domain (Only superuser is granted this privilege.)"""
1436
1740
  deleteDomain(name: String!): Domain!
1437
1741
 
@@ -1441,6 +1745,12 @@ type Mutation {
1441
1745
  """To delete multiple domains (Only superuser is granted this privilege.)"""
1442
1746
  deleteDomains(names: [String!]!): Boolean!
1443
1747
 
1748
+ """To delete Employee"""
1749
+ deleteEmployee(id: String!): Boolean!
1750
+
1751
+ """To delete multiple Employees"""
1752
+ deleteEmployees(ids: [String!]!): Boolean!
1753
+
1444
1754
  """To delete multiple Entities"""
1445
1755
  deleteEntities(ids: [String!]!): Boolean!
1446
1756
 
@@ -1501,6 +1811,24 @@ type Mutation {
1501
1811
  """To delete multiple Menus"""
1502
1812
  deleteMenus(ids: [String!]!): Boolean!
1503
1813
 
1814
+ """To delete ApprovalLine for current user"""
1815
+ deleteMyApprovalLine(id: String!): Boolean!
1816
+
1817
+ """To delete multiple ApprovalLines for current user"""
1818
+ deleteMyApprovalLines(ids: [String!]!): Boolean!
1819
+
1820
+ """To delete Notification"""
1821
+ deleteNotification(id: String!): Boolean!
1822
+
1823
+ """To delete NotificationRule"""
1824
+ deleteNotificationRule(id: String!): Boolean!
1825
+
1826
+ """To delete multiple NotificationRules"""
1827
+ deleteNotificationRules(ids: [String!]!): Boolean!
1828
+
1829
+ """To delete multiple Notificationes"""
1830
+ deleteNotificationes(ids: [String!]!): Boolean!
1831
+
1504
1832
  """To delete Oauth2Client"""
1505
1833
  deleteOauth2Client(id: String!): Boolean!
1506
1834
 
@@ -1567,6 +1895,9 @@ type Mutation {
1567
1895
  """To delete some users"""
1568
1896
  deleteUsers(emails: [String!]!): Boolean!
1569
1897
 
1898
+ """To detach a contact from Employee"""
1899
+ detachContact(id: String!): Employee!
1900
+
1570
1901
  """To disconnect a connection"""
1571
1902
  disconnectConnection(name: String!): Connection!
1572
1903
  domainRegister(domainInput: DomainGeneratorInput!): Domain!
@@ -1579,6 +1910,9 @@ type Mutation {
1579
1910
  getOauth2AuthUrl(id: String!): String!
1580
1911
  grantRoles(customerId: String!, roles: [RolePatch!]!): Boolean!
1581
1912
 
1913
+ """To import multiple ApprovalLines"""
1914
+ importApprovalLines(approvalLines: [ApprovalLinePatch!]!): Boolean!
1915
+
1582
1916
  """To import some Attachments"""
1583
1917
  importAttachments(file: Upload!): [Attachment!]!
1584
1918
 
@@ -1597,6 +1931,15 @@ type Mutation {
1597
1931
  """To import multiple connections"""
1598
1932
  importConnections(connections: [ConnectionPatch!]!): Boolean!
1599
1933
 
1934
+ """To import multiple Contacts"""
1935
+ importContacts(contacts: [ContactPatch!]!): Boolean!
1936
+
1937
+ """To import multiple Departments"""
1938
+ importDepartments(departments: [DepartmentPatch!]!): Boolean!
1939
+
1940
+ """To import multiple Employees"""
1941
+ importEmployees(employees: [EmployeePatch!]!): Boolean!
1942
+
1600
1943
  """To import multiple MenuButtons"""
1601
1944
  importMenuButtons(menuButtons: [MenuButtonPatch!]!): Boolean!
1602
1945
 
@@ -1615,6 +1958,9 @@ type Mutation {
1615
1958
  """To import multiple Menus"""
1616
1959
  importMenus(menus: [MenuPatch!]!): Boolean!
1617
1960
 
1961
+ """To import multiple NotificationRules"""
1962
+ importNotificationRules(notificationRules: [NotificationRulePatch!]!): Boolean!
1963
+
1618
1964
  """To import multiple Oauth2Clients"""
1619
1965
  importOauth2Clients(oauth2Clients: [Oauth2ClientPatch!]!): Boolean!
1620
1966
 
@@ -1692,6 +2038,9 @@ type Mutation {
1692
2038
  transferOwner(email: String!): Boolean!
1693
2039
  updateAppliance(id: String!, patch: AppliancePatch!): Appliance!
1694
2040
  updateApplication(id: String!, patch: ApplicationPatch!): Application!
2041
+
2042
+ """To modify ApprovalLine information"""
2043
+ updateApprovalLine(id: String!, patch: ApprovalLinePatch!): ApprovalLine!
1695
2044
  updateAttachment(id: String!, patch: AttachmentPatch!): Attachment!
1696
2045
 
1697
2046
  """To modify AttributeSet information"""
@@ -1715,12 +2064,21 @@ type Mutation {
1715
2064
  """To modify connection information"""
1716
2065
  updateConnection(name: String!, patch: ConnectionPatch!): Connection!
1717
2066
 
2067
+ """To modify Contact information"""
2068
+ updateContact(id: String!, patch: ContactPatch!): Contact!
2069
+
2070
+ """To modify Department information"""
2071
+ updateDepartment(id: String!, patch: DepartmentPatch!): Department!
2072
+
1718
2073
  """To update domain (Only superuser is granted this privilege.)"""
1719
2074
  updateDomain(name: String!, patch: DomainPatch!): Domain!
1720
2075
 
1721
2076
  """To update multiple domains"""
1722
2077
  updateDomains(patches: [DomainPatch!]!): Boolean!
1723
2078
 
2079
+ """To modify Employee information"""
2080
+ updateEmployee(id: String!, patch: EmployeePatch!): Employee!
2081
+
1724
2082
  """To modify Entity' information"""
1725
2083
  updateEntity(id: String!, patch: EntityPatch!): Entity!
1726
2084
 
@@ -1754,6 +2112,9 @@ type Mutation {
1754
2112
  """To modify MenuDetailColumn information"""
1755
2113
  updateMenuDetailColumn(id: String!, patch: MenuDetailColumnPatch!): MenuDetailColumn!
1756
2114
 
2115
+ """To modify multiple ApprovalLines' information"""
2116
+ updateMultipleApprovalLine(patches: [ApprovalLinePatch!]!): [ApprovalLine!]!
2117
+
1757
2118
  """To modify multiple AttributeSets' information"""
1758
2119
  updateMultipleAttributeSet(patches: [AttributeSetPatch!]!): [AttributeSet!]!
1759
2120
  updateMultipleAuthProvider(patches: [AuthProviderPatch!]!): [AuthProvider!]!
@@ -1767,6 +2128,15 @@ type Mutation {
1767
2128
  """To modify multiple connections' information"""
1768
2129
  updateMultipleConnection(patches: [ConnectionPatch!]!): [Connection!]!
1769
2130
 
2131
+ """To modify multiple Contacts' information"""
2132
+ updateMultipleContact(patches: [ContactPatch!]!): [Contact!]!
2133
+
2134
+ """To modify multiple Departments' information"""
2135
+ updateMultipleDepartment(patches: [DepartmentPatch!]!): [Department!]!
2136
+
2137
+ """To modify multiple Employees' information"""
2138
+ updateMultipleEmployee(patches: [EmployeePatch!]!): [Employee!]!
2139
+
1770
2140
  """To modify multiple Entitys' information"""
1771
2141
  updateMultipleEntity(patches: [EntityPatch!]!): [Entity!]!
1772
2142
 
@@ -1776,6 +2146,15 @@ type Mutation {
1776
2146
  """To modify multiple Menus' information"""
1777
2147
  updateMultipleMenu(patches: [MenuPatch!]!): [Menu!]!
1778
2148
 
2149
+ """To modify multiple ApprovalLines' information for current user"""
2150
+ updateMultipleMyApprovalLine(patches: [ApprovalLinePatch!]!): [ApprovalLine!]!
2151
+
2152
+ """To modify multiple Notificationes' information"""
2153
+ updateMultipleNotification(patches: [NotificationPatch!]!): [Notification!]!
2154
+
2155
+ """To modify multiple NotificationRules' information"""
2156
+ updateMultipleNotificationRule(patches: [NotificationRulePatch!]!): [NotificationRule!]!
2157
+
1779
2158
  """To modify multiple PartnerSettings' information"""
1780
2159
  updateMultiplePartnerSetting(patches: [PartnerSettingPatch!]!): [PartnerSetting!]!
1781
2160
 
@@ -1803,6 +2182,15 @@ type Mutation {
1803
2182
  """To modify multiple users information"""
1804
2183
  updateMultipleUser(patches: [UserPatch!]!): [User!]!
1805
2184
 
2185
+ """To modify ApprovalLine information for current user"""
2186
+ updateMyApprovalLine(id: String!, patch: ApprovalLinePatch!): ApprovalLine!
2187
+
2188
+ """To modify Notification information"""
2189
+ updateNotification(id: String!, patch: NotificationPatch!): Notification!
2190
+
2191
+ """To modify NotificationRule information"""
2192
+ updateNotificationRule(id: String!, patch: NotificationRulePatch!): NotificationRule!
2193
+
1806
2194
  """To modify Oauth2Client information"""
1807
2195
  updateOauth2Client(id: String!, patch: Oauth2ClientPatch!): Oauth2Client!
1808
2196
 
@@ -1866,6 +2254,14 @@ input NewApplication {
1866
2254
  webhook: String
1867
2255
  }
1868
2256
 
2257
+ input NewApprovalLine {
2258
+ description: String
2259
+ model: Object
2260
+ name: String!
2261
+ owner: ObjectRefApprovalLineOwnerType!
2262
+ ownerType: ApprovalLineOwnerType!
2263
+ }
2264
+
1869
2265
  input NewAttachment {
1870
2266
  category: String
1871
2267
  description: String
@@ -1928,6 +2324,48 @@ input NewConnection {
1928
2324
  type: String
1929
2325
  }
1930
2326
 
2327
+ input NewContact {
2328
+ address: String
2329
+ company: String
2330
+ department: String
2331
+ email: String
2332
+ items: [ContactItemPatch!]
2333
+ name: String!
2334
+ note: String
2335
+ phone: String
2336
+ profile: ProfileInput
2337
+ }
2338
+
2339
+ input NewDepartment {
2340
+ active: Boolean
2341
+ controlNo: String!
2342
+ description: String
2343
+ extension: String
2344
+ manager: ObjectRefForEmployee
2345
+ name: String!
2346
+ parent: ObjectRef
2347
+ picture: Upload
2348
+ state: DepartmentStatus
2349
+ }
2350
+
2351
+ input NewEmployee {
2352
+ active: Boolean
2353
+ alias: String
2354
+ controlNo: String!
2355
+ department: ObjectRef
2356
+ extension: String
2357
+ hiredOn: String
2358
+ jobPosition: String
2359
+ jobResponsibility: String
2360
+ name: String!
2361
+ note: String
2362
+ photo: Upload
2363
+ retiredAt: String
2364
+ supervisor: ObjectRefForEmployee
2365
+ type: EmployeeType
2366
+ user: ObjectRefForUser
2367
+ }
2368
+
1931
2369
  input NewEntity {
1932
2370
  active: Boolean
1933
2371
  association: String
@@ -2157,6 +2595,29 @@ input NewMenuDetailColumn {
2157
2595
  virtualField: Boolean
2158
2596
  }
2159
2597
 
2598
+ input NewNotification {
2599
+ body: String
2600
+ image: String
2601
+ ownerId: String
2602
+ property: Object
2603
+ subject: String
2604
+ timestamp: DateTimeISO
2605
+ title: String
2606
+ type: String
2607
+ url: String
2608
+ }
2609
+
2610
+ input NewNotificationRule {
2611
+ active: Boolean
2612
+ body: String
2613
+ description: String
2614
+ name: String!
2615
+ state: NotificationRuleStatus
2616
+ thumbnail: Upload
2617
+ title: String
2618
+ url: String
2619
+ }
2620
+
2160
2621
  input NewOauth2Client {
2161
2622
  accessToken: String
2162
2623
  accessTokenUrl: String
@@ -2270,6 +2731,89 @@ input NewUserByDomainWizardInput {
2270
2731
  roles: [NewRole!]!
2271
2732
  }
2272
2733
 
2734
+ """Entity for Notification"""
2735
+ type Notification {
2736
+ body: String
2737
+ createdAt: DateTimeISO
2738
+ creator: User
2739
+ domain: Domain
2740
+ id: ID!
2741
+ image: String
2742
+ owner: User
2743
+ property: Object
2744
+ state: String
2745
+ subject: String
2746
+ timestamp: Date
2747
+ title: String
2748
+ type: String
2749
+ updatedAt: DateTimeISO
2750
+ updater: User
2751
+ url: String
2752
+ }
2753
+
2754
+ type NotificationList {
2755
+ items: [Notification!]!
2756
+ total: Int!
2757
+ }
2758
+
2759
+ input NotificationPatch {
2760
+ cuFlag: String
2761
+ id: ID
2762
+ state: NotificationStatus
2763
+ }
2764
+
2765
+ """Entity for NotificationRule"""
2766
+ type NotificationRule {
2767
+ body: String
2768
+ channels: String
2769
+ createdAt: DateTimeISO
2770
+ creator: User
2771
+ deletedAt: DateTimeISO
2772
+ description: String
2773
+ domain: Domain
2774
+ id: ID!
2775
+ name: String
2776
+
2777
+ """notification recipients."""
2778
+ recipients: [RecipientItem!]
2779
+ state: String
2780
+ thumbnail: String
2781
+ title: String
2782
+ updatedAt: DateTimeISO
2783
+ updater: User
2784
+ url: String
2785
+ version: Float
2786
+ }
2787
+
2788
+ type NotificationRuleList {
2789
+ items: [NotificationRule!]!
2790
+ total: Int!
2791
+ }
2792
+
2793
+ input NotificationRulePatch {
2794
+ body: String
2795
+ cuFlag: String
2796
+ description: String
2797
+ id: ID
2798
+ name: String
2799
+ state: NotificationRuleStatus
2800
+ thumbnail: Upload
2801
+ title: String
2802
+ url: String
2803
+ }
2804
+
2805
+ """state enumeration of a notificationRule"""
2806
+ enum NotificationRuleStatus {
2807
+ DRAFT
2808
+ RELEASED
2809
+ }
2810
+
2811
+ """state enumeration of a notification"""
2812
+ enum NotificationStatus {
2813
+ NOTREAD
2814
+ READ
2815
+ }
2816
+
2273
2817
  """Entity for Oauth2Client"""
2274
2818
  type Oauth2Client {
2275
2819
  accessToken: String
@@ -2341,6 +2885,73 @@ input ObjectRef {
2341
2885
  name: String
2342
2886
  }
2343
2887
 
2888
+ input ObjectRefApprovalLineOwnerType {
2889
+ controlNo: String
2890
+
2891
+ """Field description"""
2892
+ description: String
2893
+
2894
+ """Field id"""
2895
+ id: ID!
2896
+
2897
+ """Field name"""
2898
+ name: String
2899
+ }
2900
+
2901
+ input ObjectRefForEmployee {
2902
+ active: Boolean
2903
+ alias: String
2904
+ controlNo: String
2905
+
2906
+ """Field description"""
2907
+ description: String
2908
+ email: String
2909
+ hiredOn: String
2910
+
2911
+ """Field id"""
2912
+ id: ID!
2913
+ jobPosition: String
2914
+
2915
+ """Field name"""
2916
+ name: String
2917
+ photo: String
2918
+ }
2919
+
2920
+ input ObjectRefForUser {
2921
+ """Field description"""
2922
+ description: String
2923
+ email: String
2924
+
2925
+ """Field id"""
2926
+ id: ID!
2927
+
2928
+ """Field name"""
2929
+ name: String
2930
+ }
2931
+
2932
+ type OrgMemberTarget {
2933
+ controlNo: String
2934
+
2935
+ """Field description"""
2936
+ description: String
2937
+
2938
+ """Field id"""
2939
+ id: ID!
2940
+
2941
+ """Field name"""
2942
+ name: String
2943
+ }
2944
+
2945
+ """type enumeration of a approval line item"""
2946
+ enum OrgMemberTargetType {
2947
+ Department
2948
+ Employee
2949
+ MyDepartment
2950
+ MySupervisor
2951
+ Myself
2952
+ Role
2953
+ }
2954
+
2344
2955
  input Pagination {
2345
2956
  limit: Int
2346
2957
  page: Int
@@ -2525,6 +3136,23 @@ input PrivilegePatch {
2525
3136
  roles: [ObjectRef!]
2526
3137
  }
2527
3138
 
3139
+ """Object type for Profile"""
3140
+ type Profile {
3141
+ left: Float
3142
+ picture: String
3143
+ top: Float
3144
+ zoom: Float
3145
+ }
3146
+
3147
+ """Input type for Profile"""
3148
+ input ProfileInput {
3149
+ file: Upload
3150
+ left: Float
3151
+ picture: String
3152
+ top: Float
3153
+ zoom: Float
3154
+ }
3155
+
2528
3156
  type PropertySpec {
2529
3157
  label: String!
2530
3158
  name: String!
@@ -2534,6 +3162,7 @@ type PropertySpec {
2534
3162
  }
2535
3163
 
2536
3164
  type Query {
3165
+ APIDocCompletion(input: APIDocCompletionInput!): APIDocCompletionOutput!
2537
3166
  appBinding(id: String!): AppBinding!
2538
3167
  appBindings(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): AppBindingList!
2539
3168
 
@@ -2548,6 +3177,15 @@ type Query {
2548
3177
 
2549
3178
  """To fetch multiple application"""
2550
3179
  applications(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): ApplicationList!
3180
+
3181
+ """To fetch a approval line"""
3182
+ approvalLine(id: String!): ApprovalLine
3183
+
3184
+ """To fetch referable approval lines for the user"""
3185
+ approvalLineReferences(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): ApprovalLineList!
3186
+
3187
+ """To fetch multiple approval lines"""
3188
+ approvalLines(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): ApprovalLineList!
2551
3189
  attachment(id: String!): Attachment!
2552
3190
  attachments(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): AttachmentList!
2553
3191
 
@@ -2604,6 +3242,7 @@ type Query {
2604
3242
 
2605
3243
  """To fetch Boards created by me"""
2606
3244
  boardsCreatedByMe(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): BoardList!
3245
+ chatCompletion(input: ChatCompletionInput!): ChatCompletionOutput!
2607
3246
 
2608
3247
  """To check if system would provide default password to create new user"""
2609
3248
  checkDefaultPassword: Boolean!
@@ -2620,6 +3259,9 @@ type Query {
2620
3259
  """..."""
2621
3260
  checkUserExistence(email: String!): Boolean!
2622
3261
 
3262
+ """To fetch common approval lines"""
3263
+ commonApprovalLines(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): ApprovalLineList!
3264
+
2623
3265
  """To fetch a CommonCode"""
2624
3266
  commonCode(name: String!): CommonCode
2625
3267
 
@@ -2643,7 +3285,24 @@ type Query {
2643
3285
 
2644
3286
  """To fetch multiple connector"""
2645
3287
  connectors: ConnectorList!
3288
+
3289
+ """To fetch a Contact"""
3290
+ contact(id: String!): Contact
3291
+
3292
+ """To fetch multiple Contacts"""
3293
+ contacts(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): ContactList!
2646
3294
  customers: [Domain!]!
3295
+ decipherCode(input: CodeDecipherInput!): CodeDecipherOutput!
3296
+ decipherErrorCode(input: CodeDecipherInput!): CodeDecipherOutput!
3297
+
3298
+ """To fetch a Department"""
3299
+ department(id: String!): Department
3300
+
3301
+ """To fetch a Root Department"""
3302
+ departmentRoot: Department
3303
+
3304
+ """To fetch multiple Departments"""
3305
+ departments(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): DepartmentList!
2647
3306
 
2648
3307
  """To fetch domain"""
2649
3308
  domain(id: String!): Domain!
@@ -2654,6 +3313,12 @@ type Query {
2654
3313
  """To fetch domains with given privilege for user"""
2655
3314
  domainsWithPrivilege(category: String!, name: String!): [Domain!]!
2656
3315
 
3316
+ """To fetch a Employee"""
3317
+ employee(id: String!): Employee
3318
+
3319
+ """To fetch multiple Employees"""
3320
+ employees(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): EmployeeList!
3321
+
2657
3322
  """To fetch multiple Entities"""
2658
3323
  entities(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): EntityList!
2659
3324
 
@@ -2697,6 +3362,8 @@ type Query {
2697
3362
 
2698
3363
  """To query whether I have the given permission"""
2699
3364
  hasPrivilege(category: String!, name: String!): Boolean!
3365
+ i18nCompletion(input: i18nCompletionInput!): i18nCompletionOutput!
3366
+ imageCompletion(input: ImageCompletionInput!): ImageCompletionOutput!
2700
3367
 
2701
3368
  """To fetch integration Analyses"""
2702
3369
  integrationAnalysis: Object!
@@ -2751,16 +3418,34 @@ type Query {
2751
3418
  """To fetch multiple Menus"""
2752
3419
  menus(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): MenuList!
2753
3420
 
3421
+ """To fetch approval lines only for to the user"""
3422
+ myApprovalLines(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): ApprovalLineList!
3423
+
2754
3424
  """To fetch current user's Favorites"""
2755
3425
  myFavorites: [Favorite!]!
2756
3426
  myLoginHistories(limit: Float!): [LoginHistory!]!
2757
3427
 
3428
+ """To fetch my notifications"""
3429
+ myNotifications(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): NotificationList!
3430
+
2758
3431
  """To fetch current users privileges for current domain"""
2759
3432
  myPrivileges: [Privilege!]!
2760
3433
 
2761
3434
  """To fetch roles of current user"""
2762
3435
  myRoles: [Role!]!
2763
3436
 
3437
+ """To fetch a Notification"""
3438
+ notification(id: String!): Notification
3439
+
3440
+ """To fetch a NotificationRule"""
3441
+ notificationRule(id: String!): NotificationRule
3442
+
3443
+ """To fetch multiple NotificationRules"""
3444
+ notificationRules(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): NotificationRuleList!
3445
+
3446
+ """To fetch multiple Notificationes"""
3447
+ notificationes(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): NotificationList!
3448
+
2764
3449
  """To fetch a Oauth2Client"""
2765
3450
  oauth2Client(id: String!): Oauth2Client
2766
3451
 
@@ -2876,6 +3561,12 @@ type Query {
2876
3561
  vendors: [Domain!]!
2877
3562
  }
2878
3563
 
3564
+ type RecipientItem {
3565
+ recipient: OrgMemberTarget
3566
+ type: OrgMemberTargetType
3567
+ value: String
3568
+ }
3569
+
2879
3570
  type Role {
2880
3571
  createdAt: DateTimeISO
2881
3572
  creator: User
@@ -3091,6 +3782,7 @@ type Subscription {
3091
3782
  connectionLog(level: String): Log!
3092
3783
  connectionState(name: String): ConnectionState!
3093
3784
  data(tag: String!): Data!
3785
+ notification(subjects: [String!]): Notification!
3094
3786
  playGroup(id: String!): PlayGroup!
3095
3787
  scenarioInstanceLog(instanceName: String, level: String, scenarioName: String): Log!
3096
3788
  scenarioInstanceState(instanceName: String, scenarioName: String): ScenarioInstanceState!
@@ -3231,4 +3923,12 @@ type UsersAuthProviders {
3231
3923
  ssoId: String
3232
3924
  updatedAt: DateTimeISO
3233
3925
  user: User
3926
+ }
3927
+
3928
+ input i18nCompletionInput {
3929
+ json: String!
3930
+ }
3931
+
3932
+ type i18nCompletionOutput {
3933
+ message: String
3234
3934
  }