@rippling/rippling-sdk 0.2.0-alpha.62 → 0.2.0-alpha.64

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 (98) hide show
  1. package/client.d.mts +12 -12
  2. package/client.d.mts.map +1 -1
  3. package/client.d.ts +12 -12
  4. package/client.d.ts.map +1 -1
  5. package/client.js +12 -12
  6. package/client.js.map +1 -1
  7. package/client.mjs +12 -12
  8. package/client.mjs.map +1 -1
  9. package/examples/manifest/dental-practice-management/dental-practice-management.ts +6 -5
  10. package/examples/manifest/gym-membership-management/gym-membership-management.ts +6 -5
  11. package/examples/manifest/simple-todo-app/simple-todo-app.ts +3 -1
  12. package/lib/manifest/custom-object-page-layout.d.mts +0 -6
  13. package/lib/manifest/custom-object-page-layout.d.mts.map +1 -1
  14. package/lib/manifest/custom-object-page-layout.d.ts +0 -6
  15. package/lib/manifest/custom-object-page-layout.d.ts.map +1 -1
  16. package/lib/manifest/custom-object-page-layout.js +16 -5
  17. package/lib/manifest/custom-object-page-layout.js.map +1 -1
  18. package/lib/manifest/custom-object-page-layout.mjs +16 -5
  19. package/lib/manifest/custom-object-page-layout.mjs.map +1 -1
  20. package/lib/manifest/index.d.mts +2 -2
  21. package/lib/manifest/index.d.mts.map +1 -1
  22. package/lib/manifest/index.d.ts +2 -2
  23. package/lib/manifest/index.d.ts.map +1 -1
  24. package/lib/manifest/index.js.map +1 -1
  25. package/lib/manifest/index.mjs.map +1 -1
  26. package/lib/manifest/manifest-function.d.mts +4 -7
  27. package/lib/manifest/manifest-function.d.mts.map +1 -1
  28. package/lib/manifest/manifest-function.d.ts +4 -7
  29. package/lib/manifest/manifest-function.d.ts.map +1 -1
  30. package/lib/manifest/manifest-function.js +7 -11
  31. package/lib/manifest/manifest-function.js.map +1 -1
  32. package/lib/manifest/manifest-function.mjs +7 -10
  33. package/lib/manifest/manifest-function.mjs.map +1 -1
  34. package/package.json +1 -1
  35. package/resources/app-users.d.mts +186 -0
  36. package/resources/app-users.d.mts.map +1 -0
  37. package/resources/app-users.d.ts +186 -0
  38. package/resources/app-users.d.ts.map +1 -0
  39. package/resources/app-users.js +32 -0
  40. package/resources/app-users.js.map +1 -0
  41. package/resources/app-users.mjs +28 -0
  42. package/resources/app-users.mjs.map +1 -0
  43. package/resources/devices.d.mts +272 -0
  44. package/resources/devices.d.mts.map +1 -0
  45. package/resources/devices.d.ts +272 -0
  46. package/resources/devices.d.ts.map +1 -0
  47. package/resources/devices.js +32 -0
  48. package/resources/devices.js.map +1 -0
  49. package/resources/devices.mjs +28 -0
  50. package/resources/devices.mjs.map +1 -0
  51. package/resources/functions/deployments.d.mts +8 -0
  52. package/resources/functions/deployments.d.mts.map +1 -1
  53. package/resources/functions/deployments.d.ts +8 -0
  54. package/resources/functions/deployments.d.ts.map +1 -1
  55. package/resources/index.d.mts +2 -2
  56. package/resources/index.d.mts.map +1 -1
  57. package/resources/index.d.ts +2 -2
  58. package/resources/index.d.ts.map +1 -1
  59. package/resources/index.js +6 -6
  60. package/resources/index.js.map +1 -1
  61. package/resources/index.mjs +2 -2
  62. package/resources/index.mjs.map +1 -1
  63. package/resources/workers.d.mts +13 -0
  64. package/resources/workers.d.mts.map +1 -1
  65. package/resources/workers.d.ts +13 -0
  66. package/resources/workers.d.ts.map +1 -1
  67. package/src/client.ts +44 -38
  68. package/src/lib/manifest/custom-object-page-layout.ts +14 -9
  69. package/src/lib/manifest/index.ts +0 -3
  70. package/src/lib/manifest/manifest-function.ts +8 -18
  71. package/src/resources/app-users.ts +270 -0
  72. package/src/resources/devices.ts +496 -0
  73. package/src/resources/functions/deployments.ts +10 -0
  74. package/src/resources/index.ts +16 -13
  75. package/src/resources/workers.ts +15 -0
  76. package/src/version.ts +1 -1
  77. package/version.d.mts +1 -1
  78. package/version.d.ts +1 -1
  79. package/version.js +1 -1
  80. package/version.mjs +1 -1
  81. package/resources/worker-change-fields.d.mts +0 -45
  82. package/resources/worker-change-fields.d.mts.map +0 -1
  83. package/resources/worker-change-fields.d.ts +0 -45
  84. package/resources/worker-change-fields.d.ts.map +0 -1
  85. package/resources/worker-change-fields.js +0 -21
  86. package/resources/worker-change-fields.js.map +0 -1
  87. package/resources/worker-change-fields.mjs +0 -17
  88. package/resources/worker-change-fields.mjs.map +0 -1
  89. package/resources/worker-changes.d.mts +0 -267
  90. package/resources/worker-changes.d.mts.map +0 -1
  91. package/resources/worker-changes.d.ts +0 -267
  92. package/resources/worker-changes.d.ts.map +0 -1
  93. package/resources/worker-changes.js +0 -36
  94. package/resources/worker-changes.js.map +0 -1
  95. package/resources/worker-changes.mjs +0 -32
  96. package/resources/worker-changes.mjs.map +0 -1
  97. package/src/resources/worker-change-fields.ts +0 -64
  98. package/src/resources/worker-changes.ts +0 -354
