skillforge-client 0.3.0__py3-none-any.whl

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 (147) hide show
  1. skillforge_client/__init__.py +8 -0
  2. skillforge_client/api/__init__.py +1 -0
  3. skillforge_client/api/auth/__init__.py +1 -0
  4. skillforge_client/api/auth/create_application_client_endpoint_api_v1_auth_clients_post.py +166 -0
  5. skillforge_client/api/auth/create_application_client_secret_endpoint_api_v1_auth_clients_client_id_secrets_post.py +182 -0
  6. skillforge_client/api/auth/create_token_api_v1_auth_token_post.py +165 -0
  7. skillforge_client/api/auth/grant_application_client_scopes_endpoint_api_v1_auth_clients_client_id_scopes_post.py +182 -0
  8. skillforge_client/api/auth/read_application_client_api_v1_auth_clients_client_id_get.py +161 -0
  9. skillforge_client/api/auth/read_application_clients_api_v1_auth_clients_get.py +133 -0
  10. skillforge_client/api/auth/revoke_application_client_scope_endpoint_api_v1_auth_clients_client_id_scopes_scope_key_delete.py +173 -0
  11. skillforge_client/api/auth/revoke_application_client_secret_endpoint_api_v1_auth_clients_client_id_secrets_secret_id_delete.py +174 -0
  12. skillforge_client/api/auth/update_application_client_endpoint_api_v1_auth_clients_client_id_patch.py +182 -0
  13. skillforge_client/api/bot/__init__.py +1 -0
  14. skillforge_client/api/bot/add_user_to_group_endpoint_api_v1_bot_users_discord_id_groups_group_key_put.py +199 -0
  15. skillforge_client/api/bot/cancel_operation_endpoint_api_v1_bot_operations_operation_id_cancel_post.py +203 -0
  16. skillforge_client/api/bot/check_authorization_endpoint_api_v1_bot_authz_check_post.py +206 -0
  17. skillforge_client/api/bot/claim_jobs_endpoint_api_v1_bot_jobs_claim_post.py +210 -0
  18. skillforge_client/api/bot/commit_student_activation_endpoint_api_v1_bot_students_activations_operation_id_commit_post.py +204 -0
  19. skillforge_client/api/bot/commit_student_deactivation_endpoint_api_v1_bot_students_guild_id_student_discord_id_deactivate_operation_id_commit_post.py +211 -0
  20. skillforge_client/api/bot/commit_student_pop_endpoint_api_v1_bot_students_guild_id_student_discord_id_pop_operation_id_commit_post.py +211 -0
  21. skillforge_client/api/bot/commit_student_stash_endpoint_api_v1_bot_students_guild_id_student_discord_id_stash_operation_id_commit_post.py +211 -0
  22. skillforge_client/api/bot/commit_tutor_activation_endpoint_api_v1_bot_tutors_activations_operation_id_commit_post.py +204 -0
  23. skillforge_client/api/bot/commit_tutor_deactivation_endpoint_api_v1_bot_tutors_guild_id_tutor_discord_id_deactivate_operation_id_commit_post.py +211 -0
  24. skillforge_client/api/bot/complete_job_endpoint_api_v1_bot_jobs_job_id_complete_post.py +183 -0
  25. skillforge_client/api/bot/deactivate_discord_account_endpoint_api_v1_bot_users_discord_id_account_delete.py +197 -0
  26. skillforge_client/api/bot/delete_command_env_endpoint_api_v1_bot_command_envs_guild_id_channel_id_kind_delete.py +204 -0
  27. skillforge_client/api/bot/fail_job_endpoint_api_v1_bot_jobs_job_id_fail_post.py +228 -0
  28. skillforge_client/api/bot/job_queue_summary_endpoint_api_v1_bot_jobs_summary_get.py +202 -0
  29. skillforge_client/api/bot/link_discord_account_endpoint_api_v1_bot_users_discord_id_account_put.py +227 -0
  30. skillforge_client/api/bot/list_jobs_endpoint_api_v1_bot_jobs_get.py +243 -0
  31. skillforge_client/api/bot/list_operations_endpoint_api_v1_bot_operations_get.py +302 -0
  32. skillforge_client/api/bot/prepare_student_activation_endpoint_api_v1_bot_students_activations_prepare_post.py +181 -0
  33. skillforge_client/api/bot/prepare_student_deactivation_endpoint_api_v1_bot_students_guild_id_student_discord_id_deactivate_prepare_post.py +190 -0
  34. skillforge_client/api/bot/prepare_student_pop_endpoint_api_v1_bot_students_guild_id_student_discord_id_pop_prepare_post.py +190 -0
  35. skillforge_client/api/bot/prepare_student_stash_endpoint_api_v1_bot_students_guild_id_student_discord_id_stash_prepare_post.py +190 -0
  36. skillforge_client/api/bot/prepare_tutor_activation_endpoint_api_v1_bot_tutors_activations_prepare_post.py +181 -0
  37. skillforge_client/api/bot/prepare_tutor_deactivation_endpoint_api_v1_bot_tutors_guild_id_tutor_discord_id_deactivate_prepare_post.py +190 -0
  38. skillforge_client/api/bot/read_job_api_v1_bot_jobs_job_id_get.py +186 -0
  39. skillforge_client/api/bot/read_operation_api_v1_bot_operations_operation_id_get.py +186 -0
  40. skillforge_client/api/bot/read_principal_api_v1_bot_runtime_principals_discord_id_get.py +177 -0
  41. skillforge_client/api/bot/read_principals_batch_api_v1_bot_runtime_principals_batch_post.py +189 -0
  42. skillforge_client/api/bot/read_student_context_api_v1_bot_runtime_students_guild_id_discord_id_get.py +191 -0
  43. skillforge_client/api/bot/read_student_contexts_batch_api_v1_bot_runtime_students_guild_id_batch_post.py +205 -0
  44. skillforge_client/api/bot/read_tutor_context_api_v1_bot_runtime_tutors_guild_id_discord_id_get.py +191 -0
  45. skillforge_client/api/bot/read_tutor_contexts_batch_api_v1_bot_runtime_tutors_guild_id_batch_post.py +205 -0
  46. skillforge_client/api/bot/remove_user_from_group_endpoint_api_v1_bot_users_discord_id_groups_group_key_delete.py +197 -0
  47. skillforge_client/api/bot/resolve_command_env_endpoint_api_v1_bot_runtime_command_envs_resolve_get.py +234 -0
  48. skillforge_client/api/bot/upsert_command_env_endpoint_api_v1_bot_command_envs_put.py +181 -0
  49. skillforge_client/api/bot/upsert_discord_user_endpoint_api_v1_bot_users_discord_id_put.py +213 -0
  50. skillforge_client/api/default/__init__.py +1 -0
  51. skillforge_client/api/default/root_get.py +81 -0
  52. skillforge_client/api/system/__init__.py +1 -0
  53. skillforge_client/api/system/dependencies_health_check_health_dependencies_get.py +136 -0
  54. skillforge_client/api/system/dependency_health_check_health_dependencies_dependency_name_get.py +170 -0
  55. skillforge_client/api/system/liveness_check_health_live_get.py +132 -0
  56. skillforge_client/api/system/system_health_check_health_get.py +136 -0
  57. skillforge_client/api/system/worker_health_check_health_workers_worker_name_get.py +170 -0
  58. skillforge_client/api/system/workers_health_check_health_workers_get.py +136 -0
  59. skillforge_client/client.py +268 -0
  60. skillforge_client/errors.py +16 -0
  61. skillforge_client/models/__init__.py +167 -0
  62. skillforge_client/models/access_token_response.py +85 -0
  63. skillforge_client/models/application_client_create_request.py +91 -0
  64. skillforge_client/models/application_client_response.py +149 -0
  65. skillforge_client/models/application_client_scope_grant_request.py +61 -0
  66. skillforge_client/models/application_client_secret_create_request.py +104 -0
  67. skillforge_client/models/application_client_secret_response.py +160 -0
  68. skillforge_client/models/application_client_status.py +9 -0
  69. skillforge_client/models/application_client_update_request.py +124 -0
  70. skillforge_client/models/authorization_check_request.py +78 -0
  71. skillforge_client/models/authorization_check_response.py +61 -0
  72. skillforge_client/models/body_create_token_api_v1_auth_token_post.py +123 -0
  73. skillforge_client/models/bot_job.py +119 -0
  74. skillforge_client/models/bot_job_payload.py +47 -0
  75. skillforge_client/models/bot_principal.py +148 -0
  76. skillforge_client/models/command_env_channel_response.py +100 -0
  77. skillforge_client/models/command_env_kind.py +9 -0
  78. skillforge_client/models/command_env_upsert_request.py +100 -0
  79. skillforge_client/models/contact_info_profile.py +92 -0
  80. skillforge_client/models/contact_info_type.py +9 -0
  81. skillforge_client/models/created_client_secret_response.py +75 -0
  82. skillforge_client/models/dependencies_health_check_response.py +77 -0
  83. skillforge_client/models/dependencies_health_check_response_checks.py +56 -0
  84. skillforge_client/models/dependency_health_check_response.py +72 -0
  85. skillforge_client/models/dependency_name.py +8 -0
  86. skillforge_client/models/discord_account_link_request.py +82 -0
  87. skillforge_client/models/discord_account_link_response.py +86 -0
  88. skillforge_client/models/discord_account_profile.py +77 -0
  89. skillforge_client/models/discord_id_batch_request.py +62 -0
  90. skillforge_client/models/discord_user_response.py +87 -0
  91. skillforge_client/models/discord_user_upsert_request.py +81 -0
  92. skillforge_client/models/error_response.py +61 -0
  93. skillforge_client/models/external_accounts_profile.py +124 -0
  94. skillforge_client/models/group_membership_response.py +69 -0
  95. skillforge_client/models/health_check_response.py +63 -0
  96. skillforge_client/models/health_status.py +10 -0
  97. skillforge_client/models/http_validation_error.py +79 -0
  98. skillforge_client/models/job_claim_request.py +113 -0
  99. skillforge_client/models/job_detail.py +239 -0
  100. skillforge_client/models/job_detail_payload.py +47 -0
  101. skillforge_client/models/job_fail_request.py +82 -0
  102. skillforge_client/models/job_kind_counts.py +92 -0
  103. skillforge_client/models/job_list_item.py +225 -0
  104. skillforge_client/models/job_page.py +100 -0
  105. skillforge_client/models/job_queue_summary.py +106 -0
  106. skillforge_client/models/job_response.py +187 -0
  107. skillforge_client/models/job_status.py +11 -0
  108. skillforge_client/models/job_status_counts.py +86 -0
  109. skillforge_client/models/member_role.py +10 -0
  110. skillforge_client/models/microsoft_account_profile.py +61 -0
  111. skillforge_client/models/operation_cancel_response.py +108 -0
  112. skillforge_client/models/operation_kind.py +13 -0
  113. skillforge_client/models/operation_page.py +100 -0
  114. skillforge_client/models/operation_response.py +257 -0
  115. skillforge_client/models/operation_response_plan.py +47 -0
  116. skillforge_client/models/operation_status.py +12 -0
  117. skillforge_client/models/operation_summary.py +243 -0
  118. skillforge_client/models/operational_profile.py +178 -0
  119. skillforge_client/models/party_relation_type.py +10 -0
  120. skillforge_client/models/person_profile.py +69 -0
  121. skillforge_client/models/principal_batch.py +84 -0
  122. skillforge_client/models/relation_profile.py +81 -0
  123. skillforge_client/models/relation_profile_direction.py +9 -0
  124. skillforge_client/models/student_activation_commit_request.py +61 -0
  125. skillforge_client/models/student_activation_prepare_request.py +77 -0
  126. skillforge_client/models/student_channel_state.py +9 -0
  127. skillforge_client/models/student_context.py +140 -0
  128. skillforge_client/models/student_context_batch.py +83 -0
  129. skillforge_client/models/system_health_check_response.py +87 -0
  130. skillforge_client/models/transition_commit_response.py +108 -0
  131. skillforge_client/models/transition_prepare_response.py +95 -0
  132. skillforge_client/models/transition_prepare_response_plan.py +47 -0
  133. skillforge_client/models/tutor_activation_commit_request.py +69 -0
  134. skillforge_client/models/tutor_activation_prepare_request.py +69 -0
  135. skillforge_client/models/tutor_context.py +99 -0
  136. skillforge_client/models/tutor_context_batch.py +83 -0
  137. skillforge_client/models/validation_error.py +123 -0
  138. skillforge_client/models/validation_error_context.py +47 -0
  139. skillforge_client/models/worker_health_check_response.py +72 -0
  140. skillforge_client/models/worker_name.py +8 -0
  141. skillforge_client/models/workers_health_check_response.py +77 -0
  142. skillforge_client/models/workers_health_check_response_checks.py +56 -0
  143. skillforge_client/py.typed +1 -0
  144. skillforge_client/types.py +54 -0
  145. skillforge_client-0.3.0.dist-info/METADATA +83 -0
  146. skillforge_client-0.3.0.dist-info/RECORD +147 -0
  147. skillforge_client-0.3.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,205 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ... import errors
