@snokam/mcp-api 2.49.0 → 2.51.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snokam/mcp-api",
3
- "version": "2.49.0",
3
+ "version": "2.51.0",
4
4
  "description": "MCP server exposing Snokam backend APIs as tools for Claude Code and other MCP clients",
5
5
  "type": "module",
6
6
  "bin": {
@@ -318,6 +318,91 @@
318
318
  ]
319
319
  }
320
320
  },
321
+ "/v1.0/protected/candidates/{id}/onboard-full/stream": {
322
+ "post": {
323
+ "tags": [
324
+ "Candidates"
325
+ ],
326
+ "summary": "Run the onboarding chain with a live SSE event feed",
327
+ "description": "Same chain as /onboard-full but streams Server-Sent Events (`event: step`) as each step starts (`status:running`) and finishes (`succeeded`/`failed`). Closes with `event: done`. Frontend uses fetch streaming so we can pass a Bearer token; EventSource doesn't support custom headers.",
328
+ "operationId": "OnboardCandidateFullStream",
329
+ "parameters": [
330
+ {
331
+ "name": "id",
332
+ "in": "path",
333
+ "required": true,
334
+ "schema": {
335
+ "type": "string"
336
+ }
337
+ }
338
+ ],
339
+ "responses": {
340
+ "200": {
341
+ "description": "No description",
342
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
343
+ }
344
+ },
345
+ "security": [
346
+ {
347
+ "Implicit": [
348
+ "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
349
+ ]
350
+ }
351
+ ]
352
+ }
353
+ },
354
+ "/v1.0/protected/candidates/{id}/onboard-full": {
355
+ "post": {
356
+ "tags": [
357
+ "Candidates"
358
+ ],
359
+ "summary": "Run the full automated onboarding chain",
360
+ "description": "Provisions the candidate's Microsoft 365 user, then triggers an Azure AD → Sanity sync to create the matching employee doc. Returns one OnboardingResult row per step so the admin UI can render a live timeline.",
361
+ "operationId": "OnboardCandidateFull",
362
+ "parameters": [
363
+ {
364
+ "name": "id",
365
+ "in": "path",
366
+ "required": true,
367
+ "schema": {
368
+ "type": "string"
369
+ },
370
+ "x-ms-summary": "Candidate Sanity id"
371
+ }
372
+ ],
373
+ "responses": {
374
+ "200": {
375
+ "description": "Per-step results",
376
+ "content": {
377
+ "application/json": {
378
+ "schema": {
379
+ "type": "array",
380
+ "items": {
381
+ "$ref": "#/components/schemas/onboardingResult"
382
+ }
383
+ }
384
+ }
385
+ },
386
+ "x-ms-summary": "Success"
387
+ },
388
+ "401": {
389
+ "description": "No description",
390
+ "x-ms-summary": "Unauthorized"
391
+ },
392
+ "404": {
393
+ "description": "No description",
394
+ "x-ms-summary": "Not Found"
395
+ }
396
+ },
397
+ "security": [
398
+ {
399
+ "Implicit": [
400
+ "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
401
+ ]
402
+ }
403
+ ]
404
+ }
405
+ },
321
406
  "/v1.0/protected/candidates/{id}/reject": {
322
407
  "post": {
323
408
  "tags": [
@@ -991,6 +1076,9 @@
991
1076
  "onboardingResult": {
992
1077
  "type": "object",
993
1078
  "properties": {
1079
+ "step": {
1080
+ "type": "string"
1081
+ },
994
1082
  "status": {
995
1083
  "type": "string"
996
1084
  },
@@ -1089,27 +1177,13 @@
1089
1177
  "type": "string",
1090
1178
  "default": "CREATED"
1091
1179
  },
1092
- "tShirtSize": {
1093
- "enum": [
1094
- "L",
1095
- "M",
1096
- "S",
1097
- "XL",
1098
- "XS",
1099
- "XXL"
1100
- ],
1101
- "type": "string",
1102
- "default": "L",
1103
- "nullable": true
1104
- },
1105
1180
  "track": {
1106
1181
  "enum": [
1107
1182
  "data_engineer",
1108
1183
  "developer"
1109
1184
  ],
1110
1185
  "type": "string",
1111
- "default": "data_engineer",
1112
- "nullable": true
1186
+ "default": "data_engineer"
1113
1187
  },
1114
1188
  "address": {
1115
1189
  "$ref": "#/components/schemas/sanityCandidateAddress"
@@ -1138,6 +1212,9 @@
1138
1212
  "fromApplication": {
1139
1213
  "type": "boolean"
1140
1214
  },
1215
+ "githubUsername": {
1216
+ "type": "string"
1217
+ },
1141
1218
  "grades": {
1142
1219
  "$ref": "#/components/schemas/sanityCandidateGrades"
1143
1220
  },
@@ -1658,19 +1735,6 @@
1658
1735
  "default": "CREATED",
1659
1736
  "nullable": true
1660
1737
  },
1661
- "tShirtSize": {
1662
- "enum": [
1663
- "XS",
1664
- "S",
1665
- "M",
1666
- "L",
1667
- "XL",
1668
- "XXL"
1669
- ],
1670
- "type": "string",
1671
- "default": "XS",
1672
- "nullable": true
1673
- },
1674
1738
  "track": {
1675
1739
  "enum": [
1676
1740
  "developer",
@@ -1708,6 +1772,9 @@
1708
1772
  "type": "boolean",
1709
1773
  "nullable": true
1710
1774
  },
1775
+ "githubUsername": {
1776
+ "type": "string"
1777
+ },
1711
1778
  "grades": {
1712
1779
  "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
1713
1780
  },
@@ -29794,6 +29794,9 @@
29794
29794
  },
29795
29795
  "SanityCandidate": {
29796
29796
  "properties": {
29797
+ "githubUsername": {
29798
+ "type": "string"
29799
+ },
29797
29800
  "bankAccount": {
29798
29801
  "type": "string"
29799
29802
  },
@@ -30750,6 +30753,7 @@
30750
30753
  "grades",
30751
30754
  "cv",
30752
30755
  "applicationLetter",
30756
+ "track",
30753
30757
  "status",
30754
30758
  "candidate",
30755
30759
  "sanityRev",
@@ -31101,6 +31105,10 @@
31101
31105
  "bankAccount": {
31102
31106
  "type": "string",
31103
31107
  "nullable": true
31108
+ },
31109
+ "githubUsername": {
31110
+ "type": "string",
31111
+ "nullable": true
31104
31112
  }
31105
31113
  },
31106
31114
  "type": "object",
@@ -318,6 +318,91 @@
318
318
  ]
319
319
  }
320
320
  },
321
+ "/v1.0/protected/candidates/{id}/onboard-full/stream": {
322
+ "post": {
323
+ "tags": [
324
+ "Candidates"
325
+ ],
326
+ "summary": "Run the onboarding chain with a live SSE event feed",
327
+ "description": "Same chain as /onboard-full but streams Server-Sent Events (`event: step`) as each step starts (`status:running`) and finishes (`succeeded`/`failed`). Closes with `event: done`. Frontend uses fetch streaming so we can pass a Bearer token; EventSource doesn't support custom headers.",
328
+ "operationId": "OnboardCandidateFullStream",
329
+ "parameters": [
330
+ {
331
+ "name": "id",
332
+ "in": "path",
333
+ "required": true,
334
+ "schema": {
335
+ "type": "string"
336
+ }
337
+ }
338
+ ],
339
+ "responses": {
340
+ "200": {
341
+ "description": "No description",
342
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
343
+ }
344
+ },
345
+ "security": [
346
+ {
347
+ "Implicit": [
348
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
349
+ ]
350
+ }
351
+ ]
352
+ }
353
+ },
354
+ "/v1.0/protected/candidates/{id}/onboard-full": {
355
+ "post": {
356
+ "tags": [
357
+ "Candidates"
358
+ ],
359
+ "summary": "Run the full automated onboarding chain",
360
+ "description": "Provisions the candidate's Microsoft 365 user, then triggers an Azure AD → Sanity sync to create the matching employee doc. Returns one OnboardingResult row per step so the admin UI can render a live timeline.",
361
+ "operationId": "OnboardCandidateFull",
362
+ "parameters": [
363
+ {
364
+ "name": "id",
365
+ "in": "path",
366
+ "required": true,
367
+ "schema": {
368
+ "type": "string"
369
+ },
370
+ "x-ms-summary": "Candidate Sanity id"
371
+ }
372
+ ],
373
+ "responses": {
374
+ "200": {
375
+ "description": "Per-step results",
376
+ "content": {
377
+ "application/json": {
378
+ "schema": {
379
+ "type": "array",
380
+ "items": {
381
+ "$ref": "#/components/schemas/onboardingResult"
382
+ }
383
+ }
384
+ }
385
+ },
386
+ "x-ms-summary": "Success"
387
+ },
388
+ "401": {
389
+ "description": "No description",
390
+ "x-ms-summary": "Unauthorized"
391
+ },
392
+ "404": {
393
+ "description": "No description",
394
+ "x-ms-summary": "Not Found"
395
+ }
396
+ },
397
+ "security": [
398
+ {
399
+ "Implicit": [
400
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
401
+ ]
402
+ }
403
+ ]
404
+ }
405
+ },
321
406
  "/v1.0/protected/candidates/{id}/reject": {
322
407
  "post": {
323
408
  "tags": [
@@ -991,6 +1076,9 @@
991
1076
  "onboardingResult": {
992
1077
  "type": "object",
993
1078
  "properties": {
1079
+ "step": {
1080
+ "type": "string"
1081
+ },
994
1082
  "status": {
995
1083
  "type": "string"
996
1084
  },
@@ -1089,27 +1177,13 @@
1089
1177
  "type": "string",
1090
1178
  "default": "CREATED"
1091
1179
  },
1092
- "tShirtSize": {
1093
- "enum": [
1094
- "L",
1095
- "M",
1096
- "S",
1097
- "XL",
1098
- "XS",
1099
- "XXL"
1100
- ],
1101
- "type": "string",
1102
- "default": "L",
1103
- "nullable": true
1104
- },
1105
1180
  "track": {
1106
1181
  "enum": [
1107
1182
  "data_engineer",
1108
1183
  "developer"
1109
1184
  ],
1110
1185
  "type": "string",
1111
- "default": "data_engineer",
1112
- "nullable": true
1186
+ "default": "data_engineer"
1113
1187
  },
1114
1188
  "address": {
1115
1189
  "$ref": "#/components/schemas/sanityCandidateAddress"
@@ -1138,6 +1212,9 @@
1138
1212
  "fromApplication": {
1139
1213
  "type": "boolean"
1140
1214
  },
1215
+ "githubUsername": {
1216
+ "type": "string"
1217
+ },
1141
1218
  "grades": {
1142
1219
  "$ref": "#/components/schemas/sanityCandidateGrades"
1143
1220
  },
@@ -1658,19 +1735,6 @@
1658
1735
  "default": "CREATED",
1659
1736
  "nullable": true
1660
1737
  },
1661
- "tShirtSize": {
1662
- "enum": [
1663
- "XS",
1664
- "S",
1665
- "M",
1666
- "L",
1667
- "XL",
1668
- "XXL"
1669
- ],
1670
- "type": "string",
1671
- "default": "XS",
1672
- "nullable": true
1673
- },
1674
1738
  "track": {
1675
1739
  "enum": [
1676
1740
  "developer",
@@ -1708,6 +1772,9 @@
1708
1772
  "type": "boolean",
1709
1773
  "nullable": true
1710
1774
  },
1775
+ "githubUsername": {
1776
+ "type": "string"
1777
+ },
1711
1778
  "grades": {
1712
1779
  "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
1713
1780
  },
@@ -29794,6 +29794,9 @@
29794
29794
  },
29795
29795
  "SanityCandidate": {
29796
29796
  "properties": {
29797
+ "githubUsername": {
29798
+ "type": "string"
29799
+ },
29797
29800
  "bankAccount": {
29798
29801
  "type": "string"
29799
29802
  },
@@ -30750,6 +30753,7 @@
30750
30753
  "grades",
30751
30754
  "cv",
30752
30755
  "applicationLetter",
30756
+ "track",
30753
30757
  "status",
30754
30758
  "candidate",
30755
30759
  "sanityRev",
@@ -31101,6 +31105,10 @@
31101
31105
  "bankAccount": {
31102
31106
  "type": "string",
31103
31107
  "nullable": true
31108
+ },
31109
+ "githubUsername": {
31110
+ "type": "string",
31111
+ "nullable": true
31104
31112
  }
31105
31113
  },
31106
31114
  "type": "object",