slack-objects 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. {slack_objects-0.1.0 → slack_objects-0.1.1}/PKG-INFO +22 -6
  2. {slack_objects-0.1.0 → slack_objects-0.1.1}/README.md +21 -5
  3. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/_version.py +3 -3
  4. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects.egg-info/PKG-INFO +22 -6
  5. {slack_objects-0.1.0 → slack_objects-0.1.1}/.github/copilot-instructions.md +0 -0
  6. {slack_objects-0.1.0 → slack_objects-0.1.1}/.github/workflows/ci.yml +0 -0
  7. {slack_objects-0.1.0 → slack_objects-0.1.1}/.github/workflows/publish-pypi.yml +0 -0
  8. {slack_objects-0.1.0 → slack_objects-0.1.1}/.github/workflows/publish-testpypi.yml +0 -0
  9. {slack_objects-0.1.0 → slack_objects-0.1.1}/.gitignore +0 -0
  10. {slack_objects-0.1.0 → slack_objects-0.1.1}/LICENSE +0 -0
  11. {slack_objects-0.1.0 → slack_objects-0.1.1}/pyproject.toml +0 -0
  12. {slack_objects-0.1.0 → slack_objects-0.1.1}/pytest.ini +0 -0
  13. {slack_objects-0.1.0 → slack_objects-0.1.1}/setup.cfg +0 -0
  14. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/__init__.py +0 -0
  15. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/api_caller.py +0 -0
  16. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/base.py +0 -0
  17. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/client.py +0 -0
  18. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/config.py +0 -0
  19. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/conversations.py +0 -0
  20. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/files.py +0 -0
  21. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/idp_groups.py +0 -0
  22. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/messages.py +0 -0
  23. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/rate_limits.py +0 -0
  24. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/scim_base.py +0 -0
  25. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/usergroups.py +0 -0
  26. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/users.py +0 -0
  27. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects/workspaces.py +0 -0
  28. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects.egg-info/SOURCES.txt +0 -0
  29. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects.egg-info/dependency_links.txt +0 -0
  30. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects.egg-info/requires.txt +0 -0
  31. {slack_objects-0.1.0 → slack_objects-0.1.1}/src/slack_objects.egg-info/top_level.txt +0 -0
  32. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Examples/examples_config.example.json +0 -0
  33. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Examples/users_search_by_email_example.py +0 -0
  34. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Examples/users_test_AzureKeyVault.py +0 -0
  35. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/conftest_live.py +0 -0
  36. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/run_all_scim_users_live_tests.py +0 -0
  37. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_idp_groups_live.py +0 -0
  38. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_create_live.py +0 -0
  39. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_deactivate_live.py +0 -0
  40. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_input_validation_live.py +0 -0
  41. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_make_guest_live.py +0 -0
  42. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_reactivate_live.py +0 -0
  43. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_update_attribute_live.py +0 -0
  44. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/SCIM/test_scim_users_update_email_live.py +0 -0
  45. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/_smoke_harness.py +0 -0
  46. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/api_caller_smoke_test.py +0 -0
  47. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/conversations_smoke_test.py +0 -0
  48. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/files_smoke_test.py +0 -0
  49. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/idp_groups_smoke_test.py +0 -0
  50. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/messages_smoke_test.py +0 -0
  51. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/run_all_smoke.py +0 -0
  52. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/security_smoke_test.py +0 -0
  53. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/usergroups_smoke_test.py +0 -0
  54. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/users_smoke_test.py +0 -0
  55. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Smoke/workspaces_smoke_test.py +0 -0
  56. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/config_unit_test.py +0 -0
  57. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/conversations_unit_test.py +0 -0
  58. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/files_unit_test.py +0 -0
  59. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/idp_groups_unit_test.py +0 -0
  60. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/messages_unit_test.py +0 -0
  61. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/rate_limits_unit_test.py +0 -0
  62. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/usergroups_test.py +0 -0
  63. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/users_unit_test.py +0 -0
  64. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/UnitTests/workspaces_unit_test.py +0 -0
  65. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Users/conftest_live.py +0 -0
  66. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Users/run_all_users_live_tests.py +0 -0
  67. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Users/test_users_admin_live.py +0 -0
  68. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Users/test_users_classification_live.py +0 -0
  69. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Users/test_users_input_validation_live.py +0 -0
  70. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/Users/test_users_read_live.py +0 -0
  71. {slack_objects-0.1.0 → slack_objects-0.1.1}/tests/live_test_config.example.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: slack-objects
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Opinionated, testable Python wrappers for Slack’s Web, Admin, and SCIM APIs, organized by object domain (users, conversations, messages, files, workspaces, and IdP groups). Designed for automation and administration workflows.
5
5
  Author-email: "Marcos E. Mercado" <marcos_elias@hotmail.com>
