@celigo/api-specs 0.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.
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/account.yml +592 -0
- package/dist/agent.yml +908 -0
- package/dist/ai-agent.yml +5471 -0
- package/dist/api.yml +4140 -0
- package/dist/apim.yml +1286 -0
- package/dist/asynchelper.yml +3391 -0
- package/dist/audit.yml +2006 -0
- package/dist/connection.yml +8665 -0
- package/dist/connector.yml +1406 -0
- package/dist/ediprofile.yml +911 -0
- package/dist/editransaction.yml +1210 -0
- package/dist/enduser.yml +1724 -0
- package/dist/environment.yml +568 -0
- package/dist/eventreport.yml +692 -0
- package/dist/export.yml +17610 -0
- package/dist/filedefinition.yml +1396 -0
- package/dist/filestorage.yml +3102 -0
- package/dist/flow.yml +7928 -0
- package/dist/guardrail.yml +2763 -0
- package/dist/httpconnector.yml +2277 -0
- package/dist/httpconnectorendpoint.yml +722 -0
- package/dist/httpconnectorresource.yml +396 -0
- package/dist/iclient.yml +4452 -0
- package/dist/import.yml +15381 -0
- package/dist/integration.yml +4406 -0
- package/dist/job.yml +2014 -0
- package/dist/lookupcache.yml +1325 -0
- package/dist/marketplace.yml +685 -0
- package/dist/mcp-oauth-provider.yml +590 -0
- package/dist/mcp-server.yml +2656 -0
- package/dist/notification.yml +488 -0
- package/dist/processor.yml +1253 -0
- package/dist/profile.yml +455 -0
- package/dist/recyclebin.yml +768 -0
- package/dist/script.yml +1128 -0
- package/dist/stack.yml +1291 -0
- package/dist/state.yml +894 -0
- package/dist/subscription.yml +1405 -0
- package/dist/sync.yml +4857 -0
- package/dist/tag.yml +553 -0
- package/dist/template.yml +897 -0
- package/dist/tool.yml +33656 -0
- package/dist/tradingpartnerconnector.yml +1490 -0
- package/dist/user.yml +831 -0
- package/package.json +41 -0
- package/schemas.json +8420 -0
package/dist/enduser.yml
ADDED
|
@@ -0,0 +1,1724 @@
|
|
|
1
|
+
openapi: 3.2.0
|
|
2
|
+
info:
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
title: End Users
|
|
5
|
+
description: API for managing end users — MCP-only consumers of an account — and the groups and roles that control their access.
|
|
6
|
+
servers:
|
|
7
|
+
- url: https://api.integrator.io
|
|
8
|
+
description: Production (US / default region)
|
|
9
|
+
- url: https://api.eu.integrator.io
|
|
10
|
+
description: Production (EU region)
|
|
11
|
+
- url: https://api.au.integrator.io
|
|
12
|
+
description: Production (AU region)
|
|
13
|
+
- url: https://api.ca.integrator.io
|
|
14
|
+
description: Production (CA region)
|
|
15
|
+
security:
|
|
16
|
+
- bearerAuth: []
|
|
17
|
+
tags:
|
|
18
|
+
- name: End Users
|
|
19
|
+
description: |-
|
|
20
|
+
End users are people who consume an account's MCP servers without
|
|
21
|
+
getting workspace access — they sign in through MCP OAuth, optionally
|
|
22
|
+
via an external IdP. Use these endpoints to invite end users (singly or
|
|
23
|
+
in bulk), list and revoke them, and inspect the effective MCP tool
|
|
24
|
+
access compiled from their grants, groups, and roles.
|
|
25
|
+
|
|
26
|
+
## End user schema
|
|
27
|
+
|
|
28
|
+
{% openapi-schemas spec="enduser" schemas="EndUser" grouped="true" %}
|
|
29
|
+
- name: Groups
|
|
30
|
+
description: |-
|
|
31
|
+
Groups bundle roles and resource grants so end-user access can be
|
|
32
|
+
managed collectively. End users receive a group's access through
|
|
33
|
+
membership, added manually or synced from an identity provider's group
|
|
34
|
+
claims.
|
|
35
|
+
|
|
36
|
+
## Group schema
|
|
37
|
+
|
|
38
|
+
{% openapi-schemas spec="enduser" schemas="Group" grouped="true" %}
|
|
39
|
+
- name: Roles
|
|
40
|
+
description: |-
|
|
41
|
+
Roles are named, reusable bundles of resource grants. Assign them to
|
|
42
|
+
end users directly or pin them to groups; their grants are compiled
|
|
43
|
+
into each member's effective access.
|
|
44
|
+
|
|
45
|
+
## Role schema
|
|
46
|
+
|
|
47
|
+
{% openapi-schemas spec="enduser" schemas="Role" grouped="true" %}
|
|
48
|
+
paths:
|
|
49
|
+
/v1/endusers:
|
|
50
|
+
get:
|
|
51
|
+
x-internal: false
|
|
52
|
+
summary: List end users
|
|
53
|
+
operationId: listEndUsers
|
|
54
|
+
tags:
|
|
55
|
+
- End Users
|
|
56
|
+
description: |-
|
|
57
|
+
Returns the account's end users with identity fields (`email`, `name`,
|
|
58
|
+
`lastSignIn`) joined from each user record, plus a computed
|
|
59
|
+
`hasWorkspaceShare` flag indicating whether the same person also holds a
|
|
60
|
+
workspace access record. Requires account owner or administrator access.
|
|
61
|
+
parameters:
|
|
62
|
+
- name: provisionedBy
|
|
63
|
+
in: query
|
|
64
|
+
required: false
|
|
65
|
+
description: Return only end users created by the given provisioning source.
|
|
66
|
+
schema:
|
|
67
|
+
type: string
|
|
68
|
+
enum:
|
|
69
|
+
- invite
|
|
70
|
+
- jit
|
|
71
|
+
x-enumDescriptions:
|
|
72
|
+
invite: Created through an explicit invite (or by migration from a workspace user)
|
|
73
|
+
jit: Provisioned just-in-time on first sign-in through an external IdP
|
|
74
|
+
responses:
|
|
75
|
+
'200':
|
|
76
|
+
description: List of end users.
|
|
77
|
+
content:
|
|
78
|
+
application/json:
|
|
79
|
+
schema:
|
|
80
|
+
type: array
|
|
81
|
+
items:
|
|
82
|
+
$ref: '#/components/schemas/EndUser'
|
|
83
|
+
examples:
|
|
84
|
+
default:
|
|
85
|
+
value:
|
|
86
|
+
- _id: 68b1c2d3e4f5a6b7c8d9e0f1
|
|
87
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
88
|
+
_sharedWithUserId: 624774a6a7574d3ed9f9a5cc
|
|
89
|
+
userType: end-user
|
|
90
|
+
provisionedBy: invite
|
|
91
|
+
accepted: true
|
|
92
|
+
dismissed: false
|
|
93
|
+
disabled: false
|
|
94
|
+
groupMemberships:
|
|
95
|
+
- _groupId: 68a1b2c3d4e5f6a7b8c9d0e1
|
|
96
|
+
source: manual
|
|
97
|
+
resourceGrants:
|
|
98
|
+
- resourceType: mcpServer
|
|
99
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
100
|
+
capabilities:
|
|
101
|
+
- tool:all
|
|
102
|
+
_roleIds: []
|
|
103
|
+
email: enduser@example.com
|
|
104
|
+
name: Ana Enduser
|
|
105
|
+
lastSignIn: '2026-08-02T17:02:59.370Z'
|
|
106
|
+
hasWorkspaceShare: false
|
|
107
|
+
createdAt: '2026-07-01T09:15:32Z'
|
|
108
|
+
lastModified: '2026-08-15T14:30:15Z'
|
|
109
|
+
'400':
|
|
110
|
+
$ref: '#/components/responses/400-bad-request'
|
|
111
|
+
'401':
|
|
112
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
113
|
+
'403':
|
|
114
|
+
$ref: '#/components/responses/403-forbidden'
|
|
115
|
+
/v1/endusers/invite:
|
|
116
|
+
post:
|
|
117
|
+
x-internal: false
|
|
118
|
+
summary: Invite an end user
|
|
119
|
+
operationId: inviteEndUser
|
|
120
|
+
tags:
|
|
121
|
+
- End Users
|
|
122
|
+
description: |-
|
|
123
|
+
Finds or creates the user by email, creates an end-user access record,
|
|
124
|
+
applies the requested group memberships and direct grants, and sends an
|
|
125
|
+
invite email. Account owners cannot be invited as end users. Requires
|
|
126
|
+
account owner or administrator access.
|
|
127
|
+
requestBody:
|
|
128
|
+
required: true
|
|
129
|
+
content:
|
|
130
|
+
application/json:
|
|
131
|
+
schema:
|
|
132
|
+
$ref: '#/components/schemas/InviteRequest'
|
|
133
|
+
examples:
|
|
134
|
+
minimal:
|
|
135
|
+
summary: Invite by email only
|
|
136
|
+
value:
|
|
137
|
+
email: enduser@example.com
|
|
138
|
+
withAccess:
|
|
139
|
+
summary: Invite with groups and a direct grant
|
|
140
|
+
value:
|
|
141
|
+
email: enduser@example.com
|
|
142
|
+
name: Ana Enduser
|
|
143
|
+
groupIds:
|
|
144
|
+
- 68a1b2c3d4e5f6a7b8c9d0e1
|
|
145
|
+
directGrants:
|
|
146
|
+
- resourceType: mcpServer
|
|
147
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
148
|
+
capabilities:
|
|
149
|
+
- tool:all
|
|
150
|
+
responses:
|
|
151
|
+
'201':
|
|
152
|
+
description: End user invited.
|
|
153
|
+
content:
|
|
154
|
+
application/json:
|
|
155
|
+
schema:
|
|
156
|
+
$ref: '#/components/schemas/InviteResponse'
|
|
157
|
+
examples:
|
|
158
|
+
default:
|
|
159
|
+
value:
|
|
160
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
161
|
+
_ashareId: 68b1c2d3e4f5a6b7c8d9e0f1
|
|
162
|
+
status: invited
|
|
163
|
+
'400':
|
|
164
|
+
$ref: '#/components/responses/400-bad-request'
|
|
165
|
+
'401':
|
|
166
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
167
|
+
'403':
|
|
168
|
+
$ref: '#/components/responses/403-forbidden'
|
|
169
|
+
'409':
|
|
170
|
+
description: |-
|
|
171
|
+
An end-user record already exists for this user in the account.
|
|
172
|
+
Error code: `enduser_ashare_exists`.
|
|
173
|
+
content:
|
|
174
|
+
application/json:
|
|
175
|
+
schema:
|
|
176
|
+
$ref: '#/components/schemas/Error'
|
|
177
|
+
'422':
|
|
178
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
179
|
+
/v1/endusers/invite/bulk:
|
|
180
|
+
post:
|
|
181
|
+
x-internal: false
|
|
182
|
+
summary: Invite end users in bulk
|
|
183
|
+
operationId: inviteEndUsersBulk
|
|
184
|
+
tags:
|
|
185
|
+
- End Users
|
|
186
|
+
description: |-
|
|
187
|
+
Invites 1–100 end users in one request, applying the same optional
|
|
188
|
+
`groupIds` and `directGrants` to every invite. Processing is sequential
|
|
189
|
+
and partial-success: a failed item never aborts the batch, so the
|
|
190
|
+
response is HTTP 200 with a per-email result even when some items fail.
|
|
191
|
+
Only top-level structural errors (missing or non-array `emails`, more
|
|
192
|
+
than 100 emails, non-array `groupIds`/`directGrants`) return 400.
|
|
193
|
+
Requires account owner or administrator access.
|
|
194
|
+
requestBody:
|
|
195
|
+
required: true
|
|
196
|
+
content:
|
|
197
|
+
application/json:
|
|
198
|
+
schema:
|
|
199
|
+
$ref: '#/components/schemas/BulkInviteRequest'
|
|
200
|
+
examples:
|
|
201
|
+
default:
|
|
202
|
+
value:
|
|
203
|
+
emails:
|
|
204
|
+
- a@example.com
|
|
205
|
+
- b@example.com
|
|
206
|
+
groupIds:
|
|
207
|
+
- 68a1b2c3d4e5f6a7b8c9d0e1
|
|
208
|
+
responses:
|
|
209
|
+
'200':
|
|
210
|
+
description: Batch processed, including partial success. One result per input email.
|
|
211
|
+
content:
|
|
212
|
+
application/json:
|
|
213
|
+
schema:
|
|
214
|
+
$ref: '#/components/schemas/BulkInviteResponse'
|
|
215
|
+
examples:
|
|
216
|
+
partialSuccess:
|
|
217
|
+
value:
|
|
218
|
+
summary:
|
|
219
|
+
total: 2
|
|
220
|
+
invited: 1
|
|
221
|
+
failed: 1
|
|
222
|
+
skipped: 0
|
|
223
|
+
results:
|
|
224
|
+
- email: a@example.com
|
|
225
|
+
status: invited
|
|
226
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
227
|
+
_ashareId: 68b1c2d3e4f5a6b7c8d9e0f1
|
|
228
|
+
- email: b@example.com
|
|
229
|
+
status: failed
|
|
230
|
+
code: enduser_ashare_exists
|
|
231
|
+
'400':
|
|
232
|
+
$ref: '#/components/responses/400-bad-request'
|
|
233
|
+
'401':
|
|
234
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
235
|
+
'403':
|
|
236
|
+
$ref: '#/components/responses/403-forbidden'
|
|
237
|
+
/v1/endusers/{_ashareId}:
|
|
238
|
+
delete:
|
|
239
|
+
x-internal: false
|
|
240
|
+
summary: Revoke an end user
|
|
241
|
+
operationId: revokeEndUser
|
|
242
|
+
tags:
|
|
243
|
+
- End Users
|
|
244
|
+
description: |-
|
|
245
|
+
Soft-deletes the end-user access record and clears its group
|
|
246
|
+
memberships. Any workspace access record the same person holds is
|
|
247
|
+
unaffected. Requires account owner or administrator access.
|
|
248
|
+
parameters:
|
|
249
|
+
- name: _ashareId
|
|
250
|
+
in: path
|
|
251
|
+
required: true
|
|
252
|
+
description: End-user access-record id (from the end users list).
|
|
253
|
+
schema:
|
|
254
|
+
type: string
|
|
255
|
+
format: objectId
|
|
256
|
+
responses:
|
|
257
|
+
'204':
|
|
258
|
+
description: End user revoked.
|
|
259
|
+
'400':
|
|
260
|
+
$ref: '#/components/responses/400-bad-request'
|
|
261
|
+
'401':
|
|
262
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
263
|
+
'403':
|
|
264
|
+
$ref: '#/components/responses/403-forbidden'
|
|
265
|
+
'404':
|
|
266
|
+
$ref: '#/components/responses/404-not-found'
|
|
267
|
+
/v1/endusers/{_ashareId}/effective-access:
|
|
268
|
+
get:
|
|
269
|
+
x-internal: false
|
|
270
|
+
summary: Get an end user's effective access
|
|
271
|
+
operationId: getEndUserEffectiveAccess
|
|
272
|
+
tags:
|
|
273
|
+
- End Users
|
|
274
|
+
description: |-
|
|
275
|
+
Compiles the end user's effective MCP server tool access with source
|
|
276
|
+
attribution — the union of direct grants, group grants, role grants, and
|
|
277
|
+
permission sets. The result is recomputed on every request rather than
|
|
278
|
+
cached. Requires account owner or administrator access.
|
|
279
|
+
parameters:
|
|
280
|
+
- name: _ashareId
|
|
281
|
+
in: path
|
|
282
|
+
required: true
|
|
283
|
+
description: End-user access-record id (from the end users list).
|
|
284
|
+
schema:
|
|
285
|
+
type: string
|
|
286
|
+
format: objectId
|
|
287
|
+
responses:
|
|
288
|
+
'200':
|
|
289
|
+
description: Compiled effective access with attribution.
|
|
290
|
+
content:
|
|
291
|
+
application/json:
|
|
292
|
+
schema:
|
|
293
|
+
$ref: '#/components/schemas/EffectiveAccess'
|
|
294
|
+
examples:
|
|
295
|
+
default:
|
|
296
|
+
value:
|
|
297
|
+
_ashareId: 68b1c2d3e4f5a6b7c8d9e0f1
|
|
298
|
+
_userId: 624774a6a7574d3ed9f9a5cc
|
|
299
|
+
userType: end-user
|
|
300
|
+
provisionedBy: invite
|
|
301
|
+
groups:
|
|
302
|
+
- _id: 68a1b2c3d4e5f6a7b8c9d0e1
|
|
303
|
+
name: Finance
|
|
304
|
+
source: manual
|
|
305
|
+
roles:
|
|
306
|
+
- _id: 68c1d2e3f4a5b6c7d8e9f0a1
|
|
307
|
+
name: Finance tools
|
|
308
|
+
via:
|
|
309
|
+
- group:Finance
|
|
310
|
+
access:
|
|
311
|
+
- resourceType: mcpServer
|
|
312
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
313
|
+
resourceName: Finance MCP
|
|
314
|
+
tools:
|
|
315
|
+
- _id: 6b2c3d4e5f6a7b8c9d0e1f2a
|
|
316
|
+
name: lookup-invoice
|
|
317
|
+
via:
|
|
318
|
+
- role:Finance tools (group:Finance)
|
|
319
|
+
deniedTools: []
|
|
320
|
+
'400':
|
|
321
|
+
$ref: '#/components/responses/400-bad-request'
|
|
322
|
+
'401':
|
|
323
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
324
|
+
'403':
|
|
325
|
+
$ref: '#/components/responses/403-forbidden'
|
|
326
|
+
'404':
|
|
327
|
+
$ref: '#/components/responses/404-not-found'
|
|
328
|
+
/v1/groups:
|
|
329
|
+
get:
|
|
330
|
+
x-internal: false
|
|
331
|
+
summary: List groups
|
|
332
|
+
operationId: listGroups
|
|
333
|
+
tags:
|
|
334
|
+
- Groups
|
|
335
|
+
description: |-
|
|
336
|
+
Returns all active groups in the account. Requires account owner or
|
|
337
|
+
administrator access.
|
|
338
|
+
responses:
|
|
339
|
+
'200':
|
|
340
|
+
description: List of groups.
|
|
341
|
+
content:
|
|
342
|
+
application/json:
|
|
343
|
+
schema:
|
|
344
|
+
type: array
|
|
345
|
+
items:
|
|
346
|
+
$ref: '#/components/schemas/Group'
|
|
347
|
+
examples:
|
|
348
|
+
default:
|
|
349
|
+
value:
|
|
350
|
+
- _id: 68a1b2c3d4e5f6a7b8c9d0e1
|
|
351
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
352
|
+
name: Finance
|
|
353
|
+
description: Finance department end users
|
|
354
|
+
intendedFor:
|
|
355
|
+
- end-user
|
|
356
|
+
_roleIds:
|
|
357
|
+
- 68c1d2e3f4a5b6c7d8e9f0a1
|
|
358
|
+
resourceGrants: []
|
|
359
|
+
hasIdpSyncedMembers: false
|
|
360
|
+
createdAt: '2026-07-01T09:15:32Z'
|
|
361
|
+
lastModified: '2026-08-15T14:30:15Z'
|
|
362
|
+
'204':
|
|
363
|
+
description: No groups exist in the account.
|
|
364
|
+
'400':
|
|
365
|
+
$ref: '#/components/responses/400-bad-request'
|
|
366
|
+
'401':
|
|
367
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
368
|
+
'403':
|
|
369
|
+
$ref: '#/components/responses/403-forbidden'
|
|
370
|
+
post:
|
|
371
|
+
x-internal: false
|
|
372
|
+
summary: Create a group
|
|
373
|
+
operationId: createGroup
|
|
374
|
+
tags:
|
|
375
|
+
- Groups
|
|
376
|
+
description: |-
|
|
377
|
+
Creates a group for end-user access management. Group names must be
|
|
378
|
+
unique within the account (case-insensitive), and any `_roleIds` or
|
|
379
|
+
`resourceGrants._resourceId` values must reference resources owned by
|
|
380
|
+
the same account. Requires account owner or administrator access.
|
|
381
|
+
requestBody:
|
|
382
|
+
required: true
|
|
383
|
+
content:
|
|
384
|
+
application/json:
|
|
385
|
+
schema:
|
|
386
|
+
$ref: '#/components/schemas/GroupRequest'
|
|
387
|
+
examples:
|
|
388
|
+
minimal:
|
|
389
|
+
summary: Name only
|
|
390
|
+
value:
|
|
391
|
+
name: Finance
|
|
392
|
+
withAccess:
|
|
393
|
+
summary: With a pinned role and a direct grant
|
|
394
|
+
value:
|
|
395
|
+
name: Finance
|
|
396
|
+
description: Finance department end users
|
|
397
|
+
intendedFor:
|
|
398
|
+
- end-user
|
|
399
|
+
_roleIds:
|
|
400
|
+
- 68c1d2e3f4a5b6c7d8e9f0a1
|
|
401
|
+
resourceGrants:
|
|
402
|
+
- resourceType: mcpServer
|
|
403
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
404
|
+
capabilities:
|
|
405
|
+
- tool:all
|
|
406
|
+
responses:
|
|
407
|
+
'201':
|
|
408
|
+
description: Group created.
|
|
409
|
+
content:
|
|
410
|
+
application/json:
|
|
411
|
+
schema:
|
|
412
|
+
$ref: '#/components/schemas/Group'
|
|
413
|
+
examples:
|
|
414
|
+
default:
|
|
415
|
+
value:
|
|
416
|
+
_id: 68a1b2c3d4e5f6a7b8c9d0e1
|
|
417
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
418
|
+
name: Finance
|
|
419
|
+
description: Finance department end users
|
|
420
|
+
intendedFor:
|
|
421
|
+
- end-user
|
|
422
|
+
_roleIds:
|
|
423
|
+
- 68c1d2e3f4a5b6c7d8e9f0a1
|
|
424
|
+
resourceGrants: []
|
|
425
|
+
hasIdpSyncedMembers: false
|
|
426
|
+
createdAt: '2026-07-01T09:15:32Z'
|
|
427
|
+
lastModified: '2026-07-01T09:15:32Z'
|
|
428
|
+
'400':
|
|
429
|
+
$ref: '#/components/responses/400-bad-request'
|
|
430
|
+
'401':
|
|
431
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
432
|
+
'403':
|
|
433
|
+
$ref: '#/components/responses/403-forbidden'
|
|
434
|
+
'409':
|
|
435
|
+
description: A group with this name already exists in the account.
|
|
436
|
+
content:
|
|
437
|
+
application/json:
|
|
438
|
+
schema:
|
|
439
|
+
$ref: '#/components/schemas/Error'
|
|
440
|
+
'422':
|
|
441
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
442
|
+
/v1/groups/{_id}:
|
|
443
|
+
get:
|
|
444
|
+
x-internal: false
|
|
445
|
+
summary: Get a group
|
|
446
|
+
operationId: getGroup
|
|
447
|
+
tags:
|
|
448
|
+
- Groups
|
|
449
|
+
description: Retrieves a single group by ID.
|
|
450
|
+
parameters:
|
|
451
|
+
- name: _id
|
|
452
|
+
in: path
|
|
453
|
+
required: true
|
|
454
|
+
description: Group ID.
|
|
455
|
+
schema:
|
|
456
|
+
type: string
|
|
457
|
+
format: objectId
|
|
458
|
+
x-celigo-refModel: groups
|
|
459
|
+
responses:
|
|
460
|
+
'200':
|
|
461
|
+
description: Group details.
|
|
462
|
+
content:
|
|
463
|
+
application/json:
|
|
464
|
+
schema:
|
|
465
|
+
$ref: '#/components/schemas/Group'
|
|
466
|
+
'400':
|
|
467
|
+
$ref: '#/components/responses/400-bad-request'
|
|
468
|
+
'401':
|
|
469
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
470
|
+
'403':
|
|
471
|
+
$ref: '#/components/responses/403-forbidden'
|
|
472
|
+
'404':
|
|
473
|
+
$ref: '#/components/responses/404-not-found'
|
|
474
|
+
put:
|
|
475
|
+
x-internal: false
|
|
476
|
+
summary: Update a group
|
|
477
|
+
operationId: updateGroup
|
|
478
|
+
tags:
|
|
479
|
+
- Groups
|
|
480
|
+
description: |-
|
|
481
|
+
Replaces the group's writable fields. Prefer resending the complete
|
|
482
|
+
object — omitted fields are not preserved. Requires account owner or
|
|
483
|
+
administrator access.
|
|
484
|
+
parameters:
|
|
485
|
+
- name: _id
|
|
486
|
+
in: path
|
|
487
|
+
required: true
|
|
488
|
+
description: Group ID.
|
|
489
|
+
schema:
|
|
490
|
+
type: string
|
|
491
|
+
format: objectId
|
|
492
|
+
x-celigo-refModel: groups
|
|
493
|
+
requestBody:
|
|
494
|
+
required: true
|
|
495
|
+
content:
|
|
496
|
+
application/json:
|
|
497
|
+
schema:
|
|
498
|
+
$ref: '#/components/schemas/GroupRequest'
|
|
499
|
+
examples:
|
|
500
|
+
rename:
|
|
501
|
+
summary: Rename the group
|
|
502
|
+
value:
|
|
503
|
+
name: Finance EMEA
|
|
504
|
+
responses:
|
|
505
|
+
'200':
|
|
506
|
+
description: Updated group.
|
|
507
|
+
content:
|
|
508
|
+
application/json:
|
|
509
|
+
schema:
|
|
510
|
+
$ref: '#/components/schemas/Group'
|
|
511
|
+
'400':
|
|
512
|
+
$ref: '#/components/responses/400-bad-request'
|
|
513
|
+
'401':
|
|
514
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
515
|
+
'403':
|
|
516
|
+
$ref: '#/components/responses/403-forbidden'
|
|
517
|
+
'404':
|
|
518
|
+
$ref: '#/components/responses/404-not-found'
|
|
519
|
+
'409':
|
|
520
|
+
description: A group with this name already exists in the account.
|
|
521
|
+
content:
|
|
522
|
+
application/json:
|
|
523
|
+
schema:
|
|
524
|
+
$ref: '#/components/schemas/Error'
|
|
525
|
+
'422':
|
|
526
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
527
|
+
delete:
|
|
528
|
+
x-internal: false
|
|
529
|
+
summary: Delete a group
|
|
530
|
+
operationId: deleteGroup
|
|
531
|
+
tags:
|
|
532
|
+
- Groups
|
|
533
|
+
description: |-
|
|
534
|
+
Soft-deletes the group and removes the corresponding membership entry
|
|
535
|
+
from every end user in the account. Requires account owner or
|
|
536
|
+
administrator access.
|
|
537
|
+
parameters:
|
|
538
|
+
- name: _id
|
|
539
|
+
in: path
|
|
540
|
+
required: true
|
|
541
|
+
description: Group ID.
|
|
542
|
+
schema:
|
|
543
|
+
type: string
|
|
544
|
+
format: objectId
|
|
545
|
+
x-celigo-refModel: groups
|
|
546
|
+
responses:
|
|
547
|
+
'204':
|
|
548
|
+
description: Group deleted.
|
|
549
|
+
'400':
|
|
550
|
+
$ref: '#/components/responses/400-bad-request'
|
|
551
|
+
'401':
|
|
552
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
553
|
+
'403':
|
|
554
|
+
$ref: '#/components/responses/403-forbidden'
|
|
555
|
+
'404':
|
|
556
|
+
$ref: '#/components/responses/404-not-found'
|
|
557
|
+
/v1/groups/{_groupId}/members:
|
|
558
|
+
post:
|
|
559
|
+
x-internal: false
|
|
560
|
+
summary: Add end users to a group
|
|
561
|
+
operationId: addGroupMembers
|
|
562
|
+
tags:
|
|
563
|
+
- Groups
|
|
564
|
+
description: |-
|
|
565
|
+
Bulk-adds up to 100 end users to the group as manual memberships. The
|
|
566
|
+
operation is idempotent for end users already in the group. Requires
|
|
567
|
+
account owner or administrator access.
|
|
568
|
+
parameters:
|
|
569
|
+
- name: _groupId
|
|
570
|
+
in: path
|
|
571
|
+
required: true
|
|
572
|
+
description: Group ID.
|
|
573
|
+
schema:
|
|
574
|
+
type: string
|
|
575
|
+
format: objectId
|
|
576
|
+
x-celigo-refModel: groups
|
|
577
|
+
requestBody:
|
|
578
|
+
required: true
|
|
579
|
+
content:
|
|
580
|
+
application/json:
|
|
581
|
+
schema:
|
|
582
|
+
$ref: '#/components/schemas/GroupMembersRequest'
|
|
583
|
+
examples:
|
|
584
|
+
default:
|
|
585
|
+
value:
|
|
586
|
+
_ashareIds:
|
|
587
|
+
- 68b1c2d3e4f5a6b7c8d9e0f1
|
|
588
|
+
responses:
|
|
589
|
+
'200':
|
|
590
|
+
description: Members added.
|
|
591
|
+
content:
|
|
592
|
+
application/json:
|
|
593
|
+
schema:
|
|
594
|
+
$ref: '#/components/schemas/GroupMembersResponse'
|
|
595
|
+
examples:
|
|
596
|
+
default:
|
|
597
|
+
value:
|
|
598
|
+
updated: 1
|
|
599
|
+
'400':
|
|
600
|
+
$ref: '#/components/responses/400-bad-request'
|
|
601
|
+
'401':
|
|
602
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
603
|
+
'403':
|
|
604
|
+
$ref: '#/components/responses/403-forbidden'
|
|
605
|
+
'404':
|
|
606
|
+
$ref: '#/components/responses/404-not-found'
|
|
607
|
+
/v1/groups/{_groupId}/members/remove:
|
|
608
|
+
post:
|
|
609
|
+
x-internal: false
|
|
610
|
+
summary: Remove end users from a group
|
|
611
|
+
operationId: removeGroupMembers
|
|
612
|
+
tags:
|
|
613
|
+
- Groups
|
|
614
|
+
description: |-
|
|
615
|
+
Bulk-removes manual memberships from the group. Only manual memberships
|
|
616
|
+
can be removed this way — attempting to remove an IdP-synced membership
|
|
617
|
+
returns 409; change the IdP group mapping instead. Uses POST rather than
|
|
618
|
+
DELETE so the request body survives proxies and CDNs. Requires account
|
|
619
|
+
owner or administrator access.
|
|
620
|
+
parameters:
|
|
621
|
+
- name: _groupId
|
|
622
|
+
in: path
|
|
623
|
+
required: true
|
|
624
|
+
description: Group ID.
|
|
625
|
+
schema:
|
|
626
|
+
type: string
|
|
627
|
+
format: objectId
|
|
628
|
+
x-celigo-refModel: groups
|
|
629
|
+
requestBody:
|
|
630
|
+
required: true
|
|
631
|
+
content:
|
|
632
|
+
application/json:
|
|
633
|
+
schema:
|
|
634
|
+
$ref: '#/components/schemas/GroupMembersRequest'
|
|
635
|
+
examples:
|
|
636
|
+
default:
|
|
637
|
+
value:
|
|
638
|
+
_ashareIds:
|
|
639
|
+
- 68b1c2d3e4f5a6b7c8d9e0f1
|
|
640
|
+
responses:
|
|
641
|
+
'200':
|
|
642
|
+
description: Members removed.
|
|
643
|
+
content:
|
|
644
|
+
application/json:
|
|
645
|
+
schema:
|
|
646
|
+
$ref: '#/components/schemas/GroupMembersResponse'
|
|
647
|
+
examples:
|
|
648
|
+
default:
|
|
649
|
+
value:
|
|
650
|
+
updated: 1
|
|
651
|
+
'400':
|
|
652
|
+
$ref: '#/components/responses/400-bad-request'
|
|
653
|
+
'401':
|
|
654
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
655
|
+
'403':
|
|
656
|
+
$ref: '#/components/responses/403-forbidden'
|
|
657
|
+
'404':
|
|
658
|
+
$ref: '#/components/responses/404-not-found'
|
|
659
|
+
'409':
|
|
660
|
+
description: |-
|
|
661
|
+
One or more of the memberships is IdP-synced and cannot be removed
|
|
662
|
+
manually. Error code: `conflict`.
|
|
663
|
+
content:
|
|
664
|
+
application/json:
|
|
665
|
+
schema:
|
|
666
|
+
$ref: '#/components/schemas/Error'
|
|
667
|
+
/v1/roles:
|
|
668
|
+
get:
|
|
669
|
+
x-internal: false
|
|
670
|
+
summary: List roles
|
|
671
|
+
operationId: listRoles
|
|
672
|
+
tags:
|
|
673
|
+
- Roles
|
|
674
|
+
description: |-
|
|
675
|
+
Returns all active roles in the account. Requires account owner or
|
|
676
|
+
administrator access.
|
|
677
|
+
responses:
|
|
678
|
+
'200':
|
|
679
|
+
description: List of roles.
|
|
680
|
+
content:
|
|
681
|
+
application/json:
|
|
682
|
+
schema:
|
|
683
|
+
type: array
|
|
684
|
+
items:
|
|
685
|
+
$ref: '#/components/schemas/Role'
|
|
686
|
+
examples:
|
|
687
|
+
default:
|
|
688
|
+
value:
|
|
689
|
+
- _id: 68c1d2e3f4a5b6c7d8e9f0a1
|
|
690
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
691
|
+
name: Finance tools
|
|
692
|
+
description: Read access to finance MCP tools
|
|
693
|
+
resourceGrants:
|
|
694
|
+
- resourceType: mcpServer
|
|
695
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
696
|
+
capabilities:
|
|
697
|
+
- pset:6c3d4e5f6a7b8c9d0e1f2a3b
|
|
698
|
+
createdAt: '2026-07-01T09:15:32Z'
|
|
699
|
+
lastModified: '2026-08-15T14:30:15Z'
|
|
700
|
+
'204':
|
|
701
|
+
description: No roles exist in the account.
|
|
702
|
+
'400':
|
|
703
|
+
$ref: '#/components/responses/400-bad-request'
|
|
704
|
+
'401':
|
|
705
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
706
|
+
'403':
|
|
707
|
+
$ref: '#/components/responses/403-forbidden'
|
|
708
|
+
post:
|
|
709
|
+
x-internal: false
|
|
710
|
+
summary: Create a role
|
|
711
|
+
operationId: createRole
|
|
712
|
+
tags:
|
|
713
|
+
- Roles
|
|
714
|
+
description: |-
|
|
715
|
+
Creates a role. Role names must be unique within the account
|
|
716
|
+
(case-insensitive), and `resourceGrants._resourceId` values must
|
|
717
|
+
reference resources owned by the same account. Requires account owner or
|
|
718
|
+
administrator access.
|
|
719
|
+
requestBody:
|
|
720
|
+
required: true
|
|
721
|
+
content:
|
|
722
|
+
application/json:
|
|
723
|
+
schema:
|
|
724
|
+
$ref: '#/components/schemas/RoleRequest'
|
|
725
|
+
examples:
|
|
726
|
+
default:
|
|
727
|
+
value:
|
|
728
|
+
name: Finance tools
|
|
729
|
+
description: Read access to finance MCP tools
|
|
730
|
+
resourceGrants:
|
|
731
|
+
- resourceType: mcpServer
|
|
732
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
733
|
+
capabilities:
|
|
734
|
+
- pset:6c3d4e5f6a7b8c9d0e1f2a3b
|
|
735
|
+
responses:
|
|
736
|
+
'201':
|
|
737
|
+
description: Role created.
|
|
738
|
+
content:
|
|
739
|
+
application/json:
|
|
740
|
+
schema:
|
|
741
|
+
$ref: '#/components/schemas/Role'
|
|
742
|
+
examples:
|
|
743
|
+
default:
|
|
744
|
+
value:
|
|
745
|
+
_id: 68c1d2e3f4a5b6c7d8e9f0a1
|
|
746
|
+
_userId: 5f8d43a1b9e5a80011a35f2c
|
|
747
|
+
name: Finance tools
|
|
748
|
+
description: Read access to finance MCP tools
|
|
749
|
+
resourceGrants:
|
|
750
|
+
- resourceType: mcpServer
|
|
751
|
+
_resourceId: 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
752
|
+
capabilities:
|
|
753
|
+
- pset:6c3d4e5f6a7b8c9d0e1f2a3b
|
|
754
|
+
createdAt: '2026-07-01T09:15:32Z'
|
|
755
|
+
lastModified: '2026-07-01T09:15:32Z'
|
|
756
|
+
'400':
|
|
757
|
+
$ref: '#/components/responses/400-bad-request'
|
|
758
|
+
'401':
|
|
759
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
760
|
+
'403':
|
|
761
|
+
$ref: '#/components/responses/403-forbidden'
|
|
762
|
+
'409':
|
|
763
|
+
description: A role with this name already exists in the account.
|
|
764
|
+
content:
|
|
765
|
+
application/json:
|
|
766
|
+
schema:
|
|
767
|
+
$ref: '#/components/schemas/Error'
|
|
768
|
+
'422':
|
|
769
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
770
|
+
/v1/roles/{_id}:
|
|
771
|
+
get:
|
|
772
|
+
x-internal: false
|
|
773
|
+
summary: Get a role
|
|
774
|
+
operationId: getRole
|
|
775
|
+
tags:
|
|
776
|
+
- Roles
|
|
777
|
+
description: Retrieves a single role by ID.
|
|
778
|
+
parameters:
|
|
779
|
+
- name: _id
|
|
780
|
+
in: path
|
|
781
|
+
required: true
|
|
782
|
+
description: Role ID.
|
|
783
|
+
schema:
|
|
784
|
+
type: string
|
|
785
|
+
format: objectId
|
|
786
|
+
x-celigo-refModel: roles
|
|
787
|
+
responses:
|
|
788
|
+
'200':
|
|
789
|
+
description: Role details.
|
|
790
|
+
content:
|
|
791
|
+
application/json:
|
|
792
|
+
schema:
|
|
793
|
+
$ref: '#/components/schemas/Role'
|
|
794
|
+
'400':
|
|
795
|
+
$ref: '#/components/responses/400-bad-request'
|
|
796
|
+
'401':
|
|
797
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
798
|
+
'403':
|
|
799
|
+
$ref: '#/components/responses/403-forbidden'
|
|
800
|
+
'404':
|
|
801
|
+
$ref: '#/components/responses/404-not-found'
|
|
802
|
+
put:
|
|
803
|
+
x-internal: false
|
|
804
|
+
summary: Update a role
|
|
805
|
+
operationId: updateRole
|
|
806
|
+
tags:
|
|
807
|
+
- Roles
|
|
808
|
+
description: |-
|
|
809
|
+
Replaces the role's writable fields. Prefer resending the complete
|
|
810
|
+
object — omitted fields are not preserved. Requires account owner or
|
|
811
|
+
administrator access.
|
|
812
|
+
parameters:
|
|
813
|
+
- name: _id
|
|
814
|
+
in: path
|
|
815
|
+
required: true
|
|
816
|
+
description: Role ID.
|
|
817
|
+
schema:
|
|
818
|
+
type: string
|
|
819
|
+
format: objectId
|
|
820
|
+
x-celigo-refModel: roles
|
|
821
|
+
requestBody:
|
|
822
|
+
required: true
|
|
823
|
+
content:
|
|
824
|
+
application/json:
|
|
825
|
+
schema:
|
|
826
|
+
$ref: '#/components/schemas/RoleRequest'
|
|
827
|
+
examples:
|
|
828
|
+
updateDescription:
|
|
829
|
+
summary: Update the description
|
|
830
|
+
value:
|
|
831
|
+
name: Finance tools
|
|
832
|
+
description: Updated description
|
|
833
|
+
responses:
|
|
834
|
+
'200':
|
|
835
|
+
description: Updated role.
|
|
836
|
+
content:
|
|
837
|
+
application/json:
|
|
838
|
+
schema:
|
|
839
|
+
$ref: '#/components/schemas/Role'
|
|
840
|
+
'400':
|
|
841
|
+
$ref: '#/components/responses/400-bad-request'
|
|
842
|
+
'401':
|
|
843
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
844
|
+
'403':
|
|
845
|
+
$ref: '#/components/responses/403-forbidden'
|
|
846
|
+
'404':
|
|
847
|
+
$ref: '#/components/responses/404-not-found'
|
|
848
|
+
'409':
|
|
849
|
+
description: A role with this name already exists in the account.
|
|
850
|
+
content:
|
|
851
|
+
application/json:
|
|
852
|
+
schema:
|
|
853
|
+
$ref: '#/components/schemas/Error'
|
|
854
|
+
'422':
|
|
855
|
+
$ref: '#/components/responses/422-unprocessable-entity'
|
|
856
|
+
delete:
|
|
857
|
+
x-internal: false
|
|
858
|
+
summary: Delete a role
|
|
859
|
+
operationId: deleteRole
|
|
860
|
+
tags:
|
|
861
|
+
- Roles
|
|
862
|
+
description: |-
|
|
863
|
+
Soft-deletes the role and removes it from the `_roleIds` of every group
|
|
864
|
+
in the account. Requires account owner or administrator access.
|
|
865
|
+
parameters:
|
|
866
|
+
- name: _id
|
|
867
|
+
in: path
|
|
868
|
+
required: true
|
|
869
|
+
description: Role ID.
|
|
870
|
+
schema:
|
|
871
|
+
type: string
|
|
872
|
+
format: objectId
|
|
873
|
+
x-celigo-refModel: roles
|
|
874
|
+
responses:
|
|
875
|
+
'204':
|
|
876
|
+
description: Role deleted.
|
|
877
|
+
'400':
|
|
878
|
+
$ref: '#/components/responses/400-bad-request'
|
|
879
|
+
'401':
|
|
880
|
+
$ref: '#/components/responses/401-unauthorized'
|
|
881
|
+
'403':
|
|
882
|
+
$ref: '#/components/responses/403-forbidden'
|
|
883
|
+
'404':
|
|
884
|
+
$ref: '#/components/responses/404-not-found'
|
|
885
|
+
components:
|
|
886
|
+
securitySchemes:
|
|
887
|
+
bearerAuth:
|
|
888
|
+
type: http
|
|
889
|
+
scheme: bearer
|
|
890
|
+
schemas:
|
|
891
|
+
GroupMembership:
|
|
892
|
+
type: object
|
|
893
|
+
description: An end user's membership in a group, with the source that created it.
|
|
894
|
+
properties:
|
|
895
|
+
_groupId:
|
|
896
|
+
type: string
|
|
897
|
+
format: objectId
|
|
898
|
+
x-celigo-refModel: groups
|
|
899
|
+
examples:
|
|
900
|
+
- 68a1b2c3d4e5f6a7b8c9d0e1
|
|
901
|
+
description: Group the end user belongs to.
|
|
902
|
+
source:
|
|
903
|
+
type: string
|
|
904
|
+
enum:
|
|
905
|
+
- manual
|
|
906
|
+
- idp
|
|
907
|
+
x-enumDescriptions:
|
|
908
|
+
manual: Membership was added by an owner or administrator (invite or group members API)
|
|
909
|
+
idp: Membership is synced from the identity provider's group claims
|
|
910
|
+
description: |-
|
|
911
|
+
How the membership was created. IdP-synced memberships cannot be
|
|
912
|
+
removed through the group members API — change the IdP group mapping
|
|
913
|
+
instead.
|
|
914
|
+
ResourceGrant:
|
|
915
|
+
type: object
|
|
916
|
+
description: |-
|
|
917
|
+
Grants access to a resource (currently MCP servers only). A grant names
|
|
918
|
+
the resource, or applies as a wildcard across all resources of the type,
|
|
919
|
+
and lists the capabilities granted on it.
|
|
920
|
+
required:
|
|
921
|
+
- resourceType
|
|
922
|
+
- capabilities
|
|
923
|
+
properties:
|
|
924
|
+
resourceType:
|
|
925
|
+
type: string
|
|
926
|
+
enum:
|
|
927
|
+
- mcpServer
|
|
928
|
+
x-enumDescriptions:
|
|
929
|
+
mcpServer: Grants access to an MCP server and its tools, APIs, or permission sets.
|
|
930
|
+
description: Resource type this grant applies to.
|
|
931
|
+
_resourceId:
|
|
932
|
+
type:
|
|
933
|
+
- string
|
|
934
|
+
- 'null'
|
|
935
|
+
format: objectId
|
|
936
|
+
x-celigo-refModel: mcpservers
|
|
937
|
+
examples:
|
|
938
|
+
- 6a1b2c3d4e5f6a7b8c9d0e1f
|
|
939
|
+
description: |-
|
|
940
|
+
MCP server this grant applies to. Omit or set to null for a wildcard
|
|
941
|
+
grant across all MCP servers in the account.
|
|
942
|
+
capabilities:
|
|
943
|
+
type: array
|
|
944
|
+
minItems: 1
|
|
945
|
+
description: Capabilities granted on the target resource.
|
|
946
|
+
items:
|
|
947
|
+
type: string
|
|
948
|
+
description: |-
|
|
949
|
+
Capability string. For `mcpServer` grants: `tool:all`,
|
|
950
|
+
`tool:<24-char-hex-id>` (an IO tool `_toolId` or attached prompt `_id`),
|
|
951
|
+
`api:all`, `api:<24-char-hex-apiId>`, or
|
|
952
|
+
`pset:<24-char-hex-permissionSetId>` referencing a permission set
|
|
953
|
+
defined on the target MCP server.
|
|
954
|
+
examples:
|
|
955
|
+
- tool:all
|
|
956
|
+
EndUser:
|
|
957
|
+
type: object
|
|
958
|
+
description: |-
|
|
959
|
+
An end user's access record in the account. End users authenticate through
|
|
960
|
+
MCP OAuth (optionally via an external IdP) to use MCP servers; they do not
|
|
961
|
+
get workspace access. The `_id` is the access-record id, not the user's own
|
|
962
|
+
id — the user's identity is in `_sharedWithUserId`.
|
|
963
|
+
required:
|
|
964
|
+
- _id
|
|
965
|
+
properties:
|
|
966
|
+
_id:
|
|
967
|
+
type: string
|
|
968
|
+
format: objectId
|
|
969
|
+
readOnly: true
|
|
970
|
+
examples:
|
|
971
|
+
- 68b1c2d3e4f5a6b7c8d9e0f1
|
|
972
|
+
description: Access-record id for this end user in the account.
|
|
973
|
+
_userId:
|
|
974
|
+
type: string
|
|
975
|
+
format: objectId
|
|
976
|
+
readOnly: true
|
|
977
|
+
x-celigo-refModel: users
|
|
978
|
+
examples:
|
|
979
|
+
- 5f8d43a1b9e5a80011a35f2c
|
|
980
|
+
description: Account owner's user id.
|
|
981
|
+
_sharedWithUserId:
|
|
982
|
+
type: string
|
|
983
|
+
format: objectId
|
|
984
|
+
readOnly: true
|
|
985
|
+
x-celigo-refModel: users
|
|
986
|
+
examples:
|
|
987
|
+
- 624774a6a7574d3ed9f9a5cc
|
|
988
|
+
description: The end user's own user id.
|
|
989
|
+
userType:
|
|
990
|
+
type: string
|
|
991
|
+
enum:
|
|
992
|
+
- end-user
|
|
993
|
+
x-enumDescriptions:
|
|
994
|
+
end-user: MCP-only access record, separate from workspace user access
|
|
995
|
+
description: Distinguishes end-user access records from workspace access records.
|
|
996
|
+
provisionedBy:
|
|
997
|
+
type: string
|
|
998
|
+
enum:
|
|
999
|
+
- invite
|
|
1000
|
+
- jit
|
|
1001
|
+
x-enumDescriptions:
|
|
1002
|
+
invite: Created through an explicit invite (or by migration from a workspace user)
|
|
1003
|
+
jit: Provisioned just-in-time on first sign-in through an external IdP
|
|
1004
|
+
description: How this end-user record was created.
|
|
1005
|
+
accepted:
|
|
1006
|
+
type: boolean
|
|
1007
|
+
description: When true, the end user has completed invite setup (or was JIT-provisioned).
|
|
1008
|
+
dismissed:
|
|
1009
|
+
type: boolean
|
|
1010
|
+
description: When true, the end user has declined the invitation.
|
|
1011
|
+
disabled:
|
|
1012
|
+
type: boolean
|
|
1013
|
+
description: When true, the end user's access is suspended without deleting the record.
|
|
1014
|
+
groupMemberships:
|
|
1015
|
+
type: array
|
|
1016
|
+
description: Groups this end user belongs to, with the source of each membership.
|
|
1017
|
+
items:
|
|
1018
|
+
$ref: '#/components/schemas/GroupMembership'
|
|
1019
|
+
resourceGrants:
|
|
1020
|
+
type: array
|
|
1021
|
+
description: Direct resource grants on this end user, in addition to any group- or role-derived access.
|
|
1022
|
+
items:
|
|
1023
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1024
|
+
_roleIds:
|
|
1025
|
+
type: array
|
|
1026
|
+
description: Roles assigned directly to this end user.
|
|
1027
|
+
items:
|
|
1028
|
+
type: string
|
|
1029
|
+
format: objectId
|
|
1030
|
+
x-celigo-refModel: roles
|
|
1031
|
+
email:
|
|
1032
|
+
type: string
|
|
1033
|
+
format: email
|
|
1034
|
+
readOnly: true
|
|
1035
|
+
examples:
|
|
1036
|
+
- enduser@example.com
|
|
1037
|
+
description: Email address of the end user, joined from the user record.
|
|
1038
|
+
name:
|
|
1039
|
+
type: string
|
|
1040
|
+
readOnly: true
|
|
1041
|
+
examples:
|
|
1042
|
+
- Ana Enduser
|
|
1043
|
+
description: Display name of the end user, joined from the user record.
|
|
1044
|
+
lastSignIn:
|
|
1045
|
+
type:
|
|
1046
|
+
- string
|
|
1047
|
+
- 'null'
|
|
1048
|
+
format: date-time
|
|
1049
|
+
readOnly: true
|
|
1050
|
+
examples:
|
|
1051
|
+
- '2026-08-02T17:02:59.370Z'
|
|
1052
|
+
description: When the end user last signed in. Null when they have never signed in.
|
|
1053
|
+
hasWorkspaceShare:
|
|
1054
|
+
type: boolean
|
|
1055
|
+
readOnly: true
|
|
1056
|
+
description: When true, the same person also has an active workspace access record on this account.
|
|
1057
|
+
createdAt:
|
|
1058
|
+
type: string
|
|
1059
|
+
format: date-time
|
|
1060
|
+
readOnly: true
|
|
1061
|
+
examples:
|
|
1062
|
+
- '2026-07-01T09:15:32Z'
|
|
1063
|
+
description: Timestamp when the end-user record was created.
|
|
1064
|
+
lastModified:
|
|
1065
|
+
type: string
|
|
1066
|
+
format: date-time
|
|
1067
|
+
readOnly: true
|
|
1068
|
+
examples:
|
|
1069
|
+
- '2026-08-15T14:30:15Z'
|
|
1070
|
+
description: Timestamp when the end-user record was last updated.
|
|
1071
|
+
Error:
|
|
1072
|
+
type: object
|
|
1073
|
+
description: Standard error response envelope returned by integrator.io APIs.
|
|
1074
|
+
properties:
|
|
1075
|
+
errors:
|
|
1076
|
+
type: array
|
|
1077
|
+
description: List of errors that occurred while processing the request.
|
|
1078
|
+
items:
|
|
1079
|
+
type: object
|
|
1080
|
+
properties:
|
|
1081
|
+
code:
|
|
1082
|
+
oneOf:
|
|
1083
|
+
- type: string
|
|
1084
|
+
- type: integer
|
|
1085
|
+
description: |-
|
|
1086
|
+
Machine-readable error code. Usually a string like
|
|
1087
|
+
`invalid_ref`, `missing_required_field`, or `unauthorized`;
|
|
1088
|
+
may be an **integer** when the error mirrors an upstream HTTP
|
|
1089
|
+
status (e.g. `500`) — most commonly returned by connection-ping
|
|
1090
|
+
and adaptor-proxy responses.
|
|
1091
|
+
message:
|
|
1092
|
+
type: string
|
|
1093
|
+
description: Human-readable description of the error.
|
|
1094
|
+
field:
|
|
1095
|
+
type: string
|
|
1096
|
+
description: |-
|
|
1097
|
+
Optional pointer to the document field that caused the error.
|
|
1098
|
+
Used by structural validation errors (`missing_required_field`,
|
|
1099
|
+
`invalid_ref`) to indicate which field is at fault
|
|
1100
|
+
(e.g. `_id`, `type`, `http.baseURI`).
|
|
1101
|
+
source:
|
|
1102
|
+
type: string
|
|
1103
|
+
description: |-
|
|
1104
|
+
Optional origin layer for the error — e.g. `application` when
|
|
1105
|
+
the error came from the remote system the adaptor called,
|
|
1106
|
+
`connector` when the adaptor itself rejected the request.
|
|
1107
|
+
required:
|
|
1108
|
+
- message
|
|
1109
|
+
required:
|
|
1110
|
+
- errors
|
|
1111
|
+
InviteRequest:
|
|
1112
|
+
type: object
|
|
1113
|
+
description: Invitation details for a single end user.
|
|
1114
|
+
required:
|
|
1115
|
+
- email
|
|
1116
|
+
properties:
|
|
1117
|
+
email:
|
|
1118
|
+
type: string
|
|
1119
|
+
format: email
|
|
1120
|
+
examples:
|
|
1121
|
+
- enduser@example.com
|
|
1122
|
+
description: Email address to invite. Normalized to lowercase and trimmed.
|
|
1123
|
+
name:
|
|
1124
|
+
type: string
|
|
1125
|
+
examples:
|
|
1126
|
+
- Ana Enduser
|
|
1127
|
+
description: Display name for the invited user. Defaults to the email local-part when omitted.
|
|
1128
|
+
groupIds:
|
|
1129
|
+
type: array
|
|
1130
|
+
description: Groups to add the end user to as manual memberships.
|
|
1131
|
+
items:
|
|
1132
|
+
type: string
|
|
1133
|
+
format: objectId
|
|
1134
|
+
x-celigo-refModel: groups
|
|
1135
|
+
directGrants:
|
|
1136
|
+
type: array
|
|
1137
|
+
description: Direct resource grants placed on the new end-user record.
|
|
1138
|
+
items:
|
|
1139
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1140
|
+
resourceGrants:
|
|
1141
|
+
type: array
|
|
1142
|
+
description: Alias for `directGrants`; send one or the other.
|
|
1143
|
+
items:
|
|
1144
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1145
|
+
InviteResponse:
|
|
1146
|
+
type: object
|
|
1147
|
+
description: Result of a successful single invite.
|
|
1148
|
+
properties:
|
|
1149
|
+
_userId:
|
|
1150
|
+
type: string
|
|
1151
|
+
format: objectId
|
|
1152
|
+
x-celigo-refModel: users
|
|
1153
|
+
examples:
|
|
1154
|
+
- 5f8d43a1b9e5a80011a35f2c
|
|
1155
|
+
description: Account owner's user id.
|
|
1156
|
+
_ashareId:
|
|
1157
|
+
type: string
|
|
1158
|
+
format: objectId
|
|
1159
|
+
examples:
|
|
1160
|
+
- 68b1c2d3e4f5a6b7c8d9e0f1
|
|
1161
|
+
description: Access-record id of the newly created end user.
|
|
1162
|
+
status:
|
|
1163
|
+
type: string
|
|
1164
|
+
enum:
|
|
1165
|
+
- invited
|
|
1166
|
+
x-enumDescriptions:
|
|
1167
|
+
invited: The end user was created and the invite email was sent
|
|
1168
|
+
description: Outcome of the invite.
|
|
1169
|
+
BulkInviteRequest:
|
|
1170
|
+
type: object
|
|
1171
|
+
description: |-
|
|
1172
|
+
Batch invitation for up to 100 end users. The optional `groupIds` and
|
|
1173
|
+
`directGrants` are shared and applied identically to every invite in
|
|
1174
|
+
the batch.
|
|
1175
|
+
required:
|
|
1176
|
+
- emails
|
|
1177
|
+
properties:
|
|
1178
|
+
emails:
|
|
1179
|
+
type: array
|
|
1180
|
+
minItems: 1
|
|
1181
|
+
maxItems: 100
|
|
1182
|
+
description: Email addresses to invite. Normalized to lowercase, trimmed, and de-duplicated within the batch.
|
|
1183
|
+
items:
|
|
1184
|
+
type: string
|
|
1185
|
+
format: email
|
|
1186
|
+
groupIds:
|
|
1187
|
+
type: array
|
|
1188
|
+
description: Groups added as manual memberships on every created end-user record.
|
|
1189
|
+
items:
|
|
1190
|
+
type: string
|
|
1191
|
+
format: objectId
|
|
1192
|
+
x-celigo-refModel: groups
|
|
1193
|
+
directGrants:
|
|
1194
|
+
type: array
|
|
1195
|
+
description: Direct resource grants applied identically to every invite.
|
|
1196
|
+
items:
|
|
1197
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1198
|
+
resourceGrants:
|
|
1199
|
+
type: array
|
|
1200
|
+
description: Alias for `directGrants`; send one or the other.
|
|
1201
|
+
items:
|
|
1202
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1203
|
+
BulkInviteResponse:
|
|
1204
|
+
type: object
|
|
1205
|
+
description: |-
|
|
1206
|
+
Batch outcome with one result per input email, in input order. Processing
|
|
1207
|
+
is partial-success — a failed item never aborts the batch.
|
|
1208
|
+
required:
|
|
1209
|
+
- summary
|
|
1210
|
+
- results
|
|
1211
|
+
properties:
|
|
1212
|
+
summary:
|
|
1213
|
+
type: object
|
|
1214
|
+
description: Aggregate counts for the batch.
|
|
1215
|
+
required:
|
|
1216
|
+
- total
|
|
1217
|
+
- invited
|
|
1218
|
+
- failed
|
|
1219
|
+
- skipped
|
|
1220
|
+
properties:
|
|
1221
|
+
total:
|
|
1222
|
+
type: integer
|
|
1223
|
+
description: Number of input emails. Equals invited + failed + skipped.
|
|
1224
|
+
invited:
|
|
1225
|
+
type: integer
|
|
1226
|
+
description: Number of end users successfully invited.
|
|
1227
|
+
failed:
|
|
1228
|
+
type: integer
|
|
1229
|
+
description: Number of per-email failures. Excludes items skipped as in-batch duplicates.
|
|
1230
|
+
skipped:
|
|
1231
|
+
type: integer
|
|
1232
|
+
description: Number of emails skipped as duplicates within the batch.
|
|
1233
|
+
results:
|
|
1234
|
+
type: array
|
|
1235
|
+
description: One entry per input email, in input order.
|
|
1236
|
+
items:
|
|
1237
|
+
type: object
|
|
1238
|
+
required:
|
|
1239
|
+
- email
|
|
1240
|
+
- status
|
|
1241
|
+
properties:
|
|
1242
|
+
email:
|
|
1243
|
+
type: string
|
|
1244
|
+
description: The normalized email this result corresponds to.
|
|
1245
|
+
status:
|
|
1246
|
+
type: string
|
|
1247
|
+
enum:
|
|
1248
|
+
- invited
|
|
1249
|
+
- failed
|
|
1250
|
+
- skipped_duplicate_in_batch
|
|
1251
|
+
x-enumDescriptions:
|
|
1252
|
+
invited: The end user was created and the invite email was sent
|
|
1253
|
+
failed: The invite failed; see `code` for the reason
|
|
1254
|
+
skipped_duplicate_in_batch: The email appeared earlier in the same batch
|
|
1255
|
+
description: Outcome for this email.
|
|
1256
|
+
_userId:
|
|
1257
|
+
type: string
|
|
1258
|
+
format: objectId
|
|
1259
|
+
x-celigo-refModel: users
|
|
1260
|
+
description: Account owner's user id. Present when status is `invited`.
|
|
1261
|
+
_ashareId:
|
|
1262
|
+
type: string
|
|
1263
|
+
format: objectId
|
|
1264
|
+
description: Access-record id of the created end user. Present when status is `invited`.
|
|
1265
|
+
code:
|
|
1266
|
+
type: string
|
|
1267
|
+
enum:
|
|
1268
|
+
- email_invalid
|
|
1269
|
+
- enduser_ashare_exists
|
|
1270
|
+
- owner_self_invite_not_allowed
|
|
1271
|
+
- validation_failed
|
|
1272
|
+
- invite_failed
|
|
1273
|
+
x-enumDescriptions:
|
|
1274
|
+
email_invalid: The email address is not valid
|
|
1275
|
+
enduser_ashare_exists: An end-user record already exists for this user in the account
|
|
1276
|
+
owner_self_invite_not_allowed: Account owners cannot be invited as end users
|
|
1277
|
+
validation_failed: The shared groupIds or grants failed validation for this item
|
|
1278
|
+
invite_failed: An unexpected per-item error, caught so the batch can continue
|
|
1279
|
+
description: Failure reason. Present when status is `failed`.
|
|
1280
|
+
EffectiveAccess:
|
|
1281
|
+
type: object
|
|
1282
|
+
description: |-
|
|
1283
|
+
The compiled MCP access for one end user, with source attribution. Access
|
|
1284
|
+
is the union of the end user's direct grants, group grants, role grants
|
|
1285
|
+
(direct or via groups), and permission sets on the target servers,
|
|
1286
|
+
recompiled on every request.
|
|
1287
|
+
properties:
|
|
1288
|
+
_ashareId:
|
|
1289
|
+
type: string
|
|
1290
|
+
format: objectId
|
|
1291
|
+
readOnly: true
|
|
1292
|
+
examples:
|
|
1293
|
+
- 68b1c2d3e4f5a6b7c8d9e0f1
|
|
1294
|
+
description: End-user access-record id this compilation applies to.
|
|
1295
|
+
_userId:
|
|
1296
|
+
type: string
|
|
1297
|
+
format: objectId
|
|
1298
|
+
readOnly: true
|
|
1299
|
+
x-celigo-refModel: users
|
|
1300
|
+
examples:
|
|
1301
|
+
- 624774a6a7574d3ed9f9a5cc
|
|
1302
|
+
description: The end user's own user id.
|
|
1303
|
+
userType:
|
|
1304
|
+
type: string
|
|
1305
|
+
enum:
|
|
1306
|
+
- end-user
|
|
1307
|
+
x-enumDescriptions:
|
|
1308
|
+
end-user: MCP-only access record, separate from workspace user access
|
|
1309
|
+
description: Type of the access record the compilation was run for.
|
|
1310
|
+
provisionedBy:
|
|
1311
|
+
type: string
|
|
1312
|
+
enum:
|
|
1313
|
+
- invite
|
|
1314
|
+
- jit
|
|
1315
|
+
x-enumDescriptions:
|
|
1316
|
+
invite: Created through an explicit invite (or by migration from a workspace user)
|
|
1317
|
+
jit: Provisioned just-in-time on first sign-in through an external IdP
|
|
1318
|
+
description: How the end-user record was created.
|
|
1319
|
+
groups:
|
|
1320
|
+
type: array
|
|
1321
|
+
description: Groups that contributed to the compiled access.
|
|
1322
|
+
items:
|
|
1323
|
+
type: object
|
|
1324
|
+
properties:
|
|
1325
|
+
_id:
|
|
1326
|
+
type: string
|
|
1327
|
+
format: objectId
|
|
1328
|
+
x-celigo-refModel: groups
|
|
1329
|
+
description: Group id.
|
|
1330
|
+
name:
|
|
1331
|
+
type: string
|
|
1332
|
+
description: Group name.
|
|
1333
|
+
source:
|
|
1334
|
+
type: string
|
|
1335
|
+
enum:
|
|
1336
|
+
- manual
|
|
1337
|
+
- idp
|
|
1338
|
+
x-enumDescriptions:
|
|
1339
|
+
manual: Membership was added by an owner or administrator
|
|
1340
|
+
idp: Membership is synced from the identity provider's group claims
|
|
1341
|
+
description: How the end user's membership in this group was created.
|
|
1342
|
+
roles:
|
|
1343
|
+
type: array
|
|
1344
|
+
description: Roles that contributed to the compiled access.
|
|
1345
|
+
items:
|
|
1346
|
+
type: object
|
|
1347
|
+
properties:
|
|
1348
|
+
_id:
|
|
1349
|
+
type: string
|
|
1350
|
+
format: objectId
|
|
1351
|
+
x-celigo-refModel: roles
|
|
1352
|
+
description: Role id.
|
|
1353
|
+
name:
|
|
1354
|
+
type: string
|
|
1355
|
+
description: Role name.
|
|
1356
|
+
via:
|
|
1357
|
+
type: array
|
|
1358
|
+
description: Attribution paths through which the role applies, such as `role-direct` or `group:<name>`.
|
|
1359
|
+
items:
|
|
1360
|
+
type: string
|
|
1361
|
+
access:
|
|
1362
|
+
type: array
|
|
1363
|
+
description: Per-server compiled access, listing the tools the end user can and cannot use.
|
|
1364
|
+
items:
|
|
1365
|
+
type: object
|
|
1366
|
+
properties:
|
|
1367
|
+
resourceType:
|
|
1368
|
+
type: string
|
|
1369
|
+
enum:
|
|
1370
|
+
- mcpServer
|
|
1371
|
+
x-enumDescriptions:
|
|
1372
|
+
mcpServer: Access to an MCP server and its tools
|
|
1373
|
+
description: Resource type of the compiled entry.
|
|
1374
|
+
_resourceId:
|
|
1375
|
+
type: string
|
|
1376
|
+
format: objectId
|
|
1377
|
+
x-celigo-refModel: mcpservers
|
|
1378
|
+
description: MCP server this entry applies to.
|
|
1379
|
+
resourceName:
|
|
1380
|
+
type:
|
|
1381
|
+
- string
|
|
1382
|
+
- 'null'
|
|
1383
|
+
description: Display name of the MCP server. Null when the server no longer resolves.
|
|
1384
|
+
tools:
|
|
1385
|
+
type: array
|
|
1386
|
+
description: Tools the end user can invoke on this server.
|
|
1387
|
+
items:
|
|
1388
|
+
type: object
|
|
1389
|
+
properties:
|
|
1390
|
+
_id:
|
|
1391
|
+
type: string
|
|
1392
|
+
format: objectId
|
|
1393
|
+
description: Tool id.
|
|
1394
|
+
name:
|
|
1395
|
+
type: string
|
|
1396
|
+
description: Tool name.
|
|
1397
|
+
via:
|
|
1398
|
+
type: array
|
|
1399
|
+
description: |-
|
|
1400
|
+
Source attribution strings such as `direct`, `group:<name>`,
|
|
1401
|
+
`pset:<name> (group:<name>)`, `role-direct:<name>`, or
|
|
1402
|
+
`role:<name> (group:<name>)`.
|
|
1403
|
+
items:
|
|
1404
|
+
type: string
|
|
1405
|
+
deniedTools:
|
|
1406
|
+
type: array
|
|
1407
|
+
description: Tools on this server the end user cannot invoke, with the reason.
|
|
1408
|
+
items:
|
|
1409
|
+
type: object
|
|
1410
|
+
properties:
|
|
1411
|
+
_id:
|
|
1412
|
+
type: string
|
|
1413
|
+
format: objectId
|
|
1414
|
+
description: Tool id.
|
|
1415
|
+
name:
|
|
1416
|
+
type: string
|
|
1417
|
+
description: Tool name.
|
|
1418
|
+
reason:
|
|
1419
|
+
type: string
|
|
1420
|
+
description: Why the tool is not available to this end user.
|
|
1421
|
+
Group:
|
|
1422
|
+
type: object
|
|
1423
|
+
description: |-
|
|
1424
|
+
A named bundle of roles and resource grants for end-user access
|
|
1425
|
+
management. End users receive the group's access through membership,
|
|
1426
|
+
whether added manually or synced from an identity provider.
|
|
1427
|
+
required:
|
|
1428
|
+
- _id
|
|
1429
|
+
- name
|
|
1430
|
+
properties:
|
|
1431
|
+
_id:
|
|
1432
|
+
type: string
|
|
1433
|
+
format: objectId
|
|
1434
|
+
readOnly: true
|
|
1435
|
+
examples:
|
|
1436
|
+
- 68a1b2c3d4e5f6a7b8c9d0e1
|
|
1437
|
+
description: Unique identifier for the group.
|
|
1438
|
+
_userId:
|
|
1439
|
+
type: string
|
|
1440
|
+
format: objectId
|
|
1441
|
+
readOnly: true
|
|
1442
|
+
x-celigo-refModel: users
|
|
1443
|
+
examples:
|
|
1444
|
+
- 5f8d43a1b9e5a80011a35f2c
|
|
1445
|
+
description: Account owner's user id.
|
|
1446
|
+
name:
|
|
1447
|
+
type: string
|
|
1448
|
+
examples:
|
|
1449
|
+
- Finance
|
|
1450
|
+
description: Group name, unique within the account (case-insensitive).
|
|
1451
|
+
description:
|
|
1452
|
+
type: string
|
|
1453
|
+
examples:
|
|
1454
|
+
- Finance department end users
|
|
1455
|
+
description: Free-text description of the group's purpose.
|
|
1456
|
+
intendedFor:
|
|
1457
|
+
type: array
|
|
1458
|
+
default:
|
|
1459
|
+
- end-user
|
|
1460
|
+
description: Audience this group is intended for. Defaults to `["end-user"]` when omitted on write.
|
|
1461
|
+
items:
|
|
1462
|
+
type: string
|
|
1463
|
+
enum:
|
|
1464
|
+
- end-user
|
|
1465
|
+
x-enumDescriptions:
|
|
1466
|
+
end-user: The group manages access for end users (MCP consumers)
|
|
1467
|
+
_roleIds:
|
|
1468
|
+
type: array
|
|
1469
|
+
description: Roles pinned to this group. Members receive the roles' grants through the group.
|
|
1470
|
+
items:
|
|
1471
|
+
type: string
|
|
1472
|
+
format: objectId
|
|
1473
|
+
x-celigo-refModel: roles
|
|
1474
|
+
resourceGrants:
|
|
1475
|
+
type: array
|
|
1476
|
+
description: Resource grants attached directly to the group, in addition to any role-derived grants.
|
|
1477
|
+
items:
|
|
1478
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1479
|
+
hasIdpSyncedMembers:
|
|
1480
|
+
type: boolean
|
|
1481
|
+
readOnly: true
|
|
1482
|
+
description: |-
|
|
1483
|
+
When true, at least one end user's membership in this group is synced
|
|
1484
|
+
from an identity provider's group claims. Maintained by the server —
|
|
1485
|
+
IdP-synced memberships cannot be removed through the group members
|
|
1486
|
+
API.
|
|
1487
|
+
createdAt:
|
|
1488
|
+
type: string
|
|
1489
|
+
format: date-time
|
|
1490
|
+
readOnly: true
|
|
1491
|
+
examples:
|
|
1492
|
+
- '2026-07-01T09:15:32Z'
|
|
1493
|
+
description: Timestamp when the group was created.
|
|
1494
|
+
lastModified:
|
|
1495
|
+
type: string
|
|
1496
|
+
format: date-time
|
|
1497
|
+
readOnly: true
|
|
1498
|
+
examples:
|
|
1499
|
+
- '2026-08-15T14:30:15Z'
|
|
1500
|
+
description: Timestamp when the group was last updated.
|
|
1501
|
+
GroupRequest:
|
|
1502
|
+
type: object
|
|
1503
|
+
description: Writable fields for creating or replacing a group.
|
|
1504
|
+
required:
|
|
1505
|
+
- name
|
|
1506
|
+
properties:
|
|
1507
|
+
name:
|
|
1508
|
+
type: string
|
|
1509
|
+
examples:
|
|
1510
|
+
- Finance
|
|
1511
|
+
description: Group name, unique within the account (case-insensitive).
|
|
1512
|
+
description:
|
|
1513
|
+
type: string
|
|
1514
|
+
examples:
|
|
1515
|
+
- Finance department end users
|
|
1516
|
+
description: Free-text description of the group's purpose.
|
|
1517
|
+
intendedFor:
|
|
1518
|
+
type: array
|
|
1519
|
+
default:
|
|
1520
|
+
- end-user
|
|
1521
|
+
description: Audience this group is intended for. Defaults to `["end-user"]` when omitted.
|
|
1522
|
+
items:
|
|
1523
|
+
type: string
|
|
1524
|
+
enum:
|
|
1525
|
+
- end-user
|
|
1526
|
+
x-enumDescriptions:
|
|
1527
|
+
end-user: The group manages access for end users (MCP consumers)
|
|
1528
|
+
_roleIds:
|
|
1529
|
+
type: array
|
|
1530
|
+
description: Roles to pin to this group. Must reference roles owned by the same account.
|
|
1531
|
+
items:
|
|
1532
|
+
type: string
|
|
1533
|
+
format: objectId
|
|
1534
|
+
x-celigo-refModel: roles
|
|
1535
|
+
resourceGrants:
|
|
1536
|
+
type: array
|
|
1537
|
+
description: Resource grants to attach directly to the group. `_resourceId` values must reference resources owned by the same account.
|
|
1538
|
+
items:
|
|
1539
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1540
|
+
GroupMembersRequest:
|
|
1541
|
+
type: object
|
|
1542
|
+
description: End users to add to or remove from the group.
|
|
1543
|
+
required:
|
|
1544
|
+
- _ashareIds
|
|
1545
|
+
properties:
|
|
1546
|
+
_ashareIds:
|
|
1547
|
+
type: array
|
|
1548
|
+
minItems: 1
|
|
1549
|
+
maxItems: 100
|
|
1550
|
+
description: End-user access-record ids to add or remove.
|
|
1551
|
+
items:
|
|
1552
|
+
type: string
|
|
1553
|
+
format: objectId
|
|
1554
|
+
GroupMembersResponse:
|
|
1555
|
+
type: object
|
|
1556
|
+
description: Outcome of a bulk membership change.
|
|
1557
|
+
properties:
|
|
1558
|
+
updated:
|
|
1559
|
+
type: integer
|
|
1560
|
+
description: Number of end-user records updated. Members already in (or absent from) the group are not counted.
|
|
1561
|
+
Role:
|
|
1562
|
+
type: object
|
|
1563
|
+
description: |-
|
|
1564
|
+
A named, reusable bundle of resource grants. Roles are assigned to end
|
|
1565
|
+
users directly (`_roleIds` on the end-user record) or pinned to groups,
|
|
1566
|
+
and their grants are compiled into each member's effective access.
|
|
1567
|
+
required:
|
|
1568
|
+
- _id
|
|
1569
|
+
- name
|
|
1570
|
+
properties:
|
|
1571
|
+
_id:
|
|
1572
|
+
type: string
|
|
1573
|
+
format: objectId
|
|
1574
|
+
readOnly: true
|
|
1575
|
+
examples:
|
|
1576
|
+
- 68c1d2e3f4a5b6c7d8e9f0a1
|
|
1577
|
+
description: Unique identifier for the role.
|
|
1578
|
+
_userId:
|
|
1579
|
+
type: string
|
|
1580
|
+
format: objectId
|
|
1581
|
+
readOnly: true
|
|
1582
|
+
x-celigo-refModel: users
|
|
1583
|
+
examples:
|
|
1584
|
+
- 5f8d43a1b9e5a80011a35f2c
|
|
1585
|
+
description: Account owner's user id.
|
|
1586
|
+
name:
|
|
1587
|
+
type: string
|
|
1588
|
+
examples:
|
|
1589
|
+
- Finance tools
|
|
1590
|
+
description: Role name, unique within the account (case-insensitive).
|
|
1591
|
+
description:
|
|
1592
|
+
type: string
|
|
1593
|
+
examples:
|
|
1594
|
+
- Read access to finance MCP tools
|
|
1595
|
+
description: Free-text description of the role's purpose.
|
|
1596
|
+
resourceGrants:
|
|
1597
|
+
type: array
|
|
1598
|
+
description: Resource grants this role carries.
|
|
1599
|
+
items:
|
|
1600
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1601
|
+
createdAt:
|
|
1602
|
+
type: string
|
|
1603
|
+
format: date-time
|
|
1604
|
+
readOnly: true
|
|
1605
|
+
examples:
|
|
1606
|
+
- '2026-07-01T09:15:32Z'
|
|
1607
|
+
description: Timestamp when the role was created.
|
|
1608
|
+
lastModified:
|
|
1609
|
+
type: string
|
|
1610
|
+
format: date-time
|
|
1611
|
+
readOnly: true
|
|
1612
|
+
examples:
|
|
1613
|
+
- '2026-08-15T14:30:15Z'
|
|
1614
|
+
description: Timestamp when the role was last updated.
|
|
1615
|
+
RoleRequest:
|
|
1616
|
+
type: object
|
|
1617
|
+
description: Writable fields for creating or replacing a role.
|
|
1618
|
+
required:
|
|
1619
|
+
- name
|
|
1620
|
+
properties:
|
|
1621
|
+
name:
|
|
1622
|
+
type: string
|
|
1623
|
+
examples:
|
|
1624
|
+
- Finance tools
|
|
1625
|
+
description: Role name, unique within the account (case-insensitive).
|
|
1626
|
+
description:
|
|
1627
|
+
type: string
|
|
1628
|
+
examples:
|
|
1629
|
+
- Read access to finance MCP tools
|
|
1630
|
+
description: Free-text description of the role's purpose.
|
|
1631
|
+
resourceGrants:
|
|
1632
|
+
type: array
|
|
1633
|
+
description: Resource grants this role carries. `_resourceId` values must reference resources owned by the same account.
|
|
1634
|
+
items:
|
|
1635
|
+
$ref: '#/components/schemas/ResourceGrant'
|
|
1636
|
+
responses:
|
|
1637
|
+
400-bad-request:
|
|
1638
|
+
description: |
|
|
1639
|
+
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
|
|
1640
|
+
content:
|
|
1641
|
+
application/json:
|
|
1642
|
+
schema:
|
|
1643
|
+
$ref: '#/components/schemas/Error'
|
|
1644
|
+
examples:
|
|
1645
|
+
default:
|
|
1646
|
+
value:
|
|
1647
|
+
errors:
|
|
1648
|
+
- code: invalid_request
|
|
1649
|
+
message: The request body failed validation.
|
|
1650
|
+
401-unauthorized:
|
|
1651
|
+
description: |-
|
|
1652
|
+
Unauthorized. The request lacks a valid bearer token, or the provided token
|
|
1653
|
+
failed to authenticate.
|
|
1654
|
+
|
|
1655
|
+
Note: the 401 response is produced by the auth middleware **before** the
|
|
1656
|
+
request reaches the endpoint handler, so it does **not** follow the
|
|
1657
|
+
standard `{errors: [...]}` envelope. Instead the body is a bare
|
|
1658
|
+
`{message: string}` object with no `code`, no `errors` array. Callers
|
|
1659
|
+
handling 401s should key off the HTTP status and the `message` string,
|
|
1660
|
+
not try to destructure an `errors[]`.
|
|
1661
|
+
content:
|
|
1662
|
+
application/json:
|
|
1663
|
+
schema:
|
|
1664
|
+
type: object
|
|
1665
|
+
properties:
|
|
1666
|
+
message:
|
|
1667
|
+
type: string
|
|
1668
|
+
description: |-
|
|
1669
|
+
Human-readable description of the auth failure. Known values:
|
|
1670
|
+
- `"Unauthorized"` — no `Authorization` header on the request.
|
|
1671
|
+
- `"Bearer Authentication Failed"` — header present but token
|
|
1672
|
+
is invalid, revoked, or expired.
|
|
1673
|
+
required:
|
|
1674
|
+
- message
|
|
1675
|
+
examples:
|
|
1676
|
+
missing_token:
|
|
1677
|
+
summary: No Authorization header sent
|
|
1678
|
+
value:
|
|
1679
|
+
message: Unauthorized
|
|
1680
|
+
invalid_token:
|
|
1681
|
+
summary: Bearer token invalid or revoked
|
|
1682
|
+
value:
|
|
1683
|
+
message: Bearer Authentication Failed
|
|
1684
|
+
403-forbidden:
|
|
1685
|
+
description: |
|
|
1686
|
+
Forbidden. The authenticated caller does not have permission to perform this operation.
|
|
1687
|
+
content:
|
|
1688
|
+
application/json:
|
|
1689
|
+
schema:
|
|
1690
|
+
$ref: '#/components/schemas/Error'
|
|
1691
|
+
examples:
|
|
1692
|
+
default:
|
|
1693
|
+
value:
|
|
1694
|
+
errors:
|
|
1695
|
+
- code: forbidden
|
|
1696
|
+
message: You do not have permission to access this resource.
|
|
1697
|
+
422-unprocessable-entity:
|
|
1698
|
+
description: |
|
|
1699
|
+
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
|
|
1700
|
+
content:
|
|
1701
|
+
application/json:
|
|
1702
|
+
schema:
|
|
1703
|
+
$ref: '#/components/schemas/Error'
|
|
1704
|
+
examples:
|
|
1705
|
+
default:
|
|
1706
|
+
value:
|
|
1707
|
+
errors:
|
|
1708
|
+
- code: unprocessable_entity
|
|
1709
|
+
message: The request could not be processed due to a semantic error.
|
|
1710
|
+
404-not-found:
|
|
1711
|
+
description: |
|
|
1712
|
+
Not found. The requested resource does not exist or is not visible to the caller.
|
|
1713
|
+
content:
|
|
1714
|
+
application/json:
|
|
1715
|
+
schema:
|
|
1716
|
+
$ref: '#/components/schemas/Error'
|
|
1717
|
+
examples:
|
|
1718
|
+
default:
|
|
1719
|
+
value:
|
|
1720
|
+
errors:
|
|
1721
|
+
- code: not_found
|
|
1722
|
+
message: The requested resource was not found.
|
|
1723
|
+
x-enable-proxy: true
|
|
1724
|
+
x-internal: false
|