Slack SCIM API Client
Project description
Slack SCIM API Client in Python
This library provides ways to call Slack's SCIM APIs in the Pythonic way.
Getting Started
Installation
pip install slack_scim
User Management
https://api.slack.com/scim#users
import os
from src.slack_scim import Users, User
from src.slack_scim import SCIMClient, SCIMApiError
# `admin` scope required
token = os.environ["SLACK_ADMIN_TOKEN"]
client = SCIMClient(token=token)
try:
search_result: Users = client.search_users(filter="restricted eq '1'", count=3)
user_id = search_result.resources[0].id
read_result: User = client.read_user(user_id)
except SCIMApiError as err:
if err.status == 429:
# handle rate limit errors
pass
new_user: User = User.from_dict({
"name": {
"givenName": "Kazuhiro",
"familyName": "Sera",
},
"emails": [{"value": "your-name@example.com"}],
"userName": "seratch",
})
creation_result: User = client.create_user(new_user)
user_id = creation_result.id
patch_result: User = client.patch_user(user_id, {
"name": {
"givenName": "Kaz"
}
})
patch_result.name.given_name = "K"
update_result: User = client.update_user(user_id, patch_result)
client.delete_user(user_id)
Group Management
https://api.slack.com/scim#groups
import os
from slack_scim import Groups, Group, GroupMember, SCIMClient, User
# `admin` scope required
token = os.environ["SLACK_ADMIN_TOKEN"]
client = SCIMClient(token=token)
display_name = "test-group-123"
new_group: Group = Group.from_dict({"displayName": display_name})
created_user: User = client.create_user(User.from_dict({
"name": {
"givenName": "Kazuhiro",
"familyName": "Sera",
},
"emails": [{"value": "your-name@example.com"}],
"userName": "seratch",
}))
new_group.members = [GroupMember.from_dict(created_user.to_dict())]
creation_result: Group = client.create_group(new_group)
if not creation_result:
search_result: Groups = client.search_groups(filter=f"displayName eq {display_name}", count=1)
creation_result: Group = search_result.resources[0]
group_id = creation_result.id
client.patch_group(group_id, {"displayName": display_name + "-2"})
patch_result: Group = client.read_group(group_id)
patch_result.display_name = display_name + "-3"
client.update_group(group_id, patch_result)
update_result = client.read_group(group_id)
client.delete_group(group_id)
Contribution
Your contributions are always welcome! Before submitting a pull request, verify your code works with Slack SCIM APIs.
export SLACK_ADMIN_TOKEN=xoxp-***
SLACK_SCIM_TEST_MODE=prod python setup.py test
License
The MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
slack-scim-1.0.0.tar.gz
(29.6 kB
view hashes)
Built Distribution
Close
Hashes for slack_scim-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52fd34338451b0403ebcbfbd8581a58a5d67380207fa0343584cda9f7ac07615 |
|
MD5 | 719d2b498a49a4f16d0642fe86d74bbd |
|
BLAKE2b-256 | 1ad2b003870347de2aa4475ca2637677a613e6278efd0a80c0db5f92b394b21a |