8
+ from ...client import AuthenticatedClient, Client
9
+ from ...models.discord_id_batch_request import DiscordIdBatchRequest
10
+ from ...models.error_response import ErrorResponse
11
+ from ...models.http_validation_error import HTTPValidationError
12
+ from ...models.student_context_batch import StudentContextBatch
13
+ from ...types import Response
14
+
15
+
16
+ def _get_kwargs(
17
+ guild_id: int,
18
+ *,
19
+ body: DiscordIdBatchRequest,
20
+ ) -> dict[str, Any]:
21
+ headers: dict[str, Any] = {}
22
+
23
+ _kwargs: dict[str, Any] = {
24
+ "method": "post",
25
+ "url": "/api/v1/bot/runtime/students/{guild_id}/batch".format(
26
+ guild_id=quote(str(guild_id), safe=""),
27
+ ),
28
+ }
29
+
30
+ _kwargs["json"] = body.to_dict()
31
+
32
+ headers["Content-Type"] = "application/json"
33
+
34
+ _kwargs["headers"] = headers
35
+ return _kwargs
36
+
37
+
38
+ def _parse_response(
39
+ *, client: AuthenticatedClient | Client, response: httpx.Response
40
+ ) -> ErrorResponse | HTTPValidationError | StudentContextBatch | None:
41
+ if response.status_code == 200:
42
+ response_200 = StudentContextBatch.from_dict(response.json())
43
+
44
+ return response_200
45
+
46
+ if response.status_code == 401:
47
+ response_401 = ErrorResponse.from_dict(response.json())
48
+
49
+ return response_401
50
+
51
+ if response.status_code == 403:
52
+ response_403 = ErrorResponse.from_dict(response.json())
53
+
54
+ return response_403
55
+
56
+ if response.status_code == 422:
57
+ response_422 = HTTPValidationError.from_dict(response.json())
58
+
59
+ return response_422
60
+
61
+ if client.raise_on_unexpected_status:
62
+ raise errors.UnexpectedStatus(response.status_code, response.content)
63
+ else:
64
+ return None
65
+
66
+
67
+ def _build_response(
68
+ *, client: AuthenticatedClient | Client, response: httpx.Response
69
+ ) -> Response[ErrorResponse | HTTPValidationError | StudentContextBatch]:
70
+ return Response(
71
+ status_code=HTTPStatus(response.status_code),
72
+ content=response.content,
73
+ headers=response.headers,
74
+ parsed=_parse_response(client=client, response=response),
75
+ )
76
+
77
+
78
+ def sync_detailed(
79
+ guild_id: int,
80
+ *,
81
+ client: AuthenticatedClient,
82
+ body: DiscordIdBatchRequest,
83
+ ) -> Response[ErrorResponse | HTTPValidationError | StudentContextBatch]:
84
+ """Read Student Contexts Batch
85
+
86
+ Resolve many student contexts within one guild. Ids without a workspace are returned in `missing`.
87
+
88
+ Args:
89
+ guild_id (int):
90
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
91
+ the service boundary.
92
+
93
+ Raises:
94
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
95
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
96
+
97
+ Returns:
98
+ Response[ErrorResponse | HTTPValidationError | StudentContextBatch]
99
+ """
100
+
101
+ kwargs = _get_kwargs(
102
+ guild_id=guild_id,
103
+ body=body,
104
+ )
105
+
106
+ response = client.get_httpx_client().request(
107
+ **kwargs,
108
+ )
109
+
110
+ return _build_response(client=client, response=response)
111
+
112
+
113
+ def sync(
114
+ guild_id: int,
115
+ *,
116
+ client: AuthenticatedClient,
117
+ body: DiscordIdBatchRequest,
118
+ ) -> ErrorResponse | HTTPValidationError | StudentContextBatch | None:
119
+ """Read Student Contexts Batch
120
+
121
+ Resolve many student contexts within one guild. Ids without a workspace are returned in `missing`.
122
+
123
+ Args:
124
+ guild_id (int):
125
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
126
+ the service boundary.
127
+
128
+ Raises:
129
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
130
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
131
+
132
+ Returns:
133
+ ErrorResponse | HTTPValidationError | StudentContextBatch
134
+ """
135
+
136
+ return sync_detailed(
137
+ guild_id=guild_id,
138
+ client=client,
139
+ body=body,
140
+ ).parsed
141
+
142
+
143
+ async def asyncio_detailed(
144
+ guild_id: int,
145
+ *,
146
+ client: AuthenticatedClient,
147
+ body: DiscordIdBatchRequest,
148
+ ) -> Response[ErrorResponse | HTTPValidationError | StudentContextBatch]:
149
+ """Read Student Contexts Batch
150
+
151
+ Resolve many student contexts within one guild. Ids without a workspace are returned in `missing`.
152
+
153
+ Args:
154
+ guild_id (int):
155
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
156
+ the service boundary.
157
+
158
+ Raises:
159
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
160
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
161
+
162
+ Returns:
163
+ Response[ErrorResponse | HTTPValidationError | StudentContextBatch]
164
+ """
165
+
166
+ kwargs = _get_kwargs(
167
+ guild_id=guild_id,
168
+ body=body,
169
+ )
170
+
171
+ response = await client.get_async_httpx_client().request(**kwargs)
172
+
173
+ return _build_response(client=client, response=response)
174
+
175
+
176
+ async def asyncio(
177
+ guild_id: int,
178
+ *,
179
+ client: AuthenticatedClient,
180
+ body: DiscordIdBatchRequest,
181
+ ) -> ErrorResponse | HTTPValidationError | StudentContextBatch | None:
182
+ """Read Student Contexts Batch
183
+
184
+ Resolve many student contexts within one guild. Ids without a workspace are returned in `missing`.
185
+
186
+ Args:
187
+ guild_id (int):
188
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
189
+ the service boundary.
190
+
191
+ Raises:
192
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
193
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
194
+
195
+ Returns:
196
+ ErrorResponse | HTTPValidationError | StudentContextBatch
197
+ """
198
+
199
+ return (
200
+ await asyncio_detailed(
201
+ guild_id=guild_id,
202
+ client=client,
203
+ body=body,
204
+ )
205
+ ).parsed
@@ -0,0 +1,191 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ... import errors
8
+ from ...client import AuthenticatedClient, Client
9
+ from ...models.error_response import ErrorResponse
10
+ from ...models.http_validation_error import HTTPValidationError
11
+ from ...models.tutor_context import TutorContext
12
+ from ...types import Response
13
+
14
+
15
+ def _get_kwargs(
16
+ guild_id: int,
17
+ discord_id: int,
18
+ ) -> dict[str, Any]:
19
+
20
+ _kwargs: dict[str, Any] = {
21
+ "method": "get",
22
+ "url": "/api/v1/bot/runtime/tutors/{guild_id}/{discord_id}".format(
23
+ guild_id=quote(str(guild_id), safe=""),
24
+ discord_id=quote(str(discord_id), safe=""),
25
+ ),
26
+ }
27
+
28
+ return _kwargs
29
+
30
+
31
+ def _parse_response(
32
+ *, client: AuthenticatedClient | Client, response: httpx.Response
33
+ ) -> ErrorResponse | HTTPValidationError | TutorContext | None:
34
+ if response.status_code == 200:
35
+ response_200 = TutorContext.from_dict(response.json())
36
+
37
+ return response_200
38
+
39
+ if response.status_code == 401:
40
+ response_401 = ErrorResponse.from_dict(response.json())
41
+
42
+ return response_401
43
+
44
+ if response.status_code == 403:
45
+ response_403 = ErrorResponse.from_dict(response.json())
46
+
47
+ return response_403
48
+
49
+ if response.status_code == 404:
50
+ response_404 = ErrorResponse.from_dict(response.json())
51
+
52
+ return response_404
53
+
54
+ if response.status_code == 422:
55
+ response_422 = HTTPValidationError.from_dict(response.json())
56
+
57
+ return response_422
58
+
59
+ if client.raise_on_unexpected_status:
60
+ raise errors.UnexpectedStatus(response.status_code, response.content)
61
+ else:
62
+ return None
63
+
64
+
65
+ def _build_response(
66
+ *, client: AuthenticatedClient | Client, response: httpx.Response
67
+ ) -> Response[ErrorResponse | HTTPValidationError | TutorContext]:
68
+ return Response(
69
+ status_code=HTTPStatus(response.status_code),
70
+ content=response.content,
71
+ headers=response.headers,
72
+ parsed=_parse_response(client=client, response=response),
73
+ )
74
+
75
+
76
+ def sync_detailed(
77
+ guild_id: int,
78
+ discord_id: int,
79
+ *,
80
+ client: AuthenticatedClient,
81
+ ) -> Response[ErrorResponse | HTTPValidationError | TutorContext]:
82
+ """Read Tutor Context
83
+
84
+ Args:
85
+ guild_id (int):
86
+ discord_id (int):
87
+
88
+ Raises:
89
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
90
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
91
+
92
+ Returns:
93
+ Response[ErrorResponse | HTTPValidationError | TutorContext]
94
+ """
95
+
96
+ kwargs = _get_kwargs(
97
+ guild_id=guild_id,
98
+ discord_id=discord_id,
99
+ )
100
+
101
+ response = client.get_httpx_client().request(
102
+ **kwargs,
103
+ )
104
+
105
+ return _build_response(client=client, response=response)
106
+
107
+
108
+ def sync(
109
+ guild_id: int,
110
+ discord_id: int,
111
+ *,
112
+ client: AuthenticatedClient,
113
+ ) -> ErrorResponse | HTTPValidationError | TutorContext | None:
114
+ """Read Tutor Context
115
+
116
+ Args:
117
+ guild_id (int):
118
+ discord_id (int):
119
+
120
+ Raises:
121
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
122
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
123
+
124
+ Returns:
125
+ ErrorResponse | HTTPValidationError | TutorContext
126
+ """
127
+
128
+ return sync_detailed(
129
+ guild_id=guild_id,
130
+ discord_id=discord_id,
131
+ client=client,
132
+ ).parsed
133
+
134
+
135
+ async def asyncio_detailed(
136
+ guild_id: int,
137
+ discord_id: int,
138
+ *,
139
+ client: AuthenticatedClient,
140
+ ) -> Response[ErrorResponse | HTTPValidationError | TutorContext]:
141
+ """Read Tutor Context
142
+
143
+ Args:
144
+ guild_id (int):
145
+ discord_id (int):
146
+
147
+ Raises:
148
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
149
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
150
+
151
+ Returns:
152
+ Response[ErrorResponse | HTTPValidationError | TutorContext]
153
+ """
154
+
155
+ kwargs = _get_kwargs(
156
+ guild_id=guild_id,
157
+ discord_id=discord_id,
158
+ )
159
+
160
+ response = await client.get_async_httpx_client().request(**kwargs)
161
+
162
+ return _build_response(client=client, response=response)
163
+
164
+
165
+ async def asyncio(
166
+ guild_id: int,
167
+ discord_id: int,
168
+ *,
169
+ client: AuthenticatedClient,
170
+ ) -> ErrorResponse | HTTPValidationError | TutorContext | None:
171
+ """Read Tutor Context
172
+
173
+ Args:
174
+ guild_id (int):
175
+ discord_id (int):
176
+
177
+ Raises:
178
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
179
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
180
+
181
+ Returns:
182
+ ErrorResponse | HTTPValidationError | TutorContext
183
+ """
184
+
185
+ return (
186
+ await asyncio_detailed(
187
+ guild_id=guild_id,
188
+ discord_id=discord_id,
189
+ client=client,
190
+ )
191
+ ).parsed
@@ -0,0 +1,205 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ... import errors
8
+ from ...client import AuthenticatedClient, Client
9
+ from ...models.discord_id_batch_request import DiscordIdBatchRequest
10
+ from ...models.error_response import ErrorResponse
11
+ from ...models.http_validation_error import HTTPValidationError
12
+ from ...models.tutor_context_batch import TutorContextBatch
13
+ from ...types import Response
14
+
15
+
16
+ def _get_kwargs(
17
+ guild_id: int,
18
+ *,
19
+ body: DiscordIdBatchRequest,
20
+ ) -> dict[str, Any]:
21
+ headers: dict[str, Any] = {}
22
+
23
+ _kwargs: dict[str, Any] = {
24
+ "method": "post",
25
+ "url": "/api/v1/bot/runtime/tutors/{guild_id}/batch".format(
26
+ guild_id=quote(str(guild_id), safe=""),
27
+ ),
28
+ }
29
+
30
+ _kwargs["json"] = body.to_dict()
31
+
32
+ headers["Content-Type"] = "application/json"
33
+
34
+ _kwargs["headers"] = headers
35
+ return _kwargs
36
+
37
+
38
+ def _parse_response(
39
+ *, client: AuthenticatedClient | Client, response: httpx.Response
40
+ ) -> ErrorResponse | HTTPValidationError | TutorContextBatch | None:
41
+ if response.status_code == 200:
42
+ response_200 = TutorContextBatch.from_dict(response.json())
43
+
44
+ return response_200
45
+
46
+ if response.status_code == 401:
47
+ response_401 = ErrorResponse.from_dict(response.json())
48
+
49
+ return response_401
50
+
51
+ if response.status_code == 403:
52
+ response_403 = ErrorResponse.from_dict(response.json())
53
+
54
+ return response_403
55
+
56
+ if response.status_code == 422:
57
+ response_422 = HTTPValidationError.from_dict(response.json())
58
+
59
+ return response_422
60
+
61
+ if client.raise_on_unexpected_status:
62
+ raise errors.UnexpectedStatus(response.status_code, response.content)
63
+ else:
64
+ return None
65
+
66
+
67
+ def _build_response(
68
+ *, client: AuthenticatedClient | Client, response: httpx.Response
69
+ ) -> Response[ErrorResponse | HTTPValidationError | TutorContextBatch]:
70
+ return Response(
71
+ status_code=HTTPStatus(response.status_code),
72
+ content=response.content,
73
+ headers=response.headers,
74
+ parsed=_parse_response(client=client, response=response),
75
+ )
76
+
77
+
78
+ def sync_detailed(
79
+ guild_id: int,
80
+ *,
81
+ client: AuthenticatedClient,
82
+ body: DiscordIdBatchRequest,
83
+ ) -> Response[ErrorResponse | HTTPValidationError | TutorContextBatch]:
84
+ """Read Tutor Contexts Batch
85
+
86
+ Resolve many tutor contexts within one guild. Ids without a workspace are returned in `missing`.
87
+
88
+ Args:
89
+ guild_id (int):
90
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
91
+ the service boundary.
92
+
93
+ Raises:
94
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
95
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
96
+
97
+ Returns:
98
+ Response[ErrorResponse | HTTPValidationError | TutorContextBatch]
99
+ """
100
+
101
+ kwargs = _get_kwargs(
102
+ guild_id=guild_id,
103
+ body=body,
104
+ )
105
+
106
+ response = client.get_httpx_client().request(
107
+ **kwargs,
108
+ )
109
+
110
+ return _build_response(client=client, response=response)
111
+
112
+
113
+ def sync(
114
+ guild_id: int,
115
+ *,
116
+ client: AuthenticatedClient,
117
+ body: DiscordIdBatchRequest,
118
+ ) -> ErrorResponse | HTTPValidationError | TutorContextBatch | None:
119
+ """Read Tutor Contexts Batch
120
+
121
+ Resolve many tutor contexts within one guild. Ids without a workspace are returned in `missing`.
122
+
123
+ Args:
124
+ guild_id (int):
125
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
126
+ the service boundary.
127
+
128
+ Raises:
129
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
130
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
131
+
132
+ Returns:
133
+ ErrorResponse | HTTPValidationError | TutorContextBatch
134
+ """
135
+
136
+ return sync_detailed(
137
+ guild_id=guild_id,
138
+ client=client,
139
+ body=body,
140
+ ).parsed
141
+
142
+
143
+ async def asyncio_detailed(
144
+ guild_id: int,
145
+ *,
146
+ client: AuthenticatedClient,
147
+ body: DiscordIdBatchRequest,
148
+ ) -> Response[ErrorResponse | HTTPValidationError | TutorContextBatch]:
149
+ """Read Tutor Contexts Batch
150
+
151
+ Resolve many tutor contexts within one guild. Ids without a workspace are returned in `missing`.
152
+
153
+ Args:
154
+ guild_id (int):
155
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
156
+ the service boundary.
157
+
158
+ Raises:
159
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
160
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
161
+
162
+ Returns:
163
+ Response[ErrorResponse | HTTPValidationError | TutorContextBatch]
164
+ """
165
+
166
+ kwargs = _get_kwargs(
167
+ guild_id=guild_id,
168
+ body=body,
169
+ )
170
+
171
+ response = await client.get_async_httpx_client().request(**kwargs)
172
+
173
+ return _build_response(client=client, response=response)
174
+
175
+
176
+ async def asyncio(
177
+ guild_id: int,
178
+ *,
179
+ client: AuthenticatedClient,
180
+ body: DiscordIdBatchRequest,
181
+ ) -> ErrorResponse | HTTPValidationError | TutorContextBatch | None:
182
+ """Read Tutor Contexts Batch
183
+
184
+ Resolve many tutor contexts within one guild. Ids without a workspace are returned in `missing`.
185
+
186
+ Args:
187
+ guild_id (int):
188
+ body (DiscordIdBatchRequest): A bounded batch of discord ids to resolve. De-duplicated at
189
+ the service boundary.
190
+
191
+ Raises:
192
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
193
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
194
+
195
+ Returns:
196
+ ErrorResponse | HTTPValidationError | TutorContextBatch
197
+ """
198
+
199
+ return (
200
+ await asyncio_detailed(
201
+ guild_id=guild_id,
202
+ client=client,
203
+ body=body,
204
+ )
205
+ ).parsed