@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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/account.yml +592 -0
  4. package/dist/agent.yml +908 -0
  5. package/dist/ai-agent.yml +5471 -0
  6. package/dist/api.yml +4140 -0
  7. package/dist/apim.yml +1286 -0
  8. package/dist/asynchelper.yml +3391 -0
  9. package/dist/audit.yml +2006 -0
  10. package/dist/connection.yml +8665 -0
  11. package/dist/connector.yml +1406 -0
  12. package/dist/ediprofile.yml +911 -0
  13. package/dist/editransaction.yml +1210 -0
  14. package/dist/enduser.yml +1724 -0
  15. package/dist/environment.yml +568 -0
  16. package/dist/eventreport.yml +692 -0
  17. package/dist/export.yml +17610 -0
  18. package/dist/filedefinition.yml +1396 -0
  19. package/dist/filestorage.yml +3102 -0
  20. package/dist/flow.yml +7928 -0
  21. package/dist/guardrail.yml +2763 -0
  22. package/dist/httpconnector.yml +2277 -0
  23. package/dist/httpconnectorendpoint.yml +722 -0
  24. package/dist/httpconnectorresource.yml +396 -0
  25. package/dist/iclient.yml +4452 -0
  26. package/dist/import.yml +15381 -0
  27. package/dist/integration.yml +4406 -0
  28. package/dist/job.yml +2014 -0
  29. package/dist/lookupcache.yml +1325 -0
  30. package/dist/marketplace.yml +685 -0
  31. package/dist/mcp-oauth-provider.yml +590 -0
  32. package/dist/mcp-server.yml +2656 -0
  33. package/dist/notification.yml +488 -0
  34. package/dist/processor.yml +1253 -0
  35. package/dist/profile.yml +455 -0
  36. package/dist/recyclebin.yml +768 -0
  37. package/dist/script.yml +1128 -0
  38. package/dist/stack.yml +1291 -0
  39. package/dist/state.yml +894 -0
  40. package/dist/subscription.yml +1405 -0
  41. package/dist/sync.yml +4857 -0
  42. package/dist/tag.yml +553 -0
  43. package/dist/template.yml +897 -0
  44. package/dist/tool.yml +33656 -0
  45. package/dist/tradingpartnerconnector.yml +1490 -0
  46. package/dist/user.yml +831 -0
  47. package/package.json +41 -0
  48. package/schemas.json +8420 -0
