Skip to content
This repository was archived by the owner on May 13, 2026. It is now read-only.

Commit 0df4fcf

Browse files
refactor: cleanup
1 parent ac38f4d commit 0df4fcf

18 files changed

Lines changed: 387 additions & 288 deletions

src/user_management/operations/create_magic_auth.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl CreateMagicAuth for UserManagement<'_> {
6565
params: &CreateMagicAuthParams<'_>,
6666
) -> WorkOsResult<MagicAuth, CreateMagicAuthError> {
6767
let url = self.workos.base_url().join("/user_management/magic_auth")?;
68-
let user = self
68+
let magic_auth = self
6969
.workos
7070
.client()
7171
.post(url)
@@ -78,7 +78,7 @@ impl CreateMagicAuth for UserManagement<'_> {
7878
.json::<MagicAuth>()
7979
.await?;
8080

81-
Ok(user)
81+
Ok(magic_auth)
8282
}
8383
}
8484

src/user_management/operations/create_organization_membership.rs

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ use crate::organizations::OrganizationId;
66
use crate::user_management::{OrganizationMembership, UserId, UserManagement};
77
use crate::{ResponseExt, WorkOsError, WorkOsResult};
88

9-
/// Parameters for the [`CreateOrganizationMembership`] function.
9+
/// The parameters for [`CreateOrganizationMembership`].
1010
#[derive(Debug, Serialize)]
1111
pub struct CreateOrganizationMembershipParams<'a> {
12-
/// The ID of the user to create a membership for.
12+
/// The ID of the user.
1313
pub user_id: &'a UserId,
1414

15-
/// The ID of the organization to create a membership for.
15+
/// The ID of the organization which the user belongs to.
1616
pub organization_id: &'a OrganizationId,
1717

18-
/// The slug of the role to assign to the user.
19-
#[serde(skip_serializing_if = "Option::is_none")]
18+
/// The unique role identifier.
19+
///
20+
/// Defaults to `member`.
2021
pub role_slug: Option<&'a str>,
2122
}
2223

@@ -30,29 +31,32 @@ impl From<CreateOrganizationMembershipError> for WorkOsError<CreateOrganizationM
3031
}
3132
}
3233