6
6
  Keywords: slack,objects,classes,slack objects,utilities,slack utilities,slack object types,slack types,types
@@ -23,7 +23,7 @@ Dynamic: license-file
23
23
 
24
24
  A focused Python package for working with **Slack objects** commonly used in administration and automation workflows.
25
25
 
26
- `slack-objects` provides **opinionated, testable wrappers** around the Slack Web API, Admin API, and SCIM API—favoring object-based access over raw endpoint calls.
26
+ `slack-objects` provides **opinionated, testable wrappers** around the Slack Web API, Admin API, SCIM API, and Discovery API—favoring object-based access over raw endpoint calls.
27
27
 
28
28
  ---
29
29
 
@@ -55,7 +55,7 @@ Instead, it focuses on higher-level object operations that typically require:
55
55
  - multiple API calls
56
56
  - pagination
57
57
  - rate limiting
58
- - Admin API or SCIM usage
58
+ - Admin API, SCIM, or Discovery API usage
59
59
  - non-trivial orchestration logic
60
60
 
61
61
  ---
@@ -73,7 +73,7 @@ cfg = SlackObjectsConfig(
73
73
  bot_token="xoxb-...",
74
74
  user_token="xoxp-...",
75
75
  scim_token="xoxp-...",
76
- # see SlackObjectsConfig for additional options (scim_base_url, http_timeout_seconds, etc.)
76
+ # see SlackObjectsConfig for additional options (team_id, scim_base_url, http_timeout_seconds, etc.)
77
77
  )
78
78
 
79
79
  slack = SlackObjectsClient(cfg)
@@ -139,6 +139,8 @@ The codebase is designed to be tested **without hitting Slack**.
139
139
 
140
140
  ## Installation
141
141
 
142
+ Requires **Python 3.9+**.
143
+
142
144
  ```bash
143
145
  pip install slack-objects
144
146
  ```
@@ -154,7 +156,8 @@ cfg = SlackObjectsConfig(
154
156
  bot_token="xoxb-...",
155
157
  user_token="xoxp-...",
156
158
  scim_token="xoxp-...",
157
- default_rate_tier=RateTier.TIER_3, # fallback sleep between API calls when no specific tier matches
159
+ team_id="T0123ABC", # workspace ID; required for org-wide tokens calling workspace-scoped Web APIs
160
+ default_rate_tier=RateTier.TIER_2, # fallback sleep between API calls when no specific tier matches (default)
158
161
  )
