@in-human-resources/backend-proto 0.1.3 → 0.1.4
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.
- package/README.md +85 -84
- package/api/v1/auth.proto +11 -2
- package/api/v1/candidate.proto +8 -1
- package/api/v1/common.proto +3 -0
- package/api/v1/company.proto +8 -1
- package/api/v1/hiring.proto +326 -0
- package/auth/v1/service.proto +824 -824
- package/common/v1/common.proto +10 -10
- package/gen/ts/api/v1/auth_connect.ts +8 -2
- package/gen/ts/api/v1/candidate_connect.ts +6 -1
- package/gen/ts/api/v1/company_connect.ts +6 -1
- package/gen/ts/api/v1/hiring_connect.ts +235 -0
- package/gen/ts/api/v1/hiring_pb.ts +2061 -0
- package/gen/ts/auth/v1/service_connect.ts +14 -14
- package/gen/ts/auth/v1/service_pb.ts +5 -5
- package/gen/ts/hiring/v1/service_connect.ts +191 -0
- package/gen/ts/hiring/v1/service_pb.ts +2079 -0
- package/hiring/v1/service.proto +291 -0
- package/package.json +3 -2
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package hiring.v1;
|
|
4
|
+
|
|
5
|
+
option go_package = "github.com/InHuman-Resources/Backend/Go/proto/gen/hiring/v1;hiringv1";
|
|
6
|
+
|
|
7
|
+
// HiringService is the private hiring API for the API gateway and approved internal callers
|
|
8
|
+
// (e.g. workflow in M2). Product clients must use api.v1.HiringService on the gateway.
|
|
9
|
+
service HiringService {
|
|
10
|
+
rpc CreateJob(CreateJobRequest) returns (CreateJobResponse);
|
|
11
|
+
rpc PublishJob(PublishJobRequest) returns (PublishJobResponse);
|
|
12
|
+
rpc ApplyToJob(ApplyToJobRequest) returns (ApplyToJobResponse);
|
|
13
|
+
rpc GetJob(GetJobRequest) returns (GetJobResponse);
|
|
14
|
+
rpc GetApplication(GetApplicationRequest) returns (GetApplicationResponse);
|
|
15
|
+
|
|
16
|
+
rpc ListJobs(ListJobsRequest) returns (ListJobsResponse);
|
|
17
|
+
rpc SearchJobs(SearchJobsRequest) returns (SearchJobsResponse);
|
|
18
|
+
rpc UpdateJob(UpdateJobRequest) returns (UpdateJobResponse);
|
|
19
|
+
rpc CloseJob(CloseJobRequest) returns (CloseJobResponse);
|
|
20
|
+
|
|
21
|
+
rpc ListApplications(ListApplicationsRequest) returns (ListApplicationsResponse);
|
|
22
|
+
rpc ListApplicationsForJob(ListApplicationsForJobRequest) returns (ListApplicationsForJobResponse);
|
|
23
|
+
rpc ListApplicationsForCandidate(ListApplicationsForCandidateRequest) returns (ListApplicationsForCandidateResponse);
|
|
24
|
+
|
|
25
|
+
rpc TransitionApplicationStage(TransitionApplicationStageRequest) returns (TransitionApplicationStageResponse);
|
|
26
|
+
rpc RecordRecruiterDecision(RecordRecruiterDecisionRequest) returns (RecordRecruiterDecisionResponse);
|
|
27
|
+
rpc RecordScreeningResult(RecordScreeningResultRequest) returns (RecordScreeningResultResponse);
|
|
28
|
+
rpc RecordInterview(RecordInterviewRequest) returns (RecordInterviewResponse);
|
|
29
|
+
rpc LinkAssessment(LinkAssessmentRequest) returns (LinkAssessmentResponse);
|
|
30
|
+
rpc RecordOffer(RecordOfferRequest) returns (RecordOfferResponse);
|
|
31
|
+
rpc ListApplicationEvents(ListApplicationEventsRequest) returns (ListApplicationEventsResponse);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// --- Pagination ---
|
|
35
|
+
|
|
36
|
+
message PageRequest {
|
|
37
|
+
int32 page_size = 1; // default 20, max 100
|
|
38
|
+
string page_token = 2; // opaque; empty for first page
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
message PageResponse {
|
|
42
|
+
string next_page_token = 1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// --- Jobs ---
|
|
46
|
+
|
|
47
|
+
message CreateJobRequest {
|
|
48
|
+
string title = 1;
|
|
49
|
+
string description = 2;
|
|
50
|
+
string public_slug = 3;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
message CreateJobResponse {
|
|
54
|
+
string job_id = 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
message PublishJobRequest {
|
|
58
|
+
string job_id = 1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
message PublishJobResponse {
|
|
62
|
+
string status = 1;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
message GetJobRequest {
|
|
66
|
+
string job_id = 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
message Job {
|
|
70
|
+
string job_id = 1;
|
|
71
|
+
string company_id = 2;
|
|
72
|
+
string title = 3;
|
|
73
|
+
string description = 4;
|
|
74
|
+
string status = 5;
|
|
75
|
+
string public_slug = 6;
|
|
76
|
+
string requirements = 7;
|
|
77
|
+
string team_metadata_json = 8;
|
|
78
|
+
string created_at = 9;
|
|
79
|
+
string updated_at = 10;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
message GetJobResponse {
|
|
83
|
+
string job_id = 1;
|
|
84
|
+
string company_id = 2;
|
|
85
|
+
string title = 3;
|
|
86
|
+
string description = 4;
|
|
87
|
+
string status = 5;
|
|
88
|
+
string public_slug = 6;
|
|
89
|
+
string requirements = 7;
|
|
90
|
+
string team_metadata_json = 8;
|
|
91
|
+
string created_at = 9;
|
|
92
|
+
string updated_at = 10;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
message ListJobsRequest {
|
|
96
|
+
string status_filter = 1; // empty = all for company
|
|
97
|
+
PageRequest page = 2;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
message ListJobsResponse {
|
|
101
|
+
repeated Job jobs = 1;
|
|
102
|
+
PageResponse page = 2;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
message SearchJobsRequest {
|
|
106
|
+
string query = 1;
|
|
107
|
+
PageRequest page = 2;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
message SearchJobsResponse {
|
|
111
|
+
repeated Job jobs = 1;
|
|
112
|
+
PageResponse page = 2;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
message UpdateJobRequest {
|
|
116
|
+
string job_id = 1;
|
|
117
|
+
string title = 2;
|
|
118
|
+
string description = 3;
|
|
119
|
+
string public_slug = 4;
|
|
120
|
+
string requirements = 5;
|
|
121
|
+
string team_metadata_json = 6;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
message UpdateJobResponse {
|
|
125
|
+
Job job = 1;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
message CloseJobRequest {
|
|
129
|
+
string job_id = 1;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
message CloseJobResponse {
|
|
133
|
+
string status = 1;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// --- Applications ---
|
|
137
|
+
|
|
138
|
+
message ApplyToJobRequest {
|
|
139
|
+
string job_id = 1;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
message ApplyToJobResponse {
|
|
143
|
+
string application_id = 1;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
message Application {
|
|
147
|
+
string application_id = 1;
|
|
148
|
+
string job_id = 2;
|
|
149
|
+
string candidate_user_id = 3;
|
|
150
|
+
string current_stage = 4;
|
|
151
|
+
string applied_at = 5;
|
|
152
|
+
string job_title = 6;
|
|
153
|
+
string company_id = 7;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
message GetApplicationRequest {
|
|
157
|
+
string application_id = 1;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
message GetApplicationResponse {
|
|
161
|
+
string application_id = 1;
|
|
162
|
+
string job_id = 2;
|
|
163
|
+
string candidate_user_id = 3;
|
|
164
|
+
string current_stage = 4;
|
|
165
|
+
string applied_at = 5;
|
|
166
|
+
string requirements = 6;
|
|
167
|
+
string team_metadata_json = 7;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
message ListApplicationsRequest {
|
|
171
|
+
string status_filter = 1; // filter by job status or application stage — optional stage substring
|
|
172
|
+
string stage_filter = 2;
|
|
173
|
+
PageRequest page = 3;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
message ListApplicationsResponse {
|
|
177
|
+
repeated Application applications = 1;
|
|
178
|
+
PageResponse page = 2;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
message ListApplicationsForJobRequest {
|
|
182
|
+
string job_id = 1;
|
|
183
|
+
PageRequest page = 2;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
message ListApplicationsForJobResponse {
|
|
187
|
+
repeated Application applications = 1;
|
|
188
|
+
PageResponse page = 2;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
message ListApplicationsForCandidateRequest {
|
|
192
|
+
// If empty, hiring uses candidate user id from verified token (recommended for gateway).
|
|
193
|
+
string candidate_user_id = 1;
|
|
194
|
+
PageRequest page = 2;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
message ListApplicationsForCandidateResponse {
|
|
198
|
+
repeated Application applications = 1;
|
|
199
|
+
PageResponse page = 2;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// --- Pipeline ---
|
|
203
|
+
|
|
204
|
+
message TransitionApplicationStageRequest {
|
|
205
|
+
string application_id = 1;
|
|
206
|
+
string target_stage = 2;
|
|
207
|
+
string reason = 3;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
message TransitionApplicationStageResponse {
|
|
211
|
+
string current_stage = 1;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
message RecordRecruiterDecisionRequest {
|
|
215
|
+
string application_id = 1;
|
|
216
|
+
string stage_context = 2;
|
|
217
|
+
string outcome = 3;
|
|
218
|
+
string reasoning = 4;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
message RecordRecruiterDecisionResponse {
|
|
222
|
+
string decision_id = 1;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
message RecordScreeningResultRequest {
|
|
226
|
+
string application_id = 1;
|
|
227
|
+
double score = 2;
|
|
228
|
+
string explanation = 3;
|
|
229
|
+
string skill_extractions_json = 4;
|
|
230
|
+
string source_model_id = 5;
|
|
231
|
+
string raw_output_ref = 6;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
message RecordScreeningResultResponse {
|
|
235
|
+
string screening_result_id = 1;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
message RecordInterviewRequest {
|
|
239
|
+
string application_id = 1;
|
|
240
|
+
string scheduled_at = 2; // RFC3339 or empty
|
|
241
|
+
string actual_at = 3;
|
|
242
|
+
string notes = 4;
|
|
243
|
+
string transcript_ref = 5;
|
|
244
|
+
string structured_scores_json = 6;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
message RecordInterviewResponse {
|
|
248
|
+
string interview_record_id = 1;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
message LinkAssessmentRequest {
|
|
252
|
+
string application_id = 1;
|
|
253
|
+
string external_assessment_id = 2;
|
|
254
|
+
string status = 3;
|
|
255
|
+
string score_summary = 4;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
message LinkAssessmentResponse {
|
|
259
|
+
string assessment_link_id = 1;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
message RecordOfferRequest {
|
|
263
|
+
string application_id = 1;
|
|
264
|
+
string terms = 2;
|
|
265
|
+
string status = 3;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
message RecordOfferResponse {
|
|
269
|
+
string offer_id = 1;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
message ApplicationEvent {
|
|
273
|
+
string event_id = 1;
|
|
274
|
+
string application_id = 2;
|
|
275
|
+
string from_stage = 3;
|
|
276
|
+
string to_stage = 4;
|
|
277
|
+
string actor_type = 5;
|
|
278
|
+
string actor_user_id = 6;
|
|
279
|
+
string metadata_json = 7;
|
|
280
|
+
string created_at = 8;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
message ListApplicationEventsRequest {
|
|
284
|
+
string application_id = 1;
|
|
285
|
+
PageRequest page = 2;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
message ListApplicationEventsResponse {
|
|
289
|
+
repeated ApplicationEvent events = 1;
|
|
290
|
+
PageResponse page = 2;
|
|
291
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@in-human-resources/backend-proto",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Protobuf-ES and Connect-ES generated clients for api.v1, auth.v1, and common.v1",
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "Protobuf-ES and Connect-ES generated clients for api.v1, auth.v1, hiring.v1, and common.v1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"sideEffects": false,
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"gen/ts",
|
|
10
10
|
"api",
|
|
11
11
|
"auth",
|
|
12
|
+
"hiring",
|
|
12
13
|
"common",
|
|
13
14
|
"buf.yaml",
|
|
14
15
|
"buf.gen.yaml"
|