33-
/// [WorkOS Docs: Create Organization Membership](https://workos.com/docs/reference/authkit/organization-membership#create-organization-membership)
34+
/// [WorkOS Docs: Create an organization membership](https://workos.com/docs/reference/user-management/organization-membership/create)
3435
#[async_trait]
3536
pub trait CreateOrganizationMembership {
36-
/// Creates an [`OrganizationMembership`].
37+
/// Creates a new `active` organization membership for the given organization and user.
38+
///
39+
/// Calling this API with an organization and user that match an `inactive` organization membership will activate the membership with the specified role.
3740
///
38-
/// [WorkOS Docs: Create Organization Membership](https://workos.com/docs/reference/authkit/organization-membership#create-organization-membership)
41+
/// [WorkOS Docs: Create an organization membership](https://workos.com/docs/reference/user-management/organization-membership/create)
3942
///
4043
/// # Examples
4144
///
4245
/// ```
43-
/// # use workos_sdk::WorkOsResult;
44-
/// # use workos_sdk::user_management::*;
45-
/// use workos_sdk::{ApiKey, WorkOs};
46+
/// # use workos::WorkOsResult;
47+
/// # use workos::organizations::OrganizationId;
48+
/// # use workos::user_management::*;
49+
/// use workos::{ApiKey, WorkOs};
4650
///
4751
/// # async fn run() -> WorkOsResult<(), CreateOrganizationMembershipError> {
4852
/// let workos = WorkOs::new(&ApiKey::from("sk_example_123456789"));
4953
///
5054
/// let organization_membership = workos
5155
/// .user_management()
5256
/// .create_organization_membership(&CreateOrganizationMembershipParams {
53-
/// user_id: &UserId::from("user_01E4ZCR3C56J083X43JQXF3JK5"),
54-
/// organization_id: &OrganizationId::from("org_01EHZNVPK3SFK441A1RGBFSHRT"),
55-
/// role_slug: Some("admin"),
57+
/// user_id: &UserId::from("user_01E4ZCR3C5A4QZ2Z2JQXGKZJ9E"),
58+
/// organization_id: &OrganizationId::from("org_01E4ZCR3C56J083X43JQXF3JK5"),
59+
/// role_slug: Some("admin"),
5660
/// })
5761
/// .await?;
5862
/// # Ok(())
@@ -70,8 +74,10 @@ impl CreateOrganizationMembership for UserManagement<'_> {
7074
&self,
7175
params: &CreateOrganizationMembershipParams<'_>,
7276
) -> WorkOsResult<OrganizationMembership, CreateOrganizationMembershipError> {
73-
let url = self.workos.base_url().join("/user_management/organization_memberships")?;
74-
77+
let url = self
78+
.workos
79+
.base_url()
80+
.join("/user_management/organization_membership")?;
7581
let organization_membership = self
7682
.workos
7783
.client()
@@ -80,7 +86,8 @@ impl CreateOrganizationMembership for UserManagement<'_> {
8086
.json(&params)
8187
.send()
8288
.await?
83-
.handle_unauthorized_or_generic_error()?
89+
.handle_unauthorized_or_generic_error()
90+
.await?
8491
.json::<OrganizationMembership>()
8592
.await?;
8693

@@ -108,20 +115,15 @@ mod test {
108115
.build();
109116

110117
server
111-
.mock("POST", "/user_management/organization_memberships")
118+
.mock("POST", "/user_management/organization_membership")
112119
.match_header("Authorization", "Bearer sk_example_123456789")
113-
.match_body(mockito::Matcher::Json(json!({
114-
"user_id": "user_01E4ZCR3C56J083X43JQXF3JK5",
115-
"organization_id": "org_01EHZNVPK3SFK441A1RGBFSHRT",
116-
"role_slug": "admin"
117-
})))
118120
.with_status(201)
119121
.with_body(
120122
json!({
121123
"object": "organization_membership",
122124
"id": "om_01E4ZCR3C56J083X43JQXF3JK5",
123-
"user_id": "user_01E4ZCR3C56J083X43JQXF3JK5",
124-
"organization_id": "org_01EHZNVPK3SFK441A1RGBFSHRT",
125+
"user_id": "user_01E4ZCR3C5A4QZ2Z2JQXGKZJ9E",
126+
"organization_id": "org_01E4ZCR3C56J083X43JQXF3JK5",
125127
"role": {
126128
"slug": "admin"
127129
},
@@ -137,8 +139,8 @@ mod test {
137139
let organization_membership = workos
138140
.user_management()
139141
.create_organization_membership(&CreateOrganizationMembershipParams {
140-
user_id: &UserId::from("user_01E4ZCR3C56J083X43JQXF3JK5"),
141-
organization_id: &OrganizationId::from("org_01EHZNVPK3SFK441A1RGBFSHRT"),
142+
user_id: &UserId::from("user_01E4ZCR3C5A4QZ2Z2JQXGKZJ9E"),
143+
organization_id: &OrganizationId::from("org_01E4ZCR3C56J083X43JQXF3JK5"),
142144
role_slug: Some("admin"),
143145
})
144146
.await
@@ -147,6 +149,6 @@ mod test {
147149
assert_eq!(
148150
organization_membership.id,
149151
OrganizationMembershipId::from("om_01E4ZCR3C56J083X43JQXF3JK5")
150-
);
152+
)
151153
}
152-
}
154+
}

src/user_management/operations/create_password_reset.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ impl CreatePasswordReset for UserManagement<'_> {
105105
.workos
106106
.base_url()
107107
.join("/user_management/password_reset")?;
108-
let user = self
108+
let password_reset = self
109109
.workos
110110
.client()
111111
.post(url)
@@ -119,7 +119,7 @@ impl CreatePasswordReset for UserManagement<'_> {
119119
.json::<PasswordReset>()
120120
.await?;
121121

122-
Ok(user)
122+
Ok(password_reset)
123123
}
124124
}
125125

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,81 @@
11
use async_trait::async_trait;
2+
use serde::Serialize;
23
use thiserror::Error;
34

45
use crate::user_management::{OrganizationMembership, OrganizationMembershipId, UserManagement};
56
use crate::{ResponseExt, WorkOsError, WorkOsResult};
67

8+
/// The parameters for [`DeactivateOrganizationMembership`].
9+
#[derive(Debug, Serialize)]
10+
pub struct DeactivateOrganizationMembershipParams<'a> {
11+
/// The unique ID of the organization membership.
12+
pub organization_membership_id: &'a OrganizationMembershipId,
13+
}
14+
715
/// An error returned from [`DeactivateOrganizationMembership`].
816
#[derive(Debug, Error)]
917
pub enum DeactivateOrganizationMembershipError {}
1018