159
162
  ```
160
163
 
@@ -175,10 +178,23 @@ python -m tests.Smoke.run_all_smoke
175
178
 
176
179
  ---
177
180
 
181
+ ## Rate Limiting
182
+ All Slack Web/Admin API calls go through `SlackApiCaller`, which:
183
+
184
+ - Sleeps according to the resolved rate tier after every successful call
185
+ - Automatically retries on HTTP **429** (rate-limited) responses up to **5 times**, respecting the `Retry-After` header
186
+
187
+ Rate tiers are resolved in priority order:
188
+ explicit per-call tier → method-specific override → prefix rule → `default_rate_tier` from config.
189
+
190
+ ---
191
+
178
192
  ## Notes
179
193
 
180
194
  - SCIM v2 is the default; v1 is supported where applicable
181
- - `PC_Utils` is an optional dependency (used for datetime handling in `set_guest_expiration_date`)
195
+ - `PC_Utils` is a required dependency (used for datetime handling in `set_guest_expiration_date`)
182
196
  - This package is intended for automation and administration workflows
183
197
  - `resolve_user_id` accepts flexible identifiers (user ID, email, or @username) and verifies existence via Web API + SCIM fallback
184
198
  - `is_user_authorized` supports IdP-group-based authorization checks with configurable read/write access levels
199
+ - SCIM user operations are available on `Users`: create, deactivate, reactivate, update attributes, update email, and convert to multi-channel guest
200
+ - Discovery API is used for `Users.get_channels` and `Conversations.get_members` (requires appropriate token scopes)
@@ -2,7 +2,7 @@
2
2
 
3
3
  A focused Python package for working with **Slack objects** commonly used in administration and automation workflows.
4
4
 
5
- `slack-objects` provides **opinionated, testable wrappers** around the Slack Web API, Admin API, and SCIM API—favoring object-based access over raw endpoint calls.
5
+ `slack-objects` provides **opinionated, testable wrappers** around the Slack Web API, Admin API, SCIM API, and Discovery API—favoring object-based access over raw endpoint calls.
6
6
 
7
7
  ---
8
8
 
@@ -34,7 +34,7 @@ Instead, it focuses on higher-level object operations that typically require:
34
34
  - multiple API calls
35
35
  - pagination
36
36
  - rate limiting
37
- - Admin API or SCIM usage
37
+ - Admin API, SCIM, or Discovery API usage
38
38
  - non-trivial orchestration logic
39
39
 
40
40
  ---
@@ -52,7 +52,7 @@ cfg = SlackObjectsConfig(
52
52
  bot_token="xoxb-...",
53
53
  user_token="xoxp-...",
54
54
  scim_token="xoxp-...",
55
- # see SlackObjectsConfig for additional options (scim_base_url, http_timeout_seconds, etc.)
55
+ # see SlackObjectsConfig for additional options (team_id, scim_base_url, http_timeout_seconds, etc.)
56
56
  )
57
57
 
58
58
  slack = SlackObjectsClient(cfg)
@@ -118,6 +118,8 @@ The codebase is designed to be tested **without hitting Slack**.
118
118
 
119
119
  ## Installation
120
120
 
121
+ Requires **Python 3.9+**.
122
+
121
123
  ```bash
122
124
  pip install slack-objects
123
125
  ```
@@ -133,7 +135,8 @@ cfg = SlackObjectsConfig(
133
135
  bot_token="xoxb-...",
134
136
  user_token="xoxp-...",
135
137
  scim_token="xoxp-...",
136
- default_rate_tier=RateTier.TIER_3, # fallback sleep between API calls when no specific tier matches
138
+ team_id="T0123ABC", # workspace ID; required for org-wide tokens calling workspace-scoped Web APIs
139
+ default_rate_tier=RateTier.TIER_2, # fallback sleep between API calls when no specific tier matches (default)
137
140
  )
138
141
  ```
139
142
 
@@ -154,10 +157,23 @@ python -m tests.Smoke.run_all_smoke
154
157
 
155
158
  ---
156
159
 
160
+ ## Rate Limiting
161
+ All Slack Web/Admin API calls go through `SlackApiCaller`, which:
162
+
163
+ - Sleeps according to the resolved rate tier after every successful call
164
+ - Automatically retries on HTTP **429** (rate-limited) responses up to **5 times**, respecting the `Retry-After` header
165
+
166
+ Rate tiers are resolved in priority order:
167
+ explicit per-call tier → method-specific override → prefix rule → `default_rate_tier` from config.
168
+
169
+ ---
170
+
157
171
  ## Notes
158
172
 
159
173
  - SCIM v2 is the default; v1 is supported where applicable
160
- - `PC_Utils` is an optional dependency (used for datetime handling in `set_guest_expiration_date`)
174
+ - `PC_Utils` is a required dependency (used for datetime handling in `set_guest_expiration_date`)
161
175
  - This package is intended for automation and administration workflows
162
176
  - `resolve_user_id` accepts flexible identifiers (user ID, email, or @username) and verifies existence via Web API + SCIM fallback
163
177
  - `is_user_authorized` supports IdP-group-based authorization checks with configurable read/write access levels
178
+ - SCIM user operations are available on `Users`: create, deactivate, reactivate, update attributes, update email, and convert to multi-channel guest
179
+ - Discovery API is used for `Users.get_channels` and `Conversations.get_members` (requires appropriate token scopes)
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.1.0'
32
- __version_tuple__ = version_tuple = (0, 1, 0)
31
+ __version__ = version = '0.1.1'
32
+ __version_tuple__ = version_tuple = (0, 1, 1)
33
33
 
