diff --git a/propelauth_py/__init__.py b/propelauth_py/__init__.py index 645af76..4a7fc82 100644 --- a/propelauth_py/__init__.py +++ b/propelauth_py/__init__.py @@ -41,6 +41,7 @@ _validate_org_api_key, _change_user_role_in_org, _delete_org, + _revoke_pending_org_invite, ) from propelauth_py.api.magic_link import _create_magic_link from propelauth_py.api.token_verification_metadata import ( @@ -129,6 +130,7 @@ "migrate_user_from_external_source", "create_org", "delete_org", + "revoke_pending_org_invite", "update_org_metadata", "subscribe_org_to_role_mapping", "add_user_to_org", @@ -464,6 +466,9 @@ def subscribe_org_to_role_mapping(org_id, custom_role_mapping_name): def delete_org(org_id): return _delete_org(auth_url, integration_api_key, org_id) + + def revoke_pending_org_invite(org_id, invitee_email): + return _revoke_pending_org_invite(auth_url, integration_api_key, org_id, invitee_email) def add_user_to_org(user_id, org_id, role, additional_roles=[]): return _add_user_to_org( @@ -658,6 +663,7 @@ def validate_api_key(api_key_token): logout_all_user_sessions=logout_all_user_sessions, allow_org_to_setup_saml_connection=allow_org_to_setup_saml_connection, disallow_org_to_setup_saml_connection=disallow_org_to_setup_saml_connection, + revoke_pending_org_invite=revoke_pending_org_invite, # api key functions fetch_api_key=fetch_api_key, fetch_current_api_keys=fetch_current_api_keys, diff --git a/propelauth_py/api/org.py b/propelauth_py/api/org.py index 136e0b0..bfa86f1 100644 --- a/propelauth_py/api/org.py +++ b/propelauth_py/api/org.py @@ -349,6 +349,28 @@ def _delete_org(auth_url, integration_api_key, org_id): return True +def _revoke_pending_org_invite( + auth_url, + integration_api_key, + org_id, + invitee_email +): + url = auth_url + "/api/backend/v1/pending_org_invites" + json = { + "org_id": org_id, + "invitee_email": invitee_email + } + + response = requests.delete(url, json=json, auth=_ApiKeyAuth(integration_api_key)) + if response.status_code == 401: + raise ValueError("integration_api_key is incorrect") + elif response.status_code == 400: + raise BadRequestException(response.json()) + elif not response.ok: + raise RuntimeError("Unknown error when revoking pending org invite") + + return response.json() + #################### # HELPERS # diff --git a/setup.py b/setup.py index 751d2b2..75d9cde 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ setup( name="propelauth-py", - version="3.1.16", + version="3.1.17", description="A python authentication library", long_description=README, long_description_content_type="text/markdown", diff --git a/tests/test_init_base_auth.py b/tests/test_init_base_auth.py index f8d2fb0..350b014 100644 --- a/tests/test_init_base_auth.py +++ b/tests/test_init_base_auth.py @@ -41,6 +41,7 @@ _validate_org_api_key, _change_user_role_in_org, _delete_org, + _revoke_pending_org_invite ) from propelauth_py.api.magic_link import _create_magic_link from propelauth_py.api.access_token import _create_access_token @@ -106,6 +107,7 @@ _invite_user_to_org, _resend_email_confirmation, _logout_all_user_sessions, + _revoke_pending_org_invite ]