Skip to content

Commit

Permalink
feat: add new endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
w1ndblow committed Jan 27, 2025
1 parent 2c5756a commit 865aa54
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 179 deletions.
138 changes: 1 addition & 137 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,140 +1,4 @@
## v5.1.2 (2025-01-26)

### Fix

- small bugs, use ruff as linter, added annotations

## v5.1.1 (2024-12-15)

### Fix

- retry upon 401

## v5.1.0 (2024-12-14)

### Feat

- get_client_all_sessions now supports pagination
- uma extra payload
- user profile metadata parameter for get_user method
- uma extra payload

### Fix

- check uma permissions with resource ID as well
- get group by path should not raise on 404

## v5.0.0 (2024-12-10)

## v4.7.3 (2024-11-29)

### Fix

- change to mounts (#622)

## v4.7.2 (2024-11-17)

### Fix

- Feature parity for `a_decode_token` and `decode_token` (#616)

## v4.7.1 (2024-11-13)

### Fix

- make sure to not call sync IO functions inside async functions (#615)

## v4.7.0 (2024-11-03)

### Feat

- add client scope client-specific role mappings (#605)

## v4.6.3 (2024-10-26)

### Fix

- Add optional Nonce parameter to the authorization URL requests (#606)

## v4.6.2 (2024-10-05)

### Fix

- add scopes to device auth (#599)

## v4.6.1 (2024-10-05)

### Fix

- changed sync get user id to async get user in create user async function (#600)

## v4.6.0 (2024-10-04)

### Feat

- Add the max_retries parameter (#598)

## v4.5.1 (2024-10-02)

### Fix

- Set client_credentials as grant_type also when x509 certificate is given (#597)

## v4.5.0 (2024-09-28)

### Feat

- add ability to remove composite client roles (#596)

## v4.4.0 (2024-09-14)

### Feat

- add matchingUri support for listing resources with wildcards (#592)

## v4.3.0 (2024-08-01)

### Feat

- allow the use of client certificates in all requests (#584)

## v4.2.3 (2024-07-24)

### Fix

- use a_public_key() in a_decode_token() instead of public_key() (#582)

## v4.2.2 (2024-07-16)

### Fix

- correctly pass query params in a_send_update_account and a_send_verify_email (#581)

## v4.2.1 (2024-07-11)

### Fix

- passing timeout values to ConnectionManager (#578)

## v4.2.0 (2024-06-22)

### Feat

- functions for updating resource permissions and getting associated policies for a permission (#574)

## v4.1.0 (2024-06-06)

### Feat

- Async feature (#566)

## v4.0.1 (2024-06-04)

### Fix

- Leeway config (#568)

## v4.0.0 (2024-04-27)
## Unreleased

### BREAKING CHANGE

Expand Down
105 changes: 63 additions & 42 deletions src/keycloak/keycloak_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -3779,25 +3779,32 @@ def change_execution_priority(self, execution_id: str, diff: int) -> None:
:raises KeycloakPostError: when post requests are failed
"""
params_path = {"id": execution_id, "realm-name": self.connection.realm_name}
try:
if diff > 0:
for _i in range(diff):
_ = self.connection.raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_RAISE_PRIORITY.format(
**params_path,
),
data="{}",
)
elif diff < 0:
for _i in range(-diff):
_ = self.connection.raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_LOWER_PRIORITY.format(
**params_path,
),
data="{}",
)
except Exception as err:
raise KeycloakPostError from err
if diff > 0:
for _ in range(diff):
data_raw = self.connection.raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_RAISE_PRIORITY.format(
**params_path,
),
data="{}",
)
raise_error_from_response(
data_raw,
KeycloakPostError,
expected_codes=[HTTP_NO_CONTENT],
)
elif diff < 0:
for _ in range(-diff):
data_raw = self.connection.raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_LOWER_PRIORITY.format(
**params_path,
),
data="{}",
)
raise_error_from_response(
data_raw,
KeycloakPostError,
expected_codes=[HTTP_NO_CONTENT],
)

def create_authentication_flow_subflow(
self,
Expand Down Expand Up @@ -3899,7 +3906,11 @@ def create_execution_config(self, execution_id: str, payload: dict) -> bytes:
urls_patterns.URL_ADMIN_FLOWS_EXECUTION.format(**params_path) + "/config",
data=json.dumps(payload),
)
return raise_error_from_response(data_raw, KeycloakPostError, expected_codes=[201])
return raise_error_from_response(
data_raw,
KeycloakPostError,
expected_codes=[HTTP_CREATED],
)

def update_authenticator_config(self, payload: dict, config_id: str) -> bytes:
"""
Expand Down Expand Up @@ -10492,7 +10503,6 @@ async def a_clear_user_cache(self) -> bytes:
KeycloakPostError,
expected_codes=[HTTP_NO_CONTENT],
)
return raise_error_from_response(data_raw, KeycloakPostError, expected_codes=[204])

async def a_change_execution_priority(self, execution_id: str, diff: int) -> None:
"""
Expand All @@ -10505,25 +10515,32 @@ async def a_change_execution_priority(self, execution_id: str, diff: int) -> Non
:raises KeycloakPostError: when post requests are failed
"""
params_path = {"id": execution_id, "realm-name": self.connection.realm_name}
try:
if diff > 0:
for _i in range(diff):
_ = self.connection.a_raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_RAISE_PRIORITY.format(
**params_path,
),
data="{}",
)
elif diff < 0:
for _i in range(-diff):
_ = self.connection.a_raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_LOWER_PRIORITY.format(
**params_path,
),
data="{}",
)
except Exception as err:
raise KeycloakPostError from err
if diff > 0:
for _ in range(diff):
data_raw = self.connection.a_raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_RAISE_PRIORITY.format(
**params_path,
),
data="{}",
)
raise_error_from_response(
data_raw,
KeycloakPostError,
expected_codes=[HTTP_NO_CONTENT],
)
elif diff < 0:
for _ in range(-diff):
data_raw = self.connection.a_raw_post(
urls_patterns.URL_AUTHENTICATION_EXECUTION_LOWER_PRIORITY.format(
**params_path,
),
data="{}",
)
raise_error_from_response(
data_raw,
KeycloakPostError,
expected_codes=[HTTP_NO_CONTENT],
)

async def a_create_execution_config(self, execution_id: str, payload: dict) -> bytes:
"""
Expand All @@ -10541,10 +10558,14 @@ async def a_create_execution_config(self, execution_id: str, payload: dict) -> b
"""
params_path = {"id": execution_id, "realm-name": self.connection.realm_name}
data_raw = self.connection.a_raw_post(
urls_patterns.URL_ADMIN_FLOWS_EXECUTION.format(**params_path) + "/config",
urls_patterns.URL_ADMIN_FLOWS_EXECUTION_CONFIG.format(**params_path),
data=json.dumps(payload),
)
return raise_error_from_response(data_raw, KeycloakPostError, expected_codes=[201])
return raise_error_from_response(
data_raw,
KeycloakPostError,
expected_codes=[HTTP_CREATED],
)

async def a_update_authentication_flow(self, flow_id: str, payload: dict) -> bytes:
"""
Expand Down
2 changes: 2 additions & 0 deletions src/keycloak/urls_patterns.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,3 +235,5 @@
URL_AUTHENTICATION_EXECUTION_LOWER_PRIORITY = (
"realms/{realm-name}/authentication/executions/{id}/lower-priority"
)

URL_ADMIN_FLOWS_EXECUTION_CONFIG = URL_ADMIN_FLOWS_EXECUTION + "{id}/config"

0 comments on commit 865aa54

Please sign in to comment.