@@ -108,8 +108,6 @@ interface SerializedHeaderEdits
108
108
 
109
109
  export type SectionFieldsLayout = 'one_column' | 'two_column' | 'three_column' | 'responsive';
110
110
  export type TabLayout = 'vertical' | 'horizontal';
111
- export type SectionMovementOption = 'static' | 'tab' | 'free';
112
- export type FieldMovementOption = 'tab' | 'free';
113
111
  export type CustomObjectCustomSectionComponentKey = 'attachments' | 'comments';
114
112
 
115
113
  /** Default value wrapper used by `SectionField.defaultValue`. */
@@ -131,8 +129,6 @@ export interface SectionFieldOptions {
131
129
  height?: number;
132
130
  /** Whether the layout manager can remove this field. Optional. */
133
131
  canBeDeleted?: boolean;
134
- /** Controls how the field can be moved in the UI. Optional. */
135
- movementOption?: FieldMovementOption;
136
132
  }
137
133
 
138
134
  /** A typed field entry inside a `fields_section`. */
@@ -153,8 +149,6 @@ export interface PageLayoutSectionOptions {
153
149
  canBeDeleted?: boolean;
154
150
  /** Whether the layout manager can rename this section. Optional. */
155
151
  canBeRenamed?: boolean;
156
- /** Controls how the section can be moved. Optional. */
157
- movementOption?: SectionMovementOption;
158
152
  /** Hide the section title. Optional. */
159
153
  hideName?: boolean;
160
154
  }
@@ -755,7 +749,6 @@ function toSerializedSectionField(
755
749
  if (options.defaultValue != null) normalized.defaultValue = options.defaultValue;
756
750
  if (options.height != null) normalized.height = options.height;
757
751
  if (options.canBeDeleted != null) normalized.canBeDeleted = options.canBeDeleted;
758
- if (options.movementOption != null) normalized.movementOption = options.movementOption;
759
752
  return normalized;
760
753
  }
761
754
 
@@ -765,7 +758,6 @@ function copySectionOptions<T extends PageLayoutSectionOptions>(
765
758
  ): T {
766
759
  if (input.canBeDeleted != null) target.canBeDeleted = input.canBeDeleted;
767
760
  if (input.canBeRenamed != null) target.canBeRenamed = input.canBeRenamed;
768
- if (input.movementOption != null) target.movementOption = input.movementOption;
769
761
  if (input.hideName != null) target.hideName = input.hideName;
770
762
  return target;
771
763
  }
@@ -892,6 +884,17 @@ function cloneJson<T>(value: T): T {
892
884
  return JSON.parse(JSON.stringify(value)) as T;
893
885
  }
894
886
 
