@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.
- package/client.d.mts +12 -12
- package/client.d.mts.map +1 -1
- package/client.d.ts +12 -12
- package/client.d.ts.map +1 -1
- package/client.js +12 -12
- package/client.js.map +1 -1
- package/client.mjs +12 -12
- package/client.mjs.map +1 -1
- package/examples/manifest/dental-practice-management/dental-practice-management.ts +6 -5
- package/examples/manifest/gym-membership-management/gym-membership-management.ts +6 -5
- package/examples/manifest/simple-todo-app/simple-todo-app.ts +3 -1
- package/lib/manifest/custom-object-page-layout.d.mts +0 -6
- package/lib/manifest/custom-object-page-layout.d.mts.map +1 -1
- package/lib/manifest/custom-object-page-layout.d.ts +0 -6
- package/lib/manifest/custom-object-page-layout.d.ts.map +1 -1
- package/lib/manifest/custom-object-page-layout.js +16 -5
- package/lib/manifest/custom-object-page-layout.js.map +1 -1
- package/lib/manifest/custom-object-page-layout.mjs +16 -5
- package/lib/manifest/custom-object-page-layout.mjs.map +1 -1
- package/lib/manifest/index.d.mts +2 -2
- package/lib/manifest/index.d.mts.map +1 -1
- package/lib/manifest/index.d.ts +2 -2
- package/lib/manifest/index.d.ts.map +1 -1
- package/lib/manifest/index.js.map +1 -1
- package/lib/manifest/index.mjs.map +1 -1
- package/lib/manifest/manifest-function.d.mts +4 -7
- package/lib/manifest/manifest-function.d.mts.map +1 -1
- package/lib/manifest/manifest-function.d.ts +4 -7
- package/lib/manifest/manifest-function.d.ts.map +1 -1
- package/lib/manifest/manifest-function.js +7 -11
- package/lib/manifest/manifest-function.js.map +1 -1
- package/lib/manifest/manifest-function.mjs +7 -10
- package/lib/manifest/manifest-function.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/app-users.d.mts +186 -0
- package/resources/app-users.d.mts.map +1 -0
- package/resources/app-users.d.ts +186 -0
- package/resources/app-users.d.ts.map +1 -0
- package/resources/app-users.js +32 -0
- package/resources/app-users.js.map +1 -0
- package/resources/app-users.mjs +28 -0
- package/resources/app-users.mjs.map +1 -0
- package/resources/devices.d.mts +272 -0
- package/resources/devices.d.mts.map +1 -0
- package/resources/devices.d.ts +272 -0
- package/resources/devices.d.ts.map +1 -0
- package/resources/devices.js +32 -0
- package/resources/devices.js.map +1 -0
- package/resources/devices.mjs +28 -0
- package/resources/devices.mjs.map +1 -0
- package/resources/functions/deployments.d.mts +8 -0
- package/resources/functions/deployments.d.mts.map +1 -1
- package/resources/functions/deployments.d.ts +8 -0
- package/resources/functions/deployments.d.ts.map +1 -1
- package/resources/index.d.mts +2 -2
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +2 -2
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +6 -6
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +2 -2
- package/resources/index.mjs.map +1 -1
- package/resources/workers.d.mts +13 -0
- package/resources/workers.d.mts.map +1 -1
- package/resources/workers.d.ts +13 -0
- package/resources/workers.d.ts.map +1 -1
- package/src/client.ts +44 -38
- package/src/lib/manifest/custom-object-page-layout.ts +14 -9
- package/src/lib/manifest/index.ts +0 -3
- package/src/lib/manifest/manifest-function.ts +8 -18
- package/src/resources/app-users.ts +270 -0
- package/src/resources/devices.ts +496 -0
- package/src/resources/functions/deployments.ts +10 -0
- package/src/resources/index.ts +16 -13
- package/src/resources/workers.ts +15 -0
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
- package/resources/worker-change-fields.d.mts +0 -45
- package/resources/worker-change-fields.d.mts.map +0 -1
- package/resources/worker-change-fields.d.ts +0 -45
- package/resources/worker-change-fields.d.ts.map +0 -1
- package/resources/worker-change-fields.js +0 -21
- package/resources/worker-change-fields.js.map +0 -1
- package/resources/worker-change-fields.mjs +0 -17
- package/resources/worker-change-fields.mjs.map +0 -1
- package/resources/worker-changes.d.mts +0 -267
- package/resources/worker-changes.d.mts.map +0 -1
- package/resources/worker-changes.d.ts +0 -267
- package/resources/worker-changes.d.ts.map +0 -1
- package/resources/worker-changes.js +0 -36
- package/resources/worker-changes.js.map +0 -1
- package/resources/worker-changes.mjs +0 -32
- package/resources/worker-changes.mjs.map +0 -1
- package/src/resources/worker-change-fields.ts +0 -64
- 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:
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
}
|