11-
impl From<DeactivateOrganizationMembershipError> for WorkOsError<DeactivateOrganizationMembershipError> {
19+
impl From<DeactivateOrganizationMembershipError>
20+
for WorkOsError<DeactivateOrganizationMembershipError>
21+
{
1222
fn from(err: DeactivateOrganizationMembershipError) -> Self {
1323
Self::Operation(err)
1424
}
1525
}
1626

17-
/// [WorkOS Docs: Deactivate Organization Membership](https://workos.com/docs/reference/authkit/organization-membership#deactivate-organization-membership)
27+
/// [WorkOS Docs: Deactivate an organization membership](https://workos.com/docs/reference/user-management/organization-membership/deactivate)
1828
#[async_trait]
1929
pub trait DeactivateOrganizationMembership {
20-
/// Deactivates an [`OrganizationMembership`].
30+
/// Deactivates an `active` organization membership.
2131
///
22-
/// [WorkOS Docs: Deactivate Organization Membership](https://workos.com/docs/reference/authkit/organization-membership#deactivate-organization-membership)
32+
/// [WorkOS Docs: Deactivate an organization membership](https://workos.com/docs/reference/user-management/organization-membership/deactivate)
2333
///
2434
/// # Examples
2535
///
2636
/// ```
27-
/// # use workos_sdk::WorkOsResult;
28-
/// # use workos_sdk::user_management::*;
29-
/// use workos_sdk::{ApiKey, WorkOs};
37+
/// # use workos::WorkOsResult;
38+
/// # use workos::user_management::*;
39+
/// use workos::{ApiKey, WorkOs};
3040
///
3141
/// # async fn run() -> WorkOsResult<(), DeactivateOrganizationMembershipError> {
3242
/// let workos = WorkOs::new(&ApiKey::from("sk_example_123456789"));
3343
///
3444
/// let organization_membership = workos
3545
/// .user_management()
36-
/// .deactivate_organization_membership(&OrganizationMembershipId::from("om_01E4ZCR3C56J083X43JQXF3JK5"))
46+
/// .deactivate_organization_membership(&DeactivateOrganizationMembershipParams {
47+
/// organization_membership_id: &OrganizationMembershipId::from("om_01E4ZCR3C56J083X43JQXF3JK5"),
48+
/// })
3749
/// .await?;
3850
/// # Ok(())
3951
/// # }
4052
/// ```
4153
async fn deactivate_organization_membership(
4254
&self,
43-
organization_membership_id: &OrganizationMembershipId,
55+
params: &DeactivateOrganizationMembershipParams<'_>,
4456
) -> WorkOsResult<OrganizationMembership, DeactivateOrganizationMembershipError>;
4557
}
4658

4759
#[async_trait]
4860
impl DeactivateOrganizationMembership for UserManagement<'_> {
4961
async fn deactivate_organization_membership(
5062
&self,
51-
organization_membership_id: &OrganizationMembershipId,
63+
params: &DeactivateOrganizationMembershipParams<'_>,
5264
) -> WorkOsResult<OrganizationMembership, DeactivateOrganizationMembershipError> {
53-
let url = self
54-
.workos
55-
.base_url()
56-
.join(&format!("/user_management/organization_memberships/{}/deactivate", organization_membership_id))?;
57-
65+
let url = self.workos.base_url().join(&format!(
66+
"/user_management/organization_memberships/{id}/deactivate",
67+
id = params.organization_membership_id
68+
))?;
5869
let organization_membership = self
5970
.workos
6071
.client()
61-
.put(url)
72+
.post(url)
6273
.bearer_auth(self.workos.key())
74+
.json(&params)
6375
.send()
6476
.await?
65-
.handle_unauthorized_or_generic_error()?
77+
.handle_unauthorized_or_generic_error()
78+
.await?
6679
.json::<OrganizationMembership>()
6780
.await?;
6881

@@ -76,12 +89,12 @@ mod test {
7689
use tokio;
7790

7891
use crate::user_management::{OrganizationMembershipId, OrganizationMembershipStatus};
79-
use crate::{ApiKey, WorkOs};
92+
use crate::{ApiKey, KnownOrUnknown, WorkOs};
8093

8194
use super::*;
8295

8396
#[tokio::test]
84-
async fn it_calls_the_deactivate_organization_membership_endpoint() {
97+
async fn deactivate_organization_membership_endpoint() {
8598
let mut server = mockito::Server::new_async().await;
8699

87100
let workos = WorkOs::builder(&ApiKey::from("sk_example_123456789"))
@@ -90,17 +103,20 @@ mod test {
90103
.build();
91104

92105
server
93-
.mock("PUT", "/user_management/organization_memberships/om_01E4ZCR3C56J083X43JQXF3JK5/deactivate")
106+
.mock(
107+
"POST",
108+
"/user_management/organization_memberships/om_01E4ZCR3C56J083X43JQXF3JK5/deactivate",
109+
)
94110
.match_header("Authorization", "Bearer sk_example_123456789")
95111
.with_status(200)
96112
.with_body(
97113
json!({
98114
"object": "organization_membership",
99115
"id": "om_01E4ZCR3C56J083X43JQXF3JK5",
100-
"user_id": "user_01E4ZCR3C56J083X43JQXF3JK5",
101-
"organization_id": "org_01EHZNVPK3SFK441A1RGBFSHRT",
116+
"user_id": "user_01E4ZCR3C5A4QZ2Z2JQXGKZJ9E",
117+
"organization_id": "org_01E4ZCR3C56J083X43JQXF3JK5",
102118
"role": {
103-
"slug": "admin"
119+
"slug": "member"
104120
},
105121
"status": "inactive",
106122
"created_at": "2021-06-25T19:07:33.155Z",
@@ -113,14 +129,21 @@ mod test {
113129

114130
let organization_membership = workos
115131
.user_management()
116-
.deactivate_organization_membership(&OrganizationMembershipId::from("om_01E4ZCR3C56J083X43JQXF3JK5"))
132+
.deactivate_organization_membership(&DeactivateOrganizationMembershipParams {
133+
organization_membership_id: &OrganizationMembershipId::from(
134+
"om_01E4ZCR3C56J083X43JQXF3JK5",
135+
),
136+
})
117137
.await
118138
.unwrap();
119139

120140
assert_eq!(
121141
organization_membership.id,
122142
OrganizationMembershipId::from("om_01E4ZCR3C56J083X43JQXF3JK5")
123143
);
124-
assert_eq!(organization_membership.status, OrganizationMembershipStatus::Inactive);
144+
assert_eq!(
145+
organization_membership.status,
146+
KnownOrUnknown::Known(OrganizationMembershipStatus::Inactive)
147+
);
125148
}
126-
}
149+
}

0 commit comments

Comments
 (0)