34
- __commit_id__ = commit_id = 'gf712fe717'
34
+ __commit_id__ = commit_id = 'g74ff4e47f'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: slack-objects
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Opinionated, testable Python wrappers for Slack’s Web, Admin, and SCIM APIs, organized by object domain (users, conversations, messages, files, workspaces, and IdP groups). Designed for automation and administration workflows.
5
5
  Author-email: "Marcos E. Mercado" <marcos_elias@hotmail.com>
6
6
  Keywords: slack,objects,classes,slack objects,utilities,slack utilities,slack object types,slack types,types
@@ -23,7 +23,7 @@ Dynamic: license-file
23
23
 
24
24
  A focused Python package for working with **Slack objects** commonly used in administration and automation workflows.
25
25
 
26
- `slack-objects` provides **opinionated, testable wrappers** around the Slack Web API, Admin API, and SCIM API—favoring object-based access over raw endpoint calls.
26
+ `slack-objects` provides **opinionated, testable wrappers** around the Slack Web API, Admin API, SCIM API, and Discovery API—favoring object-based access over raw endpoint calls.
27
27
 
28
28
  ---
29
29
 
@@ -55,7 +55,7 @@ Instead, it focuses on higher-level object operations that typically require:
55
55
  - multiple API calls
56
56
  - pagination
57
57
  - rate limiting
58
- - Admin API or SCIM usage
58
+ - Admin API, SCIM, or Discovery API usage
59
59
  - non-trivial orchestration logic
60
60
 
61
61
  ---
@@ -73,7 +73,7 @@ cfg = SlackObjectsConfig(
73
73
  bot_token="xoxb-...",
74
74
  user_token="xoxp-...",
75
75
  scim_token="xoxp-...",
76
- # see SlackObjectsConfig for additional options (scim_base_url, http_timeout_seconds, etc.)
76
+ # see SlackObjectsConfig for additional options (team_id, scim_base_url, http_timeout_seconds, etc.)
77
77
  )
78
78
 
79
79
  slack = SlackObjectsClient(cfg)
@@ -139,6 +139,8 @@ The codebase is designed to be tested **without hitting Slack**.
139
139
 
140
140
  ## Installation
141
141
 
142
+ Requires **Python 3.9+**.
143
+
142
144
  ```bash
143
145
  pip install slack-objects
144
146
  ```
@@ -154,7 +156,8 @@ cfg = SlackObjectsConfig(
154
156
  bot_token="xoxb-...",
155
157
  user_token="xoxp-...",
156
158
  scim_token="xoxp-...",
157
- default_rate_tier=RateTier.TIER_3, # fallback sleep between API calls when no specific tier matches
159
+ team_id="T0123ABC", # workspace ID; required for org-wide tokens calling workspace-scoped Web APIs
160
+ default_rate_tier=RateTier.TIER_2, # fallback sleep between API calls when no specific tier matches (default)
158
161
  )
159
162
  ```
160
163
 
@@ -175,10 +178,23 @@ python -m tests.Smoke.run_all_smoke
175
178
 
176
179
  ---
177
180
 
181
+ ## Rate Limiting
182
+ All Slack Web/Admin API calls go through `SlackApiCaller`, which:
183
+
184
+ - Sleeps according to the resolved rate tier after every successful call
185
+ - Automatically retries on HTTP **429** (rate-limited) responses up to **5 times**, respecting the `Retry-After` header
186
+
187
+ Rate tiers are resolved in priority order:
188
+ explicit per-call tier → method-specific override → prefix rule → `default_rate_tier` from config.
189
+
190
+ ---
191
+
178
192
  ## Notes
179
193
 
180
194
  - SCIM v2 is the default; v1 is supported where applicable
181
- - `PC_Utils` is an optional dependency (used for datetime handling in `set_guest_expiration_date`)
195
+ - `PC_Utils` is a required dependency (used for datetime handling in `set_guest_expiration_date`)
182
196
  - This package is intended for automation and administration workflows
183
197
  - `resolve_user_id` accepts flexible identifiers (user ID, email, or @username) and verifies existence via Web API + SCIM fallback
184
198
  - `is_user_authorized` supports IdP-group-based authorization checks with configurable read/write access levels
199
+ - SCIM user operations are available on `Users`: create, deactivate, reactivate, update attributes, update email, and convert to multi-channel guest
200
+ - Discovery API is used for `Users.get_channels` and `Conversations.get_members` (requires appropriate token scopes)
File without changes
File without changes
File without changes
File without changes