11use async_trait:: async_trait;
2+ use serde:: Serialize ;
23use thiserror:: Error ;
34
45use crate :: user_management:: { OrganizationMembership , OrganizationMembershipId , UserManagement } ;
56use 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 ) ]
917pub 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]
1929pub 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]
4860impl 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