887
+ function stripMovementOptions(value: unknown): void {
888
+ if (Array.isArray(value)) {
889
+ for (const item of value) stripMovementOptions(item);
890
+ return;
891
+ }
892
+ if (value == null || typeof value !== 'object') return;
893
+ const record = value as Record<string, unknown>;
894
+ delete record['movementOption'];
895
+ for (const item of Object.values(record)) stripMovementOptions(item);
896
+ }
897
+
895
898
  const HEADER_EDIT_KEYS = new Set([
896
899
  'newTitleField',
897
900
  'titleFieldDeleted',
@@ -2275,6 +2278,8 @@ export class CustomObjectPageLayout {
2275
2278
  * @returns A plain object with `type: 'CUSTOM_OBJECT_PAGE_LAYOUT'`.
2276
2279
  */
2277
2280
  toDict(): Record<string, any> {
2281
+ const tabEdits = cloneJson(this._tabEdits);
2282
+ stripMovementOptions(tabEdits);
2278
2283
  const d: Record<string, any> = {
2279
2284
  type: CustomObjectPageLayout.componentType,
2280
2285
  layout_id: this._layoutId,
@@ -2283,7 +2288,7 @@ export class CustomObjectPageLayout {
2283
2288
  name: this._name,
2284
2289
  // Packaged layouts are never system-created (backend invariant).
2285
2290
  system_created: false,
2286
- tab_edits: this._tabEdits,
2291
+ tab_edits: tabEdits,
2287
2292
  header_edits: this._headerEdits,
2288
2293
  visibility_conditions: this._visibilityConditions,
2289
2294
  blueprint_key: this._blueprintKey ?? this._customObjectApiName,
@@ -52,7 +52,6 @@ export {
52
52
  type CustomObjectPageLayoutProps,
53
53
  type CustomSection,
54
54
  type CustomTab,
55
- type FieldMovementOption,
56
55
  type FieldRqlName,
57
56
  type FieldsSection,
58
57
  type HeaderEdits,
@@ -86,7 +85,6 @@ export {
86
85
  type SectionFieldRef,
87
86
  type SectionFieldsLayout,
88
87
  type SectionKey,
89
- type SectionMovementOption,
90
88
  type SystemHeaderFieldEdit,
91
89
  type SystemSectionEdit,
92
90
  type SystemTabEdit,
@@ -176,7 +174,6 @@ export {
176
174
  export {
177
175
  ManifestFunction,
178
176
  ManifestFunction as Function,
179
- type FunctionCodeFile,
180
177
  type ManifestFunctionProps,
181
178
  } from './manifest-function';
182
179
 
@@ -1,11 +1,7 @@
1
- import * as fs from 'node:fs';
2
-
3
1
  import { getExistingManifestContext, type ExistingManifestContextOptions } from './existing-manifest-context';
4
2
  import type { ManifestComponentDeletion, ManifestScope } from './manifest-builder';
5
3
  import { optionalStringComponentField, requireStringComponentField } from './_existing-component-fields';
6
4
 
7
- export type FunctionCodeFile = `./${string}.ts` | `/${string}.ts`;
8
-
9
5
  /**
10
6
  * Initialization properties for {@link ManifestFunction}.
11
7
  */
@@ -23,12 +19,11 @@ export interface ManifestFunctionProps {
23
19
  */
24
20
  name: string;
25
21
  /**
26
- * Path to a TypeScript handler source file. The file must export an
27
- * `onRipplingEvent` function. Its contents are serialized to `code_draft`.
22
+ * TypeScript handler source code. Must export an `onRipplingEvent` function.
28
23
  *
29
24
  * Optional. @default `''`
30
25
  */
31
- codeFile?: FunctionCodeFile;
26
+ code?: string;
32
27
  /**
33
28
  * Human-readable description of what this function does.
34
29
  *
@@ -85,7 +80,7 @@ export interface ManifestFunctionProps {
85
80
  * apiName: 'gym_today_schedule_fn',
86
81
  * name: 'Today\'s schedule (SDUI)',
87
82
  * description: 'Searchable grid of class sessions',
88
- * codeFile: './functions/gym_today_schedule_fn/code.ts',
83
+ * code: handlerSource,
89
84
  * dependencies: {
90
85
  * '@rippling/rippling-sdk': '^0.2.0-alpha.33',
91
86
  * },
@@ -107,8 +102,7 @@ export class ManifestFunction {
107
102
 
108
103
  private readonly _apiName: string;
109
104
  private readonly _name: string;
110
- private readonly _codeFile: FunctionCodeFile | undefined;
111
- private _codeDraft: string | undefined;
105
+ private readonly _code: string;
112
106
  private readonly _description: string;
113
107
  private readonly _dependencies: Record<string, string> | undefined;
114
108
  private readonly _deploymentOptions: Record<string, any> | undefined;
@@ -122,7 +116,7 @@ export class ManifestFunction {
122
116
  constructor(scope: ManifestScope, props: ManifestFunctionProps) {
123
117
  this._apiName = props.apiName;
124
118
  this._name = props.name;
125
- this._codeFile = props.codeFile;
119
+ this._code = props.code ?? '';
126
120
  this._description = props.description;
127
121
  this._dependencies = props.dependencies;
128
122
  this._deploymentOptions = props.deploymentOptions;
@@ -145,16 +139,14 @@ export class ManifestFunction {
145
139
  name: requireStringComponentField(component, 'name', ManifestFunction.componentType),
146
140
  description: optionalStringComponentField(component, 'description'),
147
141
  };
148
- const codeDraft = optionalStringComponentField(component, 'code_draft');
142
+ if (component['code_draft'] !== undefined) props.code = component['code_draft'];
149
143
  if (component['dependencies'] !== undefined) props.dependencies = component['dependencies'];
150
144
  if (component['deployment_options'] !== undefined) {
151
145
  props.deploymentOptions = component['deployment_options'];
152
146
  }
153
147
  if (component['allowed_domains'] !== undefined) props.allowedDomains = component['allowed_domains'];
154
148
  if (component['is_async'] !== undefined) props.isAsync = component['is_async'];
155
- const manifestFunction = new ManifestFunction(scope, props);
156
- manifestFunction._codeDraft = codeDraft;
157
- return manifestFunction;
149
+ return new ManifestFunction(scope, props);
158
150
  }
159
151
 
160
152
  /**
@@ -176,9 +168,7 @@ export class ManifestFunction {
176
168
  api_name: this._apiName,
177
169
  description: this._description,
178
170
  };
179
- const codeDraft =
180
- this._codeDraft ?? (this._codeFile ? fs.readFileSync(this._codeFile, 'utf-8') : undefined);
181
- if (codeDraft) component['code_draft'] = codeDraft;
171
+ if (this._code) component['code_draft'] = this._code;
182
172
  if (this._dependencies != null) component['dependencies'] = this._dependencies;
183
173
  if (this._deploymentOptions != null) component['deployment_options'] = this._deploymentOptions;
184
174
  if (this._allowedDomains != null) component['allowed_domains'] = this._allowedDomains;
@@ -0,0 +1,270 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import * as BusinessPartnersAPI from './business-partners';
5
+ import * as WorkersAPI from './workers';
6
+ import { APIPromise } from '../core/api-promise';
7
+ import { PageCursorURL, PagePromise } from '../core/pagination';
8
+ import { RequestOptions } from '../internal/request-options';
9
+ import { path } from '../internal/utils/path';
10
+
11
+ /**
12
+ * Mappings between Rippling workers and their user accounts in third-party apps
13
+ */
14
+ export class AppUsers extends APIResource {
15
+ /**
16
+ * A list of app users.
17
+ *
18
+ * - Requires: `API Tier 1`
19
+ * - Filterable fields: `worker_id`, `spoke_user_identifier`, `app_handle`,
20
+ * `created_at`, `updated_at`
21
+ * - Expandable fields: `worker`
22
+ * - Sortable fields: `id`, `created_at`, `updated_at`
23
+ */
24
+ list(
25
+ query: AppUserListParams | null | undefined = {},
26
+ options?: RequestOptions,
27
+ ): PagePromise<AppUserListResponsesPageCursorURL, AppUserListResponse> {
28
+ return this._client.getAPIList('/app-users/', PageCursorURL<AppUserListResponse>, { query, ...options });
29
+ }
30
+
31
+ /**
32
+ * Retrieve a specific app user
33
+ */
34
+ retrieve(
35
+ id: string,
36
+ query: AppUserRetrieveParams | null | undefined = {},
37
+ options?: RequestOptions,
38
+ ): APIPromise<AppUserRetrieveResponse> {
39
+ return this._client.get(path`/app-users/${id}/`, { query, ...options });
40
+ }
41
+ }
42
+
43
+ export type AppUserListResponsesPageCursorURL = PageCursorURL<AppUserListResponse>;
44
+
45
+ /**
46
+ * Maps a Rippling worker (if any) to their user account in a third-party
47
+ * app (e.g. Slack, Jira, GitHub). Sourced from SpokeUser records.
48
+ *
49
+ * Includes orphan accounts — third-party app accounts with no matching
50
+ * Rippling worker (`worker_id=None`, `match_state=NOT_MATCHED`). These are
51
+ * the primary signal for IT-admin triage. Uses `BaseResourceDTO` rather
52
+ * than `BaseEmployeeResourceDTO` so the platform's role-based auto-filter
53
+ * does not silently drop orphans for non-admin tokens. Company scoping is
54
+ * enforced explicitly in `AppUsersAPIViewSet.get_queryset`; the `app-users.read`
55
+ * scope is the access gate.
56
+ *
57
+ * Resource name aligns with how the product surfaces these in the UI
58
+ * ("Slack account", "GitHub account") and matches the equivalent concept
59
+ * in Okta's IAM API (AppUser).
60
+ *
61
+ * Designed for point lookups: list endpoint requires at least one filter
62
+ * on `worker_id` or `spoke_user_identifier` to prevent bulk enumeration of the
63
+ * org's identity graph across connected apps.
64
+ *
65
+ * `spoke_user_identifier` reads `SpokeUser.spokeId` — the user identifier
66
+ * stored for the third-party account. Depending on the integration, this may
67
+ * be an email, username, account handle, or app-specific user id.
68
+ */
69
+ export interface AppUserListResponse {
70
+ /**
71
+ * Identifier field
72
+ */
73
+ id: string;
74
+
75
+ /**
76
+ * Record creation date
77
+ */
78
+ created_at: string;
79
+
80
+ /**
81
+ * Record update date
82
+ */
83
+ updated_at: string;
84
+
85
+ /**
86
+ * Human-readable display name for the third-party app (e.g. 'Slack', 'GitHub').
87
+ * Sourced from the customer-configured SpokeOwner.app_display_name; falls back to
88
+ * a title-cased app handle when the customer hasn't set one.
89
+ */
90
+ app_display_name?: string;
91
+
92
+ /**
93
+ * Machine-readable identifier for the third-party app (e.g. 'slack', 'jira',
94
+ * 'asana'). Stable across the App Shop catalog.
95
+ */
96
+ app_handle?: string;
97
+
98
+ /**
99
+ * The user's email address in the third-party app, if known. Null when the app
100
+ * does not expose an email or Rippling did not capture one.
101
+ */
102
+ external_email?: string;
103
+
104
+ /**
105
+ * The user's display name in the third-party app, if known. Null when the app does
106
+ * not surface a separate username.
107
+ */
108
+ external_username?: string;
109
+
110
+ /**
111
+ * Whether this third-party account has been matched to a Rippling worker.
112
+ */
113
+ match_state?: 'MATCHED' | 'NOT_MATCHED' | 'IGNORED';
114
+
115
+ /**
116
+ * Provisioning lifecycle state of this account in the third-party app.
117
+ */
118
+ push_state?:
119
+ | 'INIT'
120
+ | 'EMPLOYEE_CONFIRMATION_PENDING'
121
+ | 'EMPLOYEE_CONFIRMATION_ACCEPTED'
122
+ | 'EMPLOYEE_CONFIRMATION_REJECTED'
123
+ | 'INVITE_PENDING'
124
+ | 'INVITE_CONFIRMED'
125
+ | 'INVITE_FAILED'
126
+ | 'CREATE_PENDING'
127
+ | 'CREATE_CONFIRMED'
128
+ | 'CREATE_FAILED'
129
+ | 'DELETE_PENDING'
130
+ | 'DELETE_CONFIRMED'
131
+ | 'DELETE_FAILED'
132
+ | 'SUSPEND_PENDING'
133
+ | 'SUSPEND_CONFIRMED'
134
+ | 'SUSPEND_FAILED';
135
+
136
+ /**
137
+ * Identifier for the user's account in the third-party app workspace. Depending on
138
+ * the integration, this may be an email, username, account handle, or app-specific
139
+ * user id.
140
+ */
141
+ spoke_user_identifier?: string;
142
+
143
+ /**
144
+ * The Rippling worker associated with this external app account. Expanding this
145
+ * field requires both `app-users.read` and `workers.read` scopes.
146
+ *
147
+ * Expandable field
148
+ */
149
+ worker?: WorkersAPI.Worker;
150
+
151
+ /**
152
+ * ID of the Rippling worker associated with this external app account.
153
+ */
154
+ worker_id?: string;
155
+ }
156
+
157
+ /**
158
+ * Meta information for the response.
159
+ */
160
+ export interface AppUserRetrieveResponse extends BusinessPartnersAPI.Meta {
161
+ /**
162
+ * Identifier field
163
+ */
164
+ id: string;
165
+
166
+ /**
167
+ * Record creation date
168
+ */
169
+ created_at: string;
170
+
171
+ /**
172
+ * Record update date
173
+ */
174
+ updated_at: string;
175
+
176
+ /**
177
+ * Human-readable display name for the third-party app (e.g. 'Slack', 'GitHub').
178
+ * Sourced from the customer-configured SpokeOwner.app_display_name; falls back to
179
+ * a title-cased app handle when the customer hasn't set one.
180
+ */
181
+ app_display_name?: string;
182
+
183
+ /**
184
+ * Machine-readable identifier for the third-party app (e.g. 'slack', 'jira',
185
+ * 'asana'). Stable across the App Shop catalog.
186
+ */
187
+ app_handle?: string;
188
+
189
+ /**
190
+ * The user's email address in the third-party app, if known. Null when the app
191
+ * does not expose an email or Rippling did not capture one.
192
+ */
193
+ external_email?: string;
194
+
195
+ /**
196
+ * The user's display name in the third-party app, if known. Null when the app does
197
+ * not surface a separate username.
198
+ */
199
+ external_username?: string;
200
+
201
+ /**
202
+ * Whether this third-party account has been matched to a Rippling worker.
203
+ */
204
+ match_state?: 'MATCHED' | 'NOT_MATCHED' | 'IGNORED';
205
+
206
+ /**
207
+ * Provisioning lifecycle state of this account in the third-party app.
208
+ */
209
+ push_state?:
210
+ | 'INIT'
211
+ | 'EMPLOYEE_CONFIRMATION_PENDING'
212
+ | 'EMPLOYEE_CONFIRMATION_ACCEPTED'
213
+ | 'EMPLOYEE_CONFIRMATION_REJECTED'
214
+ | 'INVITE_PENDING'
215
+ | 'INVITE_CONFIRMED'
216
+ | 'INVITE_FAILED'
217
+ | 'CREATE_PENDING'
218
+ | 'CREATE_CONFIRMED'
219
+ | 'CREATE_FAILED'
220
+ | 'DELETE_PENDING'
221
+ | 'DELETE_CONFIRMED'
222
+ | 'DELETE_FAILED'
223
+ | 'SUSPEND_PENDING'
224
+ | 'SUSPEND_CONFIRMED'
225
+ | 'SUSPEND_FAILED';
226
+
227
+ /**
228
+ * Identifier for the user's account in the third-party app workspace. Depending on
229
+ * the integration, this may be an email, username, account handle, or app-specific
230
+ * user id.
231
+ */
232
+ spoke_user_identifier?: string;
233
+
234
+ /**
235
+ * The Rippling worker associated with this external app account. Expanding this
236
+ * field requires both `app-users.read` and `workers.read` scopes.
237
+ *
238
+ * Expandable field
239
+ */
240
+ worker?: WorkersAPI.Worker;
241
+
242
+ /**
243
+ * ID of the Rippling worker associated with this external app account.
244
+ */
245
+ worker_id?: string;
246
+ }
247
+
248
+ export interface AppUserListParams {
249
+ cursor?: string;
250
+
251
+ expand?: string;
252
+
253
+ filter?: string;
254
+
255
+ order_by?: string;
256
+ }
257
+
258
+ export interface AppUserRetrieveParams {
259
+ expand?: string;
260
+ }
261
+
262
+ export declare namespace AppUsers {
263
+ export {
264
+ type AppUserListResponse as AppUserListResponse,
265
+ type AppUserRetrieveResponse as AppUserRetrieveResponse,
266
+ type AppUserListResponsesPageCursorURL as AppUserListResponsesPageCursorURL,
267
+ type AppUserListParams as AppUserListParams,
268
+ type AppUserRetrieveParams as AppUserRetrieveParams,
269
+ };
270
+ }