hackerrank 2026.7.19__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.
hackerrank/__init__.py ADDED
@@ -0,0 +1 @@
1
+ """A library for the HackerRank for Work API."""
@@ -0,0 +1,349 @@
1
+ """TypedDict types describing raw HackerRank API response shapes."""
2
+
3
+ from typing import Any, NotRequired, TypedDict
4
+
5
+
6
+ class InterviewDict(TypedDict):
7
+ """A HackerRank interview."""
8
+
9
+ id: str
10
+ status: str
11
+ url: str
12
+ title: NotRequired[str]
13
+ feedback: NotRequired[str]
14
+ thumbs_up: NotRequired[int]
15
+ notes: NotRequired[str]
16
+ resume_url: NotRequired[str]
17
+ interviewers: NotRequired[list[str]]
18
+ result_url: NotRequired[str]
19
+ candidate: NotRequired[dict[str, Any]]
20
+ metadata: NotRequired[dict[str, Any]]
21
+ report_url: NotRequired[str]
22
+ ended_at: NotRequired[str]
23
+ interview_template_id: NotRequired[int]
24
+ created_at: NotRequired[str]
25
+ updated_at: NotRequired[str]
26
+ user: NotRequired[int]
27
+ send_email: NotRequired[bool]
28
+
29
+
30
+ class InterviewTranscriptMessageDict(TypedDict):
31
+ """A single message from an interview transcript."""
32
+
33
+ author: str
34
+ timestamp: int
35
+ text: str
36
+ candidate: bool
37
+ messageId: str
38
+ email: NotRequired[str]
39
+
40
+
41
+ class InterviewTranscriptDict(TypedDict):
42
+ """The transcript for an interview."""
43
+
44
+ messages: list[InterviewTranscriptMessageDict]
45
+
46
+
47
+ class InterviewTemplateDict(TypedDict):
48
+ """A HackerRank interview template."""
49
+
50
+ id: int
51
+ name: str
52
+ created_at: NotRequired[str]
53
+ status: NotRequired[int]
54
+ user: NotRequired[int]
55
+ roles: NotRequired[list[str]]
56
+ team_share: NotRequired[int]
57
+ questions: NotRequired[list[str]]
58
+ scorecard: NotRequired[int]
59
+ import_template: NotRequired[bool]
60
+ editor_access: NotRequired[bool]
61
+
62
+
63
+ class EnvironmentRuntimeDict(TypedDict):
64
+ """A runtime component for a project-question environment."""
65
+
66
+ name: str
67
+ version: str
68
+
69
+
70
+ class EnvironmentDict(TypedDict):
71
+ """A project-question environment."""
72
+
73
+ id: int
74
+ name: str
75
+ tags: list[str]
76
+ runtime: list[EnvironmentRuntimeDict]
77
+ active: NotRequired[bool]
78
+ sample_project_url: NotRequired[str]
79
+
80
+
81
+ class QuestionDict(TypedDict):
82
+ """A HackerRank question."""
83
+
84
+ id: str
85
+ unique_id: NotRequired[str]
86
+ type: str
87
+ owner: NotRequired[str]
88
+ created_at: NotRequired[str]
89
+ status: NotRequired[str]
90
+ internal_notes: NotRequired[str]
91
+ name: str
92
+ languages: NotRequired[list[str]]
93
+ problem_statement: NotRequired[str]
94
+ recommended_duration: NotRequired[int]
95
+ tags: NotRequired[list[str]]
96
+ max_score: NotRequired[float]
97
+ options: NotRequired[list[str]]
98
+ answer: NotRequired[int | list[int]]
99
+ test_case_count: NotRequired[int]
100
+ role_type: NotRequired[str]
101
+ environment_id: NotRequired[int]
102
+ file_url: NotRequired[str]
103
+ file_path: NotRequired[str]
104
+ has_valid_stacks: NotRequired[bool]
105
+ fullstack_project_details: NotRequired[dict[str, Any]]
106
+
107
+
108
+ class TestDict(TypedDict):
109
+ """A HackerRank test."""
110
+
111
+ id: str
112
+ unique_id: NotRequired[str]
113
+ name: str
114
+ starttime: NotRequired[str]
115
+ endtime: NotRequired[str]
116
+ duration: NotRequired[int]
117
+ owner: NotRequired[str]
118
+ instructions: NotRequired[str]
119
+ starred: NotRequired[bool]
120
+ created_at: NotRequired[str]
121
+ state: NotRequired[str]
122
+ locked: NotRequired[bool]
123
+ draft: NotRequired[bool]
124
+ languages: NotRequired[list[str]]
125
+ candidate_details: NotRequired[list[str]]
126
+ custom_acknowledge_text: NotRequired[str]
127
+ cutoff_score: NotRequired[int]
128
+ master_password: NotRequired[str]
129
+ hide_compile_test: NotRequired[bool]
130
+ tags: NotRequired[list[str]]
131
+ role_ids: NotRequired[list[str]]
132
+ experience: NotRequired[list[str]]
133
+ questions: NotRequired[list[str]]
134
+ sections: NotRequired[list[dict[str, Any]]]
135
+ mcq_incorrect_score: NotRequired[int]
136
+ mcq_correct_score: NotRequired[int]
137
+ locked_by: NotRequired[str]
138
+ short_login_url: NotRequired[str]
139
+ public_login_url: NotRequired[str]
140
+ shuffle_questions: NotRequired[bool]
141
+ test_admins: NotRequired[list[str]]
142
+ hide_template: NotRequired[bool]
143
+ enable_acknowledgement: NotRequired[bool]
144
+ enable_proctoring: NotRequired[bool]
145
+ enable_advanced_proctoring: NotRequired[bool]
146
+ enable_secure_assessment_mode: NotRequired[bool]
147
+ enable_ml_plagiarism_analysis: NotRequired[bool]
148
+ enable_photo_identification: NotRequired[bool]
149
+ ide_config: NotRequired[str]
150
+
151
+
152
+ class CandidateDetailDict(TypedDict):
153
+ """A custom candidate detail field."""
154
+
155
+ field_name: str
156
+ title: str
157
+ value: str
158
+
159
+
160
+ class TestCandidateDict(TypedDict):
161
+ """A candidate associated with a test."""
162
+
163
+ id: str
164
+ full_name: NotRequired[str]
165
+ email: str
166
+ score: NotRequired[float]
167
+ test: NotRequired[str]
168
+ user: NotRequired[str]
169
+ attempt_starttime: NotRequired[str]
170
+ attempt_endtime: NotRequired[str]
171
+ attempt_events: NotRequired[list[str]]
172
+ status: NotRequired[int]
173
+ ats_state: NotRequired[int]
174
+ integrity_status: NotRequired[str]
175
+ integrity_summary: NotRequired[str]
176
+ invite_email_done: NotRequired[bool]
177
+ invite_valid: NotRequired[bool]
178
+ invited_on: NotRequired[str]
179
+ invite_valid_from: NotRequired[str]
180
+ invite_valid_to: NotRequired[str]
181
+ invite_link: NotRequired[str]
182
+ invite_metadata: NotRequired[dict[str, Any]]
183
+ evaluator_email: NotRequired[str]
184
+ test_finish_url: NotRequired[str]
185
+ test_result_url: NotRequired[str]
186
+ accept_result_updates: NotRequired[bool]
187
+ tags: NotRequired[list[str]]
188
+ report_url: NotRequired[str]
189
+ authenticated_report_url: NotRequired[str]
190
+ pdf_url: NotRequired[str]
191
+ scores_tags_split: NotRequired[dict[str, Any]]
192
+ scores_skills_split: NotRequired[dict[str, Any]]
193
+ added_time: NotRequired[int]
194
+ unclaimed_added_time: NotRequired[int]
195
+ comments: NotRequired[dict[str, Any]]
196
+ performance_summary: NotRequired[str]
197
+ ip_address: NotRequired[str]
198
+ questions: NotRequired[dict[str, Any]]
199
+ plagiarism: NotRequired[dict[str, Any]]
200
+ plagiarism_status: NotRequired[bool]
201
+ max_code_similarity: NotRequired[dict[str, Any]]
202
+ feedback: NotRequired[str]
203
+ percentage_score: NotRequired[float]
204
+ candidate_details: NotRequired[list[CandidateDetailDict]]
205
+ out_of_window_events: NotRequired[int]
206
+ out_of_window_duration: NotRequired[float]
207
+ editor_paste_count: NotRequired[int]
208
+ proctor_images: NotRequired[list[str]]
209
+
210
+
211
+ class InviterDict(TypedDict):
212
+ """A user permitted to invite candidates to a test."""
213
+
214
+ id: str
215
+ email: str
216
+ firstname: NotRequired[str]
217
+ lastname: NotRequired[str]
218
+ role: NotRequired[str]
219
+ status: NotRequired[str]
220
+ phone: NotRequired[str]
221
+ timezone: NotRequired[str]
222
+ questions_permission: NotRequired[int]
223
+ tests_permission: NotRequired[int]
224
+ interviews_permission: NotRequired[int]
225
+ candidates_permission: NotRequired[int]
226
+ teams: NotRequired[list[str]]
227
+ candidates_invited: NotRequired[int]
228
+ activated: NotRequired[bool]
229
+
230
+
231
+ class UserDict(TypedDict):
232
+ """A HackerRank user."""
233
+
234
+ id: str
235
+ email: str
236
+ firstname: NotRequired[str]
237
+ lastname: NotRequired[str]
238
+ country: NotRequired[str]
239
+ role: NotRequired[str]
240
+ status: NotRequired[str]
241
+ phone: NotRequired[str]
242
+ timezone: NotRequired[str]
243
+ questions_permission: NotRequired[int]
244
+ tests_permission: NotRequired[int]
245
+ interviews_permission: NotRequired[int]
246
+ candidates_permission: NotRequired[int]
247
+ shared_questions_permission: NotRequired[int]
248
+ shared_tests_permission: NotRequired[int]
249
+ shared_interviews_permission: NotRequired[int]
250
+ shared_candidates_permission: NotRequired[int]
251
+ company_admin: NotRequired[bool]
252
+ team_admin: NotRequired[bool]
253
+ teams: NotRequired[list[str]]
254
+ activated: NotRequired[bool]
255
+ last_activity_time: NotRequired[str]
256
+
257
+
258
+ class TeamDict(TypedDict):
259
+ """A HackerRank team."""
260
+
261
+ id: str
262
+ name: str
263
+ owner: NotRequired[str]
264
+ created_at: NotRequired[str]
265
+ recruiter_count: NotRequired[int]
266
+ developer_count: NotRequired[int]
267
+ recruiter_cap: NotRequired[int]
268
+ developer_cap: NotRequired[int]
269
+ invite_as: NotRequired[str]
270
+ locations: NotRequired[list[str]]
271
+ departments: NotRequired[list[str]]
272
+
273
+
274
+ class UserTeamMembershipDict(TypedDict):
275
+ """A membership of a user in a team."""
276
+
277
+ team: str
278
+ user: str
279
+
280
+
281
+ class TemplateDict(TypedDict):
282
+ """An invite-email template."""
283
+
284
+ id: str
285
+ name: str
286
+ subject: NotRequired[str]
287
+ content: NotRequired[str]
288
+ default: NotRequired[bool]
289
+ created_at: NotRequired[str]
290
+ updated_at: NotRequired[str]
291
+ user: NotRequired[str]
292
+
293
+
294
+ class AuditLogDict(TypedDict):
295
+ """An audit log entry."""
296
+
297
+ source_id: int
298
+ source_type: str
299
+ user: NotRequired[str]
300
+ action: str
301
+ modified_fields: NotRequired[list[str]]
302
+ modified_values: NotRequired[dict[str, Any]]
303
+ ip_address: NotRequired[str]
304
+ created_at: NotRequired[str]
305
+
306
+
307
+ class ATSCodePairDict(TypedDict):
308
+ """Result of an ATS Codepair invite."""
309
+
310
+ title: NotRequired[str]
311
+ requisition_id: NotRequired[str]
312
+ candidate_id: NotRequired[str]
313
+ candidate: NotRequired[dict[str, Any]]
314
+ send_email: NotRequired[bool]
315
+ interview_metadata: NotRequired[dict[str, Any]]
316
+
317
+
318
+ class ATSCodeScreenDict(TypedDict):
319
+ """Result of an ATS CodeScreen invite."""
320
+
321
+ test_id: NotRequired[str]
322
+ requisition_id: NotRequired[str]
323
+ candidate_id: NotRequired[str]
324
+ email: NotRequired[str]
325
+ test_result_url: NotRequired[str]
326
+ accept_result_updates: NotRequired[bool]
327
+
328
+
329
+ class SCIMUserDict(TypedDict):
330
+ """A SCIM v2 user."""
331
+
332
+ id: str
333
+ userName: str
334
+ name: NotRequired[dict[str, Any]]
335
+ active: NotRequired[bool]
336
+ role: NotRequired[str]
337
+ team_admin: NotRequired[bool]
338
+ company_admin: NotRequired[bool]
339
+ emails: NotRequired[list[dict[str, Any]]]
340
+ schemas: NotRequired[list[str]]
341
+
342
+
343
+ class SCIMTeamDict(TypedDict):
344
+ """A SCIM v2 team."""
345
+
346
+ id: str
347
+ displayName: NotRequired[str]
348
+ diplayName: NotRequired[str]
349
+ schemas: NotRequired[list[str]]