Skip to content

Commit c0427ac

Browse files
thomasballingerConvex, Inc.
authored andcommitted
WorkOS Provisioning (#41103)
GitOrigin-RevId: e379f55c21a8772ea579631bf930b715a5dca409
1 parent d82d125 commit c0427ac

File tree

6 files changed

+248
-2
lines changed

6 files changed

+248
-2
lines changed

crates/http_client/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ pub enum ClientPurpose {
6262
ProviderMetadata,
6363
Jwks,
6464
UserInfo,
65+
WorkOSProvisioning,
6566
}
6667

6768
pub fn cached_http_client_for(

npm-packages/convex/management-openapi.json

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,90 @@
5757
}
5858
}
5959
}
60+
},
61+
"/workos/provision_associated_workos_team": {
62+
"post": {
63+
"description": "Provision a WorkOS team for a Convex team",
64+
"operationId": "provision_associated_workos_team",
65+
"requestBody": {
66+
"content": {
67+
"application/json": {
68+
"schema": {
69+
"$ref": "#/components/schemas/ProvisionWorkOSTeamRequest"
70+
}
71+
}
72+
},
73+
"required": true
74+
},
75+
"responses": {}
76+
}
77+
},
78+
"/workos/get_or_provision_workos_environment": {
79+
"post": {
80+
"description": "Get or provision a WorkOS environment for a deployment",
81+
"operationId": "get_or_provision_workos_environment",
82+
"requestBody": {
83+
"content": {
84+
"application/json": {
85+
"schema": {
86+
"$ref": "#/components/schemas/GetOrProvisionEnvironmentRequest"
87+
}
88+
}
89+
},
90+
"required": true
91+
},
92+
"responses": {}
93+
}
94+
},
95+
"/workos/has_associated_workos_team": {
96+
"post": {
97+
"description": "Check if a deployment has an associated WorkOS team",
98+
"operationId": "has_associated_workos_team",
99+
"requestBody": {
100+
"content": {
101+
"application/json": {
102+
"schema": {
103+
"$ref": "#/components/schemas/HasAssociatedWorkOSTeamRequest"
104+
}
105+
}
106+
},
107+
"required": true
108+
},
109+
"responses": {}
110+
}
111+
},
112+
"/workos/available_workos_team_emails": {
113+
"get": {
114+
"description": "Get candidate email addresses to be WorkOS admins.",
115+
"operationId": "get_available_workos_team_emails",
116+
"responses": {}
117+
}
60118
}
61119
},
62120
"components": {
63121
"schemas": {
122+
"GetOrProvisionEnvironmentRequest": {
123+
"type": "object",
124+
"required": [
125+
"deploymentName"
126+
],
127+
"properties": {
128+
"deploymentName": {
129+
"type": "string"
130+
}
131+
}
132+
},
133+
"HasAssociatedWorkOSTeamRequest": {
134+
"type": "object",
135+
"required": [
136+
"deploymentName"
137+
],
138+
"properties": {
139+
"deploymentName": {
140+
"type": "string"
141+
}
142+
}
143+
},
64144
"MemberId": {
65145
"type": "integer",
66146
"format": "int64",
@@ -121,6 +201,23 @@
121201
"ProjectSlug": {
122202
"type": "string"
123203
},
204+
"ProvisionWorkOSTeamRequest": {
205+
"type": "object",
206+
"required": [
207+
"teamId",
208+
"email"
209+
],
210+
"properties": {
211+
"email": {
212+
"type": "string",
213+
"description": "Email address to use for the WorkOS team admin,\nmust be a verified email address associated with the user's account"
214+
},
215+
"teamId": {
216+
"$ref": "#/components/schemas/TeamId",
217+
"description": "Convex team ID, no WorkOS team exists at this point"
218+
}
219+
}
220+
},
124221
"ReferralCode": {
125222
"type": "string"
126223
},

npm-packages/convex/src/cli/generatedApi.ts

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,84 @@ export interface paths {
3636
patch?: never;
3737
trace?: never;
3838
};
39+
"/workos/provision_associated_workos_team": {
40+
parameters: {
41+
query?: never;
42+
header?: never;
43+
path?: never;
44+
cookie?: never;
45+
};
46+
get?: never;
47+
put?: never;
48+
/** @description Provision a WorkOS team for a Convex team */
49+
post: operations["provision_associated_workos_team"];
50+
delete?: never;
51+
options?: never;
52+
head?: never;
53+
patch?: never;
54+
trace?: never;
55+
};
56+
"/workos/get_or_provision_workos_environment": {
57+
parameters: {
58+
query?: never;
59+
header?: never;
60+
path?: never;
61+
cookie?: never;
62+
};
63+
get?: never;
64+
put?: never;
65+
/** @description Get or provision a WorkOS environment for a deployment */
66+
post: operations["get_or_provision_workos_environment"];
67+
delete?: never;
68+
options?: never;
69+
head?: never;
70+
patch?: never;
71+
trace?: never;
72+
};
73+
"/workos/has_associated_workos_team": {
74+
parameters: {
75+
query?: never;
76+
header?: never;
77+
path?: never;
78+
cookie?: never;
79+
};
80+
get?: never;
81+
put?: never;
82+
/** @description Check if a deployment has an associated WorkOS team */
83+
post: operations["has_associated_workos_team"];
84+
delete?: never;
85+
options?: never;
86+
head?: never;
87+
patch?: never;
88+
trace?: never;
89+
};
90+
"/workos/available_workos_team_emails": {
91+
parameters: {
92+
query?: never;
93+
header?: never;
94+
path?: never;
95+
cookie?: never;
96+
};
97+
/** @description Get candidate email addresses to be WorkOS admins. */
98+
get: operations["get_available_workos_team_emails"];
99+
put?: never;
100+
post?: never;
101+
delete?: never;
102+
options?: never;
103+
head?: never;
104+
patch?: never;
105+
trace?: never;
106+
};
39107
}
40108
export type webhooks = Record<string, never>;
41109
export interface components {
42110
schemas: {
111+
GetOrProvisionEnvironmentRequest: {
112+
deploymentName: string;
113+
};
114+
HasAssociatedWorkOSTeamRequest: {
115+
deploymentName: string;
116+
};
43117
/** Format: int64 */
44118
MemberId: number;
45119
ProjectDetails: {
@@ -57,6 +131,13 @@ export interface components {
57131
ProjectId: number;
58132
ProjectName: string;
59133
ProjectSlug: string;
134+
ProvisionWorkOSTeamRequest: {
135+
/** @description Email address to use for the WorkOS team admin,
136+
* must be a verified email address associated with the user's account */
137+
email: string;
138+
/** @description Convex team ID, no WorkOS team exists at this point */
139+
teamId: components["schemas"]["TeamId"];
140+
};
60141
ReferralCode: string;
61142
Team: {
62143
creator?: null | components["schemas"]["MemberId"];
@@ -79,11 +160,14 @@ export interface components {
79160
headers: never;
80161
pathItems: never;
81162
}
163+
export type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];
164+
export type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];
82165
export type MemberId = components['schemas']['MemberId'];
83166
export type ProjectDetails = components['schemas']['ProjectDetails'];
84167
export type ProjectId = components['schemas']['ProjectId'];
85168
export type ProjectName = components['schemas']['ProjectName'];
86169
export type ProjectSlug = components['schemas']['ProjectSlug'];
170+
export type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];
87171
export type ReferralCode = components['schemas']['ReferralCode'];
88172
export type Team = components['schemas']['Team'];
89173
export type TeamId = components['schemas']['TeamId'];
@@ -132,4 +216,56 @@ export interface operations {
132216
};
133217
};
134218
};
219+
provision_associated_workos_team: {
220+
parameters: {
221+
query?: never;
222+
header?: never;
223+
path?: never;
224+
cookie?: never;
225+
};
226+
requestBody: {
227+
content: {
228+
"application/json": components["schemas"]["ProvisionWorkOSTeamRequest"];
229+
};
230+
};
231+
responses: never;
232+
};
233+
get_or_provision_workos_environment: {
234+
parameters: {
235+
query?: never;
236+
header?: never;
237+
path?: never;
238+
cookie?: never;
239+
};
240+
requestBody: {
241+
content: {
242+
"application/json": components["schemas"]["GetOrProvisionEnvironmentRequest"];
243+
};
244+
};
245+
responses: never;
246+
};
247+
has_associated_workos_team: {
248+
parameters: {
249+
query?: never;
250+
header?: never;
251+
path?: never;
252+
cookie?: never;
253+
};
254+
requestBody: {
255+
content: {
256+
"application/json": components["schemas"]["HasAssociatedWorkOSTeamRequest"];
257+
};
258+
};
259+
responses: never;
260+
};
261+
get_available_workos_team_emails: {
262+
parameters: {
263+
query?: never;
264+
header?: never;
265+
path?: never;
266+
cookie?: never;
267+
};
268+
requestBody?: never;
269+
responses: never;
270+
};
135271
}

npm-packages/dashboard/dashboard-management-openapi.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2883,7 +2883,10 @@
28832883
"updateOAuthApplication",
28842884
"deleteOAuthApplication",
28852885
"verifyOAuthApplication",
2886-
"generateOAuthClientSecret"
2886+
"generateOAuthClientSecret",
2887+
"createWorkosTeam",
2888+
"createWorkosEnvironment",
2889+
"retrieveWorkosEnvironmentCredentials"
28872890
]
28882891
},
28892892
"AuditLogActor": {

npm-packages/dashboard/src/components/teamSettings/AuditLogItem.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,15 @@ function EntryAction({
576576
case "generateOAuthClientSecret": {
577577
return <span>generated a client secret for an OAuth application</span>;
578578
}
579+
case "createWorkosTeam": {
580+
return <span>created a WorkOS team</span>;
581+
}
582+
case "createWorkosEnvironment": {
583+
return <span>created a WorkOS environment</span>;
584+
}
585+
case "retrieveWorkosEnvironmentCredentials": {
586+
return <span>retrieve WorkOS Environment credentials</span>;
587+
}
579588
default:
580589
action satisfies never;
581590
captureMessage(`Unhandled audit log action: ${action}`);

npm-packages/dashboard/src/generatedApi.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1593,7 +1593,7 @@ export interface components {
15931593
referralCode: components["schemas"]["ReferralCode"];
15941594
};
15951595
/** @enum {string} */
1596-
AuditLogAction: "joinTeam" | "createTeam" | "updateTeam" | "deleteTeam" | "createProject" | "transferProject" | "receiveProject" | "updateProject" | "deleteProject" | "createProjectEnvironmentVariable" | "updateProjectEnvironmentVariable" | "deleteProjectEnvironmentVariable" | "createDeployment" | "deleteDeployment" | "inviteMember" | "cancelMemberInvitation" | "removeMember" | "updateMemberRole" | "updateMemberProjectRole" | "updatePaymentMethod" | "updateBillingContact" | "updateBillingAddress" | "createSubscription" | "resumeSubscription" | "cancelSubscription" | "changeSubscriptionPlan" | "createTeamAccessToken" | "updateTeamAccessToken" | "deleteTeamAccessToken" | "viewTeamAccessToken" | "createCustomDomain" | "deleteCustomDomain" | "startManualCloudBackup" | "restoreFromCloudBackup" | "configurePeriodicBackup" | "disablePeriodicBackup" | "deleteCloudBackup" | "disableTeamExceedingSpendingLimits" | "setSpendingLimit" | "applyReferralCode" | "createOAuthApplication" | "updateOAuthApplication" | "deleteOAuthApplication" | "verifyOAuthApplication" | "generateOAuthClientSecret";
1596+
AuditLogAction: "joinTeam" | "createTeam" | "updateTeam" | "deleteTeam" | "createProject" | "transferProject" | "receiveProject" | "updateProject" | "deleteProject" | "createProjectEnvironmentVariable" | "updateProjectEnvironmentVariable" | "deleteProjectEnvironmentVariable" | "createDeployment" | "deleteDeployment" | "inviteMember" | "cancelMemberInvitation" | "removeMember" | "updateMemberRole" | "updateMemberProjectRole" | "updatePaymentMethod" | "updateBillingContact" | "updateBillingAddress" | "createSubscription" | "resumeSubscription" | "cancelSubscription" | "changeSubscriptionPlan" | "createTeamAccessToken" | "updateTeamAccessToken" | "deleteTeamAccessToken" | "viewTeamAccessToken" | "createCustomDomain" | "deleteCustomDomain" | "startManualCloudBackup" | "restoreFromCloudBackup" | "configurePeriodicBackup" | "disablePeriodicBackup" | "deleteCloudBackup" | "disableTeamExceedingSpendingLimits" | "setSpendingLimit" | "applyReferralCode" | "createOAuthApplication" | "updateOAuthApplication" | "deleteOAuthApplication" | "verifyOAuthApplication" | "generateOAuthClientSecret" | "createWorkosTeam" | "createWorkosEnvironment" | "retrieveWorkosEnvironmentCredentials";
15971597
/** @description Represents the `ValidatedActor` equivalent for audit logs. This identifies
15981598
* who executed an AuditLogEvent */
15991599
AuditLogActor: "system" | {

0 commit comments

Comments
 (0)