package/dist/user.yml ADDED
@@ -0,0 +1,831 @@
1
+ openapi: 3.2.0
2
+ info:
3
+ version: 1.0.0
4
+ title: Users
5
+ description: API for managing user access to a Celigo account — invitations, access levels, and per-integration permissions.
6
+ x-celigo-ai-guidance:
7
+ - |-
8
+ API for managing account users - inviting, updating permissions,
9
+ and removing access.
10
+ servers:
11
+ - url: https://api.integrator.io
12
+ description: Production (US / default region)
13
+ - url: https://api.eu.integrator.io
14
+ description: Production (EU region)
15
+ - url: https://api.au.integrator.io
16
+ description: Production (AU region)
17
+ - url: https://api.ca.integrator.io
18
+ description: Production (CA region)
19
+ security:
20
+ - bearerAuth: []
21
+ tags:
22
+ - name: Users
23
+ description: |-
24
+ Manage user access to a Celigo account. Each record represents a user's
25
+ access grant, including their access level and invitation status.
26
+
27
+ Access is controlled at two levels:
28
+ - **accessLevel** — account-wide role (administrator, manage, monitor, etc.)
29
+ - **integrationAccessLevel** — per-integration overrides for finer control.
30
+
31
+ The account owner is not included — only invited users appear. Users can
32
+ be disabled (reversible) or permanently removed.
33
+
34
+ ## User schema
35
+
36
+ {% openapi-schemas spec="user" schemas="User" grouped="true" %}
37
+ paths:
38
+ /v1/ashares:
39
+ get:
40
+ x-internal: false
41
+ summary: List users
42
+ description: |-
43
+ Returns all users with access to the account. The account owner is
44
+ not included — only invited users appear.
45
+ operationId: listUsers
46
+ tags:
47
+ - Users
48
+ parameters:
49
+ - name: userType
50
+ in: query
51
+ required: false
52
+ schema:
53
+ type: string
54
+ enum:
55
+ - workspace
56
+ - end-user
57
+ x-enumDescriptions:
58
+ workspace: Workspace (team member) access records — the records this endpoint returns.
59
+ end-user: End-user records; always empty here (204) — list them via the End Users API instead.
60
+ description: |-
61
+ Filter by access-record type. `workspace` returns the same records as
62
+ an unfiltered call; `end-user` always returns 204 because end users
63
+ are served by the End Users API, not this endpoint.
64
+ responses:
65
+ '200':
66
+ description: All users with access to the account.
67
+ x-celigo-ai-guidance:
68
+ - Successfully retrieved list of users
69
+ content:
70
+ application/json:
71
+ schema:
72
+ type: array
73
+ items:
74
+ $ref: '#/components/schemas/User'
75
+ examples:
76
+ default:
77
+ value:
78
+ - _id: 6798f4dc43db9184f4bc8ee0
79
+ accepted: true
80
+ userType: workspace
81
+ accessLevel: administrator
82
+ integrationAccessLevel: []
83
+ accountSSORequired: false
84
+ accountMFARequired: false
85
+ isProductionAdmin: true
86
+ allowIntegrationWorkspaceCreation: false
87
+ createdVia: existing_account_invite
88
+ lastModified: '2026-05-02T17:02:59.371Z'
89
+ createdAt: '2025-01-28T15:16:44.327Z'
90
+ lastSignIn: '2026-05-02T17:02:59.370Z'
91
+ sharedWithUser:
92
+ _id: 624774a6a7574d3ed9f9a5cc
93
+ email: admin@example.com
94
+ name: Account Admin
95
+ allowedToResetMFA: false
96
+ accountSSOLinked: not_linked
97
+ - _id: 690954729ef09ab572f65e5d
98
+ accepted: true
99
+ userType: workspace
100
+ integrationAccessLevel:
101
+ - _integrationId: 68f52162f00a35a1b26eaafb
102
+ accessLevel: manage
103
+ - _integrationId: 6842261335b64c0bcb308e4f
104
+ accessLevel: monitor
105
+ accountSSORequired: false
106
+ accountMFARequired: false
107
+ allowIntegrationWorkspaceCreation: false
108
+ createdVia: existing_account_invite
109
+ lastModified: '2026-04-09T18:48:15.653Z'
110
+ createdAt: '2025-11-04T01:18:42.025Z'
111
+ sharedWithUser:
112
+ _id: 69095422a6fa76e8c7c170eb
113
+ email: contributor@example.com
114
+ name: Integration User
115
+ allowedToResetMFA: false
116
+ accountSSOLinked: not_linked
117
+ '204':
118
+ description: No users exist in the account
119
+ '401':
120
+ $ref: '#/components/responses/401-unauthorized'
121
+ /v1/ashares/{_id}:
122
+ get:
123
+ x-internal: false
124
+ summary: Get a user
125
+ operationId: getUser
126
+ tags:
127
+ - Users
128
+ description: Retrieve a single user's access record by its id.
129
+ parameters:
130
+ - name: _id
131
+ in: path
132
+ required: true
133
+ description: User access-record id.
134
+ schema:
135
+ type: string
136
+ format: objectId
137
+ responses:
138
+ '200':
139
+ description: The user record.
140
+ content:
141
+ application/json:
142
+ schema:
143
+ $ref: '#/components/schemas/User'
144
+ examples:
145
+ default:
146
+ value:
147
+ _id: 6798f4dc43db9184f4bc8ee0
148
+ accepted: true
149
+ accessLevel: administrator
150
+ integrationAccessLevel: []
151
+ accountSSORequired: false
152
+ accountMFARequired: false
153
+ isProductionAdmin: true
154
+ allowIntegrationWorkspaceCreation: false
155
+ createdVia: existing_account_invite
156
+ lastModified: '2026-05-02T17:02:59.371Z'
157
+ createdAt: '2025-01-28T15:16:44.327Z'
158
+ lastSignIn: '2026-05-02T17:02:59.370Z'
159
+ sharedWithUser:
160
+ _id: 624774a6a7574d3ed9f9a5cc
161
+ email: admin@example.com
162
+ name: Account Admin
163
+ allowedToResetMFA: false
164
+ accountSSOLinked: not_linked
165
+ '401':
166
+ $ref: '#/components/responses/401-unauthorized'
167
+ '404':
168
+ $ref: '#/components/responses/404-not-found'
169
+ put:
170
+ x-internal: false
171
+ summary: Update a user
172
+ operationId: updateUser
173
+ tags:
174
+ - Users
175
+ description: |-
176
+ Update a user's access level, integration permissions, or account
177
+ settings. The user's email cannot be changed after invite. To
178
+ disable a user without deleting, use `PUT /v1/ashares/{_id}/disable`
179
+ instead.
180
+ parameters:
181
+ - name: _id
182
+ in: path
183
+ required: true
184
+ description: User access-record id.
185
+ schema:
186
+ type: string
187
+ format: objectId
188
+ requestBody:
189
+ required: true
190
+ content:
191
+ application/json:
192
+ schema:
193
+ $ref: '#/components/schemas/Request'
194
+ examples:
195
+ changeAccessLevel:
196
+ summary: Change to administrator
197
+ value:
198
+ accessLevel: administrator
199
+ integrationOnly:
200
+ summary: Integration-only access
201
+ value:
202
+ integrationAccessLevel:
203
+ - _integrationId: 68f52162f00a35a1b26eaafb
204
+ accessLevel: manage
205
+ - _integrationId: 6842261335b64c0bcb308e4f
206
+ accessLevel: monitor
207
+ disableUser:
208
+ summary: Re-enable a disabled user
209
+ value:
210
+ disabled: false
211
+ responses:
212
+ '204':
213
+ description: User updated.
214
+ '400':
215
+ $ref: '#/components/responses/400-bad-request'
216
+ '401':
217
+ $ref: '#/components/responses/401-unauthorized'
218
+ '404':
219
+ $ref: '#/components/responses/404-not-found'
220
+ delete:
221
+ x-internal: false
222
+ summary: Delete a user
223
+ operationId: deleteUser
224
+ tags:
225
+ - Users
226
+ description: |-
227
+ Remove a user from the current account. This is irreversible — for a
228
+ reversible alternative, use `PUT /v1/ashares/{_id}/disable`. Works
229
+ on both accepted and pending invites.
230
+ parameters:
231
+ - name: _id
232
+ in: path
233
+ required: true
234
+ description: User access-record id.
235
+ schema:
236
+ type: string
237
+ format: objectId
238
+ responses:
239
+ '204':
240
+ description: User removed from the account.
241
+ '401':
242
+ $ref: '#/components/responses/401-unauthorized'
243
+ '404':
244
+ $ref: '#/components/responses/404-not-found'
245
+ /v1/ashares/{_userId}/disable:
246
+ put:
247
+ x-internal: false
248
+ operationId: toggleUserDisabled
249
+ tags:
250
+ - Users
251
+ summary: Toggle a user's account access (disable or re-enable)
252
+ description: |-
253
+ Toggles the `disabled` flag on a user's access record. Call again to
254
+ re-enable — there is no separate `/enable` path. Only works on users
255
+ with `accepted: true`.
256
+ parameters:
257
+ - name: _userId
258
+ in: path
259
+ required: true
260
+ description: |-
261
+ The ashare record `_id` from `GET /v1/ashares` — despite the
262
+ parameter name, this is NOT `sharedWithUser._id`.
263
+ schema:
264
+ type: string
265
+ format: objectId
266
+ requestBody:
267
+ required: false
268
+ content:
269
+ application/json:
270
+ schema:
271
+ type: object
272
+ description: Empty body — the target is identified by the path parameter alone.
273
+ examples:
274
+ default:
275
+ summary: Empty body
276
+ value: {}
277
+ responses:
278
+ '204':
279
+ description: User access toggled.
280
+ '400':
281
+ $ref: '#/components/responses/400-bad-request'
282
+ '401':
283
+ $ref: '#/components/responses/401-unauthorized'
284
+ '404':
285
+ description: User not found.
286
+ content:
287
+ application/json:
288
+ schema:
289
+ $ref: '#/components/schemas/Error'
290
+ examples:
291
+ ashare_not_found:
292
+ value:
293
+ errors:
294
+ - code: invalid_ref
295
+ message: AShare not found.
296
+ /v1/ashares/{_id}/reinvite:
297
+ put:
298
+ x-internal: false
299
+ summary: Reinvite a user who dismissed their invite
300
+ description: |-
301
+ Re-sends the invitation to a user who previously dismissed it. Only
302
+ works on users with `dismissed: true` in the user record. After
303
+ reinviting, the user returns to a pending state awaiting acceptance.
304
+ operationId: reinviteUser
305
+ tags:
306
+ - Users
307
+ parameters:
308
+ - name: _id
309
+ in: path
310
+ required: true
311
+ description: User access-record id.
312
+ schema:
313
+ type: string
314
+ format: objectId
315
+ requestBody:
316
+ required: false
317
+ content:
318
+ application/json:
319
+ schema:
320
+ type: object
321
+ description: Empty body.
322
+ examples:
323
+ empty:
324
+ summary: Empty body — no fields required
325
+ value: {}
326
+ responses:
327
+ '204':
328
+ description: Reinvitation sent.
329
+ '400':
330
+ description: User has not dismissed the invite.
331
+ content:
332
+ application/json:
333
+ schema:
334
+ $ref: '#/components/schemas/Error'
335
+ examples:
336
+ notDismissed:
337
+ summary: User has not dismissed
338
+ value:
339
+ errors:
340
+ - code: invalid_request
341
+ message: User has not dismissed the invite.
342
+ '401':
343
+ $ref: '#/components/responses/401-unauthorized'
344
+ '404':
345
+ $ref: '#/components/responses/404-not-found'
346
+ /v1/invite/multiple:
347
+ post:
348
+ x-internal: false
349
+ summary: Invite users to the account
350
+ description: |-
351
+ Invite one or more users by email. Each entry in the response array
352
+ corresponds to the email at the same index — check `statusCode` per
353
+ entry for partial failures.
354
+ operationId: inviteUsers
355
+ tags:
356
+ - Users
357
+ requestBody:
358
+ required: true
359
+ content:
360
+ application/json:
361
+ schema:
362
+ $ref: '#/components/schemas/InviteRequest'
363
+ examples:
364
+ monitorAccess:
365
+ summary: Invite with monitor access
366
+ value:
367
+ emails:
368
+ - user1@example.com
369
+ - user2@example.com
370
+ accessLevel: monitor
371
+ integrationOnly:
372
+ summary: Invite with per-integration access
373
+ value:
374
+ emails:
375
+ - contractor@example.com
376
+ integrationAccessLevel:
377
+ - _integrationId: 68f52162f00a35a1b26eaafb
378
+ accessLevel: manage
379
+ responses:
380
+ '200':
381
+ description: Array of results, one per email.
382
+ content:
383
+ application/json:
384
+ schema:
385
+ type: array
386
+ items:
387
+ type: object
388
+ properties:
389
+ statusCode:
390
+ type: integer
391
+ description: |-
392
+ Per-entry result code. `201` on success, `400` if
393
+ the user already has access (use `PUT /v1/ashares/{_id}`
394
+ to update permissions instead).
395
+ doc:
396
+ $ref: '#/components/schemas/User'
397
+ examples:
398
+ default:
399
+ value:
400
+ - statusCode: 201
401
+ doc:
402
+ _id: 6a02b1869a09438890230ae2
403
+ accessLevel: monitor
404
+ integrationAccessLevel: []
405
+ lastModified: '2026-05-12T04:50:14.342Z'
406
+ createdAt: '2026-05-12T04:50:14.330Z'
407
+ allowIntegrationWorkspaceCreation: false
408
+ createdVia: existing_account_invite
409
+ sharedWithUser:
410
+ _id: 6a02b1859a09438890230a9f
411
+ email: user1@example.com
412
+ - statusCode: 201
413
+ doc:
414
+ _id: 6a02b1869a09438890230aef
415
+ accessLevel: monitor
416
+ integrationAccessLevel: []
417
+ lastModified: '2026-05-12T04:50:14.355Z'
418
+ createdAt: '2026-05-12T04:50:14.345Z'
419
+ allowIntegrationWorkspaceCreation: false
420
+ createdVia: existing_account_invite
421
+ sharedWithUser:
422
+ _id: 6a02b1859a09438890230aab
423
+ email: user2@example.com
424
+ '400':
425
+ $ref: '#/components/responses/400-bad-request'
426
+ '401':
427
+ $ref: '#/components/responses/401-unauthorized'
428
+ components:
429
+ securitySchemes:
430
+ bearerAuth:
431
+ type: http
432
+ scheme: bearer
433
+ schemas:
434
+ UserBase:
435
+ type: object
436
+ description: Writable fields shared by the request and response schemas.
437
+ properties:
438
+ disabled:
439
+ type: boolean
440
+ description: Set to False to enable a disabled user, or True to maintain disabled
441
+ accessLevel:
442
+ type: string
443
+ description: |-
444
+ Account-level access for the user.
445
+
446
+ **CRITICAL**: This controls account-wide access. Choose your strategy:
447
+
448
+ - Integration-only access: omit `accessLevel` and specify integrations in `integrationAccessLevel`
449
+ - Account-wide monitoring + selective management: set `accessLevel: monitor` and use `integrationAccessLevel`
450
+ to grant `manage` access for specific integrations
451
+ - Full account access: set `accessLevel: manage` or `accessLevel: administrator` and leave
452
+ `integrationAccessLevel` undefined/empty
453
+
454
+ If per-integration level permissions are needed, omit `accessLevel` and instead populate `integrationAccessLevel`.
455
+ x-celigo-ai-guidance:
456
+ - Choose the `accessLevel` value based on what the user should be able to do across the account.
457
+ enum:
458
+ - monitor
459
+ - manage
460
+ - administrator
461
+ x-enumDescriptions:
462
+ monitor: Grants access to view all integrations, run flows, and troubleshoot flow errors (retry/resolve) without modifying integrations, flows, steps, resources, account settings, or users
463
+ manage: Grants access to edit all integrations and resources and troubleshoot flow errors, but not to view or edit account settings or invite/manage users
464
+ administrator: Grants full account administration, including editing account settings, resources, and integrations; inviting/managing users; and troubleshooting flow errors, but does not grant owner-only actions such as transferring account ownership or managing owner permissions
465
+ integrationAccessLevel:
466
+ type: array
467
+ description: |-
468
+ Per-integration access levels for the user.
469
+
470
+ Use this for granting access to specific integrations.
471
+
472
+ - If `accessLevel` is omitted, this creates **integration-only** access.
473
+ - If `accessLevel` is `monitor`, this grants **elevated access** (typically `manage`) for specific integrations.
474
+ - If `accessLevel` is `manage` or `administrator`, do not set `integrationAccessLevel`.
475
+ items:
476
+ type: object
477
+ properties:
478
+ _integrationId:
479
+ type: string
480
+ format: objectId
481
+ x-celigo-refModel: integrations
482
+ examples:
483
+ - 68f52162f00a35a1b26eaafb
484
+ description: Integration ID the user should have access to.
485
+ accessLevel:
486
+ type: string
487
+ description: Access level for this integration.
488
+ enum:
489
+ - monitor
490
+ - manage
491
+ x-enumDescriptions:
492
+ monitor: Read-only access to view the integration and troubleshoot errors.
493
+ manage: Full access to edit the integration and its resources.
494
+ accountSSORequired:
495
+ type: boolean
496
+ description: When true, SSO is required for this user in this account.
497
+ x-celigo-ai-guidance:
498
+ - Whether the invited user must use SSO to access this account.
499
+ accountMFARequired:
500
+ type: boolean
501
+ description: When true, MFA is required for this user in this account.
502
+ x-celigo-ai-guidance:
503
+ - Whether the invited user must use MFA to access this account.
504
+ allowAccessToAPIM:
505
+ type: boolean
506
+ description: When true, the user can access API Management (APIM) features for this account.
507
+ allowToEditRetryData:
508
+ type: boolean
509
+ description: |-
510
+ When true, the user can edit retry data when troubleshooting flow run errors (Error Management).
511
+
512
+ All users with **Monitor** access can view, retry, and resolve errant records. This flag controls whether they
513
+ can also **edit the retry data payload**. If set to false, the user cannot edit retry data for flow runs in any
514
+ integration workspace where they only have **Monitor** access.
515
+
516
+ This setting only applies when:
517
+ - `accessLevel` is `monitor`, or
518
+ - an entry in `integrationAccessLevel` grants `monitor` access for a specific integration.
519
+ allowIntegrationWorkspaceCreation:
520
+ type: boolean
521
+ description: When true, the user can create integration workspaces.
522
+ ResourceResponse:
523
+ type: object
524
+ description: Response
525
+ x-celigo-ai-guidance:
526
+ - Core response fields shared by all Celigo resources
527
+ properties:
528
+ _id:
529
+ type: string
530
+ format: objectId
531
+ readOnly: true
532
+ description: Unique identifier for the resource. Format is a 24-character hexadecimal string.
533
+ x-celigo-ai-guidance:
534
+ - |-
535
+ The _id is used in:
536
+ - API endpoints that operate on a specific resource (e.g., GET, PUT, DELETE)
537
+ - References from other resources (e.g., flows that use this resource)
538
+ - Job history and error tracking
539
+ examples:
540
+ - 5f8d43a1b9e5a80011a35f2c
541
+ createdAt:
542
+ type: string
543
+ format: date-time
544
+ readOnly: true
545
+ description: Timestamp when the resource was created. Set automatically and cannot be modified.
546
+ x-celigo-ai-guidance:
547
+ - Recorded in ISO 8601 with a UTC timezone (Z suffix).
548
+ examples:
549
+ - '2023-04-01T09:15:32Z'
550
+ lastModified:
551
+ type: string
552
+ format: date-time
553
+ readOnly: true
554
+ description: Timestamp when the resource was last updated. Changes whenever any property is modified.
555
+ x-celigo-ai-guidance:
556
+ - Recorded in ISO 8601 with a UTC timezone (Z suffix); always equal to or later than `createdAt`.
557
+ examples:
558
+ - '2023-04-15T14:30:15Z'
559
+ deletedAt:
560
+ type:
561
+ - string
562
+ - 'null'
563
+ format: date-time
564
+ readOnly: true
565
+ description: Timestamp when the resource was soft-deleted. When null or absent, the resource is active.
566
+ x-celigo-ai-guidance:
567
+ - Non-null means the resource is soft-deleted (in the recycle bin) — recoverable within the retention period before permanent removal.
568
+ examples:
569
+ - '2023-05-20T11:45:32Z'
570
+ required:
571
+ - _id
572
+ User:
573
+ type: object
574
+ required:
575
+ - _id
576
+ - sharedWithUser
577
+ - integrationAccessLevel
578
+ - createdAt
579
+ - lastModified
580
+ description: |-
581
+ A user's access record in the account. Each user who has been invited
582
+ (or shared access) gets one record per account they belong to. The
583
+ `_id` is the access-record id, not the user's own id — the user's
584
+ identity is in `sharedWithUser._id`. The account owner does not
585
+ appear in this list.
586
+ x-celigo-ai-guidance:
587
+ - Account user object representing a user's access to the account
588
+ allOf:
589
+ - $ref: '#/components/schemas/UserBase'
590
+ - type: object
591
+ properties:
592
+ _id:
593
+ type: string
594
+ format: objectId
595
+ readOnly: true
596
+ x-celigo-refModel: users
597
+ examples:
598
+ - 6798f4dc43db9184f4bc8ee0
599
+ description: Access-record id for this user in the account.
600
+ accepted:
601
+ type: boolean
602
+ readOnly: true
603
+ description: When true, the user has accepted the invitation to join the account.
604
+ userType:
605
+ type: string
606
+ readOnly: true
607
+ enum:
608
+ - workspace
609
+ description: |-
610
+ Discriminates workspace users from end users on the underlying
611
+ access-record model. This endpoint only returns `workspace`
612
+ records — end users are managed through the End Users API.
613
+ x-enumDescriptions:
614
+ workspace: A workspace (team member) access record.
615
+ lastSignIn:
616
+ type: string
617
+ format: date-time
618
+ readOnly: true
619
+ examples:
620
+ - '2026-05-02T17:02:59.370Z'
621
+ description: When the user last signed in to this account.
622
+ x-celigo-ai-guidance:
623
+ - Last sign-in timestamp for the user (if available).
624
+ dismissed:
625
+ type: boolean
626
+ readOnly: true
627
+ description: When true, the invitation has been declined by the user.
628
+ isProductionAdmin:
629
+ type: boolean
630
+ readOnly: true
631
+ description: When true, the user has production-admin privileges in this account.
632
+ createdVia:
633
+ type: string
634
+ readOnly: true
635
+ description: How this user's access record was created.
636
+ enum:
637
+ - existing_account_invite
638
+ - existing_account_share_request
639
+ - invited_during_signup
640
+ - new_account_auto_join
641
+ x-enumDescriptions:
642
+ existing_account_invite: User was invited to an existing account by an admin.
643
+ existing_account_share_request: User requested access to a shared account.
644
+ invited_during_signup: User was invited as part of a new account signup flow.
645
+ new_account_auto_join: User automatically joined a new account via domain matching.
646
+ ssoSetupPending:
647
+ type: boolean
648
+ readOnly: true
649
+ description: |-
650
+ When true, the user must complete SSO setup for this account
651
+ before their SSO-required access is fully active. Set by the
652
+ server during SSO enrollment; cleared by removing the field, so
653
+ it is never `false`.
654
+ sharedWithUser:
655
+ type: object
656
+ readOnly: true
657
+ description: Identity details of the invited/shared user.
658
+ properties:
659
+ _id:
660
+ type: string
661
+ format: objectId
662
+ x-celigo-refModel: users
663
+ examples:
664
+ - 624774a6a7574d3ed9f9a5cc
665
+ description: The user's own account id.
666
+ email:
667
+ type: string
668
+ format: email
669
+ examples:
670
+ - admin@example.com
671
+ description: Email address of the user.
672
+ name:
673
+ type: string
674
+ examples:
675
+ - Account Admin
676
+ description: Display name of the user.
677
+ lastSignIn:
678
+ type: string
679
+ format: date-time
680
+ examples:
681
+ - '2026-05-02T17:02:59.370Z'
682
+ description: When the user last signed in (across any account).
683
+ allowedToResetMFA:
684
+ type: boolean
685
+ description: When true, the current requester can reset MFA for this user.
686
+ accountSSOLinked:
687
+ type: string
688
+ description: |-
689
+ SSO linkage status for the user in this account.
690
+ `this_account` means SSO is linked to the current account.
691
+ `other_account` means SSO is linked to a different account.
692
+ enum:
693
+ - not_linked
694
+ - this_account
695
+ - other_account
696
+ x-enumDescriptions:
697
+ not_linked: User has no SSO linkage for this account.
698
+ this_account: User's SSO is linked to this account.
699
+ other_account: User's SSO is linked to a different account.
700
+ - $ref: '#/components/schemas/ResourceResponse'
701
+ Error:
702
+ type: object
703
+ description: Standard error response envelope returned by integrator.io APIs.
704
+ properties:
705
+ errors:
706
+ type: array
707
+ description: List of errors that occurred while processing the request.
708
+ items:
709
+ type: object
710
+ properties:
711
+ code:
712
+ oneOf:
713
+ - type: string
714
+ - type: integer
715
+ description: |-
716
+ Machine-readable error code. Usually a string like
717
+ `invalid_ref`, `missing_required_field`, or `unauthorized`;
718
+ may be an **integer** when the error mirrors an upstream HTTP
719
+ status (e.g. `500`) — most commonly returned by connection-ping
720
+ and adaptor-proxy responses.
721
+ message:
722
+ type: string
723
+ description: Human-readable description of the error.
724
+ field:
725
+ type: string
726
+ description: |-
727
+ Optional pointer to the document field that caused the error.
728
+ Used by structural validation errors (`missing_required_field`,
729
+ `invalid_ref`) to indicate which field is at fault
730
+ (e.g. `_id`, `type`, `http.baseURI`).
731
+ source:
732
+ type: string
733
+ description: |-
734
+ Optional origin layer for the error — e.g. `application` when
735
+ the error came from the remote system the adaptor called,
736
+ `connector` when the adaptor itself rejected the request.
737
+ required:
738
+ - message
739
+ required:
740
+ - errors
741
+ Request:
742
+ type: object
743
+ description: Fields that can be sent when inviting or updating an account user.
744
+ allOf:
745
+ - $ref: '#/components/schemas/UserBase'
746
+ InviteRequest:
747
+ description: |-
748
+ Request body for inviting users to the account. Extends the base
749
+ user request with email fields. Access settings apply uniformly
750
+ to all emails in a batch invite.
751
+ allOf:
752
+ - $ref: '#/components/schemas/Request'
753
+ - type: object
754
+ properties:
755
+ email:
756
+ type: string
757
+ format: email
758
+ examples:
759
+ - newuser@example.com
760
+ description: Single email address to invite (use with `POST /v1/invite`).
761
+ emails:
762
+ type: array
763
+ description: Email addresses to invite (use with `POST /v1/invite/multiple`).
764
+ items:
765
+ type: string
766
+ format: email
767
+ examples:
768
+ - user1@example.com
769
+ responses:
770
+ 401-unauthorized:
771
+ description: |-
772
+ Unauthorized. The request lacks a valid bearer token, or the provided token
773
+ failed to authenticate.
774
+
775
+ Note: the 401 response is produced by the auth middleware **before** the
776
+ request reaches the endpoint handler, so it does **not** follow the
777
+ standard `{errors: [...]}` envelope. Instead the body is a bare
778
+ `{message: string}` object with no `code`, no `errors` array. Callers
779
+ handling 401s should key off the HTTP status and the `message` string,
780
+ not try to destructure an `errors[]`.
781
+ content:
782
+ application/json:
783
+ schema:
784
+ type: object
785
+ properties:
786
+ message:
787
+ type: string
788
+ description: |-
789
+ Human-readable description of the auth failure. Known values:
790
+ - `"Unauthorized"` — no `Authorization` header on the request.
791
+ - `"Bearer Authentication Failed"` — header present but token
792
+ is invalid, revoked, or expired.
793
+ required:
794
+ - message
795
+ examples:
796
+ missing_token:
797
+ summary: No Authorization header sent
798
+ value:
799
+ message: Unauthorized
800
+ invalid_token:
801
+ summary: Bearer token invalid or revoked
802
+ value:
803
+ message: Bearer Authentication Failed
804
+ 404-not-found:
805
+ description: |
806
+ Not found. The requested resource does not exist or is not visible to the caller.
807
+ content:
808
+ application/json:
809
+ schema:
810
+ $ref: '#/components/schemas/Error'
811
+ examples:
812
+ default:
813
+ value:
814
+ errors:
815
+ - code: not_found
816
+ message: The requested resource was not found.
817
+ 400-bad-request:
818
+ description: |
819
+ Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
820
+ content:
821
+ application/json:
822
+ schema:
823
+ $ref: '#/components/schemas/Error'
824
+ examples:
825
+ default:
826
+ value:
827
+ errors:
828
+ - code: invalid_request
829
+ message: The request body failed validation.
830
+ x-enable-proxy: true
831
+ x-internal: false