boondmanager-mcp-server 2.3.0 → 2.5.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.
Files changed (75) hide show
  1. package/README.md +20 -1
  2. package/dist/config/dictionary-overrides.d.ts +57 -0
  3. package/dist/config/dictionary-overrides.d.ts.map +1 -0
  4. package/dist/config/dictionary-overrides.js +193 -0
  5. package/dist/config/dictionary-overrides.js.map +1 -0
  6. package/dist/constants.d.ts +3 -1
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +7 -0
  9. package/dist/constants.js.map +1 -1
  10. package/dist/resources/index.d.ts.map +1 -1
  11. package/dist/resources/index.js +25 -0
  12. package/dist/resources/index.js.map +1 -1
  13. package/dist/schemas/index.d.ts +64 -13
  14. package/dist/schemas/index.d.ts.map +1 -1
  15. package/dist/schemas/index.js +144 -20
  16. package/dist/schemas/index.js.map +1 -1
  17. package/dist/server.d.ts.map +1 -1
  18. package/dist/server.js +2 -1
  19. package/dist/server.js.map +1 -1
  20. package/dist/services/boond-client.d.ts +34 -1
  21. package/dist/services/boond-client.d.ts.map +1 -1
  22. package/dist/services/boond-client.js +156 -4
  23. package/dist/services/boond-client.js.map +1 -1
  24. package/dist/tools/absences.d.ts.map +1 -1
  25. package/dist/tools/absences.js +12 -20
  26. package/dist/tools/absences.js.map +1 -1
  27. package/dist/tools/actions.d.ts.map +1 -1
  28. package/dist/tools/actions.js +63 -19
  29. package/dist/tools/actions.js.map +1 -1
  30. package/dist/tools/candidates.js +2 -2
  31. package/dist/tools/candidates.js.map +1 -1
  32. package/dist/tools/companies.js +2 -2
  33. package/dist/tools/companies.js.map +1 -1
  34. package/dist/tools/contacts.js +2 -2
  35. package/dist/tools/contacts.js.map +1 -1
  36. package/dist/tools/crud-factory.d.ts +40 -2
  37. package/dist/tools/crud-factory.d.ts.map +1 -1
  38. package/dist/tools/crud-factory.js +164 -16
  39. package/dist/tools/crud-factory.js.map +1 -1
  40. package/dist/tools/documents.d.ts +3 -0
  41. package/dist/tools/documents.d.ts.map +1 -0
  42. package/dist/tools/documents.js +118 -0
  43. package/dist/tools/documents.js.map +1 -0
  44. package/dist/tools/expenses.d.ts.map +1 -1
  45. package/dist/tools/expenses.js +17 -20
  46. package/dist/tools/expenses.js.map +1 -1
  47. package/dist/tools/index.d.ts +1 -0
  48. package/dist/tools/index.d.ts.map +1 -1
  49. package/dist/tools/index.js +1 -0
  50. package/dist/tools/index.js.map +1 -1
  51. package/dist/tools/invoices.d.ts.map +1 -1
  52. package/dist/tools/invoices.js +12 -20
  53. package/dist/tools/invoices.js.map +1 -1
  54. package/dist/tools/opportunities.d.ts.map +1 -1
  55. package/dist/tools/opportunities.js +3 -3
  56. package/dist/tools/opportunities.js.map +1 -1
  57. package/dist/tools/orders.d.ts.map +1 -1
  58. package/dist/tools/orders.js +12 -20
  59. package/dist/tools/orders.js.map +1 -1
  60. package/dist/tools/positionings.d.ts.map +1 -1
  61. package/dist/tools/positionings.js +81 -16
  62. package/dist/tools/positionings.js.map +1 -1
  63. package/dist/tools/projects.js +2 -2
  64. package/dist/tools/projects.js.map +1 -1
  65. package/dist/tools/purchases.d.ts.map +1 -1
  66. package/dist/tools/purchases.js +16 -21
  67. package/dist/tools/purchases.js.map +1 -1
  68. package/dist/tools/resources.d.ts.map +1 -1
  69. package/dist/tools/resources.js +14 -3
  70. package/dist/tools/resources.js.map +1 -1
  71. package/dist/transports/http.d.ts.map +1 -1
  72. package/dist/transports/http.js +15 -0
  73. package/dist/transports/http.js.map +1 -1
  74. package/manifest.json +18 -3
  75. package/package.json +2 -2
@@ -64,6 +64,7 @@ export declare const ResourceSearchSchema: z.ZodObject<{
64
64
  }>>;
65
65
  page: z.ZodDefault<z.ZodNumber>;
66
66
  pageSize: z.ZodDefault<z.ZodNumber>;
67
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
68
  }, z.core.$strict>;
68
69
  export declare const CandidateSearchSchema: z.ZodObject<{
69
70
  keywords: z.ZodOptional<z.ZodString>;
@@ -130,6 +131,7 @@ export declare const CandidateSearchSchema: z.ZodObject<{
130
131
  }>>;
131
132
  page: z.ZodDefault<z.ZodNumber>;
132
133
  pageSize: z.ZodDefault<z.ZodNumber>;
134
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
133
135
  }, z.core.$strict>;
134
136
  export declare const ContactSearchSchema: z.ZodObject<{
135
137
  keywords: z.ZodOptional<z.ZodString>;
@@ -181,6 +183,7 @@ export declare const ContactSearchSchema: z.ZodObject<{
181
183
  }>>;
182
184
  page: z.ZodDefault<z.ZodNumber>;
183
185
  pageSize: z.ZodDefault<z.ZodNumber>;
186
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
184
187
  }, z.core.$strict>;
185
188
  export declare const CompanySearchSchema: z.ZodObject<{
186
189
  keywords: z.ZodOptional<z.ZodString>;
@@ -223,6 +226,7 @@ export declare const CompanySearchSchema: z.ZodObject<{
223
226
  }>>;
224
227
  page: z.ZodDefault<z.ZodNumber>;
225
228
  pageSize: z.ZodDefault<z.ZodNumber>;
229
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
226
230
  }, z.core.$strict>;
227
231
  export declare const OpportunitySearchSchema: z.ZodObject<{
228
232
  keywords: z.ZodOptional<z.ZodString>;
@@ -267,6 +271,7 @@ export declare const OpportunitySearchSchema: z.ZodObject<{
267
271
  }>>;
268
272
  page: z.ZodDefault<z.ZodNumber>;
269
273
  pageSize: z.ZodDefault<z.ZodNumber>;
274
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
270
275
  }, z.core.$strict>;
271
276
  export declare const ProjectSearchSchema: z.ZodObject<{
272
277
  keywords: z.ZodOptional<z.ZodString>;
@@ -298,6 +303,7 @@ export declare const ProjectSearchSchema: z.ZodObject<{
298
303
  }>>;
299
304
  page: z.ZodDefault<z.ZodNumber>;
300
305
  pageSize: z.ZodDefault<z.ZodNumber>;
306
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
301
307
  }, z.core.$strict>;
302
308
  export declare const EntityIdSchema: z.ZodString;
303
309
  export declare const IdSchema: z.ZodObject<{
@@ -307,6 +313,7 @@ export declare const IdTabSchema: z.ZodObject<{
307
313
  id: z.ZodString;
308
314
  tab: z.ZodOptional<z.ZodString>;
309
315
  }, z.core.$strict>;
316
+ export declare const stateField: (entity: string, baseDescription: string) => z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
310
317
  export declare const CandidateCreateSchema: z.ZodObject<{
311
318
  firstName: z.ZodString;
312
319
  lastName: z.ZodString;
@@ -315,10 +322,19 @@ export declare const CandidateCreateSchema: z.ZodObject<{
315
322
  city: z.ZodOptional<z.ZodString>;
316
323
  country: z.ZodOptional<z.ZodString>;
317
324
  title: z.ZodOptional<z.ZodString>;
318
- state: z.ZodOptional<z.ZodNumber>;
325
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
319
326
  mainSkills: z.ZodOptional<z.ZodString>;
320
327
  note: z.ZodOptional<z.ZodString>;
321
328
  }, z.core.$strict>;
329
+ export declare const PositioningUpdateSchema: z.ZodObject<{
330
+ id: z.ZodString;
331
+ state: z.ZodOptional<z.ZodNumber>;
332
+ stateReasonTypeOf: z.ZodOptional<z.ZodNumber>;
333
+ stateReasonDetail: z.ZodOptional<z.ZodString>;
334
+ startDate: z.ZodOptional<z.ZodString>;
335
+ endDate: z.ZodOptional<z.ZodString>;
336
+ informationComments: z.ZodOptional<z.ZodString>;
337
+ }, z.core.$strict>;
322
338
  export declare const CandidateUpdateSchema: z.ZodObject<{
323
339
  id: z.ZodString;
324
340
  firstName: z.ZodOptional<z.ZodString>;
@@ -328,7 +344,7 @@ export declare const CandidateUpdateSchema: z.ZodObject<{
328
344
  city: z.ZodOptional<z.ZodString>;
329
345
  country: z.ZodOptional<z.ZodString>;
330
346
  title: z.ZodOptional<z.ZodString>;
331
- state: z.ZodOptional<z.ZodNumber>;
347
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
332
348
  mainSkills: z.ZodOptional<z.ZodString>;
333
349
  note: z.ZodOptional<z.ZodString>;
334
350
  }, z.core.$strict>;
@@ -340,7 +356,7 @@ export declare const ResourceCreateSchema: z.ZodObject<{
340
356
  city: z.ZodOptional<z.ZodString>;
341
357
  country: z.ZodOptional<z.ZodString>;
342
358
  title: z.ZodOptional<z.ZodString>;
343
- state: z.ZodOptional<z.ZodNumber>;
359
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
344
360
  note: z.ZodOptional<z.ZodString>;
345
361
  }, z.core.$strict>;
346
362
  export declare const ResourceUpdateSchema: z.ZodObject<{
@@ -352,14 +368,14 @@ export declare const ResourceUpdateSchema: z.ZodObject<{
352
368
  city: z.ZodOptional<z.ZodString>;
353
369
  country: z.ZodOptional<z.ZodString>;
354
370
  title: z.ZodOptional<z.ZodString>;
355
- state: z.ZodOptional<z.ZodNumber>;
371
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
356
372
  note: z.ZodOptional<z.ZodString>;
357
373
  }, z.core.$strict>;
358
374
  export declare const ResourceTechnicalDataUpdateSchema: z.ZodObject<{
359
375
  id: z.ZodString;
360
376
  mode: z.ZodDefault<z.ZodEnum<{
361
- merge: "merge";
362
377
  replace: "replace";
378
+ merge: "merge";
363
379
  }>>;
364
380
  title: z.ZodOptional<z.ZodString>;
365
381
  summary: z.ZodOptional<z.ZodString>;
@@ -442,7 +458,7 @@ export declare const CompanyCreateSchema: z.ZodObject<{
442
458
  country: z.ZodOptional<z.ZodString>;
443
459
  website: z.ZodOptional<z.ZodString>;
444
460
  siret: z.ZodOptional<z.ZodString>;
445
- state: z.ZodOptional<z.ZodNumber>;
461
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
446
462
  note: z.ZodOptional<z.ZodString>;
447
463
  }, z.core.$strict>;
448
464
  export declare const CompanyUpdateSchema: z.ZodObject<{
@@ -454,14 +470,14 @@ export declare const CompanyUpdateSchema: z.ZodObject<{
454
470
  country: z.ZodOptional<z.ZodString>;
455
471
  website: z.ZodOptional<z.ZodString>;
456
472
  siret: z.ZodOptional<z.ZodString>;
457
- state: z.ZodOptional<z.ZodNumber>;
473
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
458
474
  note: z.ZodOptional<z.ZodString>;
459
475
  }, z.core.$strict>;
460
476
  export declare const OpportunityCreateSchema: z.ZodObject<{
461
477
  name: z.ZodString;
462
478
  companyId: z.ZodOptional<z.ZodString>;
463
479
  contactId: z.ZodOptional<z.ZodString>;
464
- state: z.ZodOptional<z.ZodNumber>;
480
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
465
481
  startDate: z.ZodOptional<z.ZodString>;
466
482
  endDate: z.ZodOptional<z.ZodString>;
467
483
  note: z.ZodOptional<z.ZodString>;
@@ -469,7 +485,7 @@ export declare const OpportunityCreateSchema: z.ZodObject<{
469
485
  export declare const OpportunityUpdateSchema: z.ZodObject<{
470
486
  id: z.ZodString;
471
487
  name: z.ZodOptional<z.ZodString>;
472
- state: z.ZodOptional<z.ZodNumber>;
488
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
473
489
  startDate: z.ZodOptional<z.ZodString>;
474
490
  endDate: z.ZodOptional<z.ZodString>;
475
491
  note: z.ZodOptional<z.ZodString>;
@@ -484,7 +500,7 @@ export declare const ActionSearchSchema: z.ZodObject<{
484
500
  pageSize: z.ZodDefault<z.ZodNumber>;
485
501
  }, z.core.$strict>;
486
502
  export declare const ActionCreateSchema: z.ZodObject<{
487
- typeOf: z.ZodCoercedNumber<unknown>;
503
+ typeOf: z.ZodUnion<readonly [z.ZodCoercedNumber<unknown>, z.ZodString]>;
488
504
  title: z.ZodOptional<z.ZodString>;
489
505
  text: z.ZodOptional<z.ZodString>;
490
506
  startDate: z.ZodOptional<z.ZodString>;
@@ -495,6 +511,7 @@ export declare const ActionCreateSchema: z.ZodObject<{
495
511
  opportunityId: z.ZodOptional<z.ZodString>;
496
512
  projectId: z.ZodOptional<z.ZodString>;
497
513
  companyId: z.ZodOptional<z.ZodString>;
514
+ positioningId: z.ZodOptional<z.ZodString>;
498
515
  }, z.core.$strict>;
499
516
  export declare const ResourceTimesheetSchema: z.ZodObject<{
500
517
  resourceId: z.ZodString;
@@ -516,7 +533,7 @@ export declare const ProjectCreateSchema: z.ZodObject<{
516
533
  companyId: z.ZodOptional<z.ZodString>;
517
534
  contactId: z.ZodOptional<z.ZodString>;
518
535
  opportunityId: z.ZodOptional<z.ZodString>;
519
- state: z.ZodOptional<z.ZodNumber>;
536
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
520
537
  startDate: z.ZodOptional<z.ZodString>;
521
538
  endDate: z.ZodOptional<z.ZodString>;
522
539
  note: z.ZodOptional<z.ZodString>;
@@ -524,7 +541,7 @@ export declare const ProjectCreateSchema: z.ZodObject<{
524
541
  export declare const ProjectUpdateSchema: z.ZodObject<{
525
542
  id: z.ZodString;
526
543
  name: z.ZodOptional<z.ZodString>;
527
- state: z.ZodOptional<z.ZodNumber>;
544
+ state: z.ZodOptional<z.ZodPreprocess<z.ZodCoercedNumber<unknown>>>;
528
545
  startDate: z.ZodOptional<z.ZodString>;
529
546
  endDate: z.ZodOptional<z.ZodString>;
530
547
  note: z.ZodOptional<z.ZodString>;
@@ -672,8 +689,10 @@ export declare const PositioningSearchSchema: z.ZodObject<{
672
689
  keywords: z.ZodOptional<z.ZodString>;
673
690
  candidateId: z.ZodOptional<z.ZodString>;
674
691
  resourceId: z.ZodOptional<z.ZodString>;
675
- projectId: z.ZodOptional<z.ZodString>;
676
692
  opportunityId: z.ZodOptional<z.ZodString>;
693
+ companyId: z.ZodOptional<z.ZodString>;
694
+ contactId: z.ZodOptional<z.ZodString>;
695
+ productId: z.ZodOptional<z.ZodString>;
677
696
  page: z.ZodDefault<z.ZodNumber>;
678
697
  pageSize: z.ZodDefault<z.ZodNumber>;
679
698
  }, z.core.$strict>;
@@ -742,6 +761,37 @@ export declare const ReportingDateOptionalSchema: z.ZodObject<{
742
761
  export declare const DictionaryGetSchema: z.ZodObject<{
743
762
  dictionaryType: z.ZodString;
744
763
  }, z.core.$strict>;
764
+ export declare const DocumentParentTypes: readonly ["action", "resourceResume", "candidateResume", "resource", "candidate", "expensesReport", "timesReport", "absencesReport", "payment", "company", "project", "order", "product", "purchase", "delivery", "groupment", "inactivity", "positioning", "followeddocument", "appentity", "contract", "invoice", "providerinvoice"];
765
+ export declare const DocumentCreateSchema: z.ZodObject<{
766
+ parentType: z.ZodEnum<{
767
+ resource: "resource";
768
+ candidate: "candidate";
769
+ project: "project";
770
+ company: "company";
771
+ positioning: "positioning";
772
+ product: "product";
773
+ invoice: "invoice";
774
+ order: "order";
775
+ action: "action";
776
+ absencesReport: "absencesReport";
777
+ timesReport: "timesReport";
778
+ expensesReport: "expensesReport";
779
+ resourceResume: "resourceResume";
780
+ candidateResume: "candidateResume";
781
+ payment: "payment";
782
+ purchase: "purchase";
783
+ delivery: "delivery";
784
+ groupment: "groupment";
785
+ inactivity: "inactivity";
786
+ followeddocument: "followeddocument";
787
+ appentity: "appentity";
788
+ contract: "contract";
789
+ providerinvoice: "providerinvoice";
790
+ }>;
791
+ parentId: z.ZodNumber;
792
+ fileUrl: z.ZodString;
793
+ parsing: z.ZodOptional<z.ZodBoolean>;
794
+ }, z.core.$strict>;
745
795
  export type SearchInput = z.infer<typeof SearchSchema>;
746
796
  export type ResourceSearchInput = z.infer<typeof ResourceSearchSchema>;
747
797
  export type CandidateSearchInput = z.infer<typeof CandidateSearchSchema>;
@@ -759,4 +809,5 @@ export type ResourceTechnicalDataUpdateInput = z.infer<typeof ResourceTechnicalD
759
809
  export type ReferenceCreateInput = z.infer<typeof ReferenceCreateSchema>;
760
810
  export type ReferenceUpdateInput = z.infer<typeof ReferenceUpdateSchema>;
761
811
  export type ReferenceIdInput = z.infer<typeof ReferenceIdSchema>;
812
+ export type DocumentCreateInput = z.infer<typeof DocumentCreateSchema>;
762
813
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, MAX_SEARCH_PAGE } from "../constants.js";
3
+ import { appendOverridesToDescription, resolveLabel } from "../config/dictionary-overrides.js";
3
4
  // Common search schema
4
5
  export const SearchSchema = z
5
6
  .object({
@@ -41,6 +42,12 @@ const pageSizeField = z
41
42
  const sortField = z.string().optional().describe("Champ de tri (ex: lastName, firstName, updateDate)");
42
43
  const orderField = z.enum(["asc", "desc"]).optional().describe("Ordre de tri (asc/desc)");
43
44
  const intArray = (doc) => z.array(z.number().int()).optional().describe(doc);
45
+ const fieldsField = z
46
+ .array(z.string())
47
+ .optional()
48
+ .describe("Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat " +
49
+ "(ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. " +
50
+ "Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.");
44
51
  const strArray = (doc) => z.array(z.string()).optional().describe(doc);
45
52
  // Shared "perimeter" filters available on every entity search (from RAML trait `searchable`).
46
53
  // These are the CORRECT filters for "my team / my agency / my N-1" — NOT the old `mainManagers`.
@@ -150,6 +157,7 @@ export const ResourceSearchSchema = z
150
157
  order: orderField,
151
158
  page: pageField,
152
159
  pageSize: pageSizeField,
160
+ fields: fieldsField,
153
161
  })
154
162
  .strict();
155
163
  // ---- Candidate search schema ----
@@ -220,6 +228,7 @@ export const CandidateSearchSchema = z
220
228
  order: orderField,
221
229
  page: pageField,
222
230
  pageSize: pageSizeField,
231
+ fields: fieldsField,
223
232
  })
224
233
  .strict();
225
234
  // ---- Contact search schema ----
@@ -279,6 +288,7 @@ export const ContactSearchSchema = z
279
288
  order: orderField,
280
289
  page: pageField,
281
290
  pageSize: pageSizeField,
291
+ fields: fieldsField,
282
292
  })
283
293
  .strict();
284
294
  // ---- Company search schema ----
@@ -319,6 +329,7 @@ export const CompanySearchSchema = z
319
329
  order: orderField,
320
330
  page: pageField,
321
331
  pageSize: pageSizeField,
332
+ fields: fieldsField,
322
333
  })
323
334
  .strict();
324
335
  // ---- Opportunity search schema ----
@@ -367,6 +378,7 @@ export const OpportunitySearchSchema = z
367
378
  order: orderField,
368
379
  page: pageField,
369
380
  pageSize: pageSizeField,
381
+ fields: fieldsField,
370
382
  })
371
383
  .strict();
372
384
  // ---- Project search schema ----
@@ -401,6 +413,7 @@ export const ProjectSearchSchema = z
401
413
  order: orderField,
402
414
  page: pageField,
403
415
  pageSize: pageSizeField,
416
+ fields: fieldsField,
404
417
  })
405
418
  .strict();
406
419
  // BoondManager entity ids are numeric. Constraining the schema to digits
@@ -425,6 +438,24 @@ export const IdTabSchema = z
425
438
  tab: TabSchema.optional().describe("Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents)"),
426
439
  })
427
440
  .strict();
441
+ // ---- Dictionary-override-aware `state` field ----
442
+ // Accepts the usual numeric dictionary id, plus a custom label when the
443
+ // operator configured BOOND_DICTIONARY_OVERRIDES (see docs/dictionary-overrides.md).
444
+ // IMPORTANT: the label is resolved inside `z.preprocess`, i.e. at PARSE time,
445
+ // not at schema definition time -- so overrides injected after this module is
446
+ // imported (tests, late env) are honoured. Unknown labels are left as-is so
447
+ // the integer validation fails with an explicit error.
448
+ export const stateField = (entity, baseDescription) => z
449
+ .preprocess((value) => {
450
+ if (typeof value === "string") {
451
+ const resolved = resolveLabel("state", entity, value);
452
+ if (resolved !== undefined)
453
+ return resolved;
454
+ }
455
+ return value;
456
+ }, z.coerce.number().int())
457
+ .optional()
458
+ .describe(appendOverridesToDescription(baseDescription, "state", entity));
428
459
  // ---- Candidate schemas ----
429
460
  export const CandidateCreateSchema = z
430
461
  .object({
@@ -435,11 +466,31 @@ export const CandidateCreateSchema = z
435
466
  city: z.string().optional().describe("Ville"),
436
467
  country: z.string().optional().describe("Pays"),
437
468
  title: z.string().optional().describe("Titre du poste / fonction"),
438
- state: z.number().int().optional().describe("État du candidat (0=en cours, 1=placé, 2=archivé...)"),
469
+ state: stateField("candidate", "État du candidat (0=en cours, 1=placé, 2=archivé...)"),
439
470
  mainSkills: z.string().optional().describe("Compétences principales (texte libre)"),
440
471
  note: z.string().optional().describe("Notes / commentaires"),
441
472
  })
442
473
  .strict();
474
+ export const PositioningUpdateSchema = z
475
+ .object({
476
+ id: z.string().min(1).describe("ID du positionnement \u00e0 modifier"),
477
+ state: z
478
+ .number()
479
+ .int()
480
+ .min(0)
481
+ .optional()
482
+ .describe("\u00c9tat du positionnement : ID num\u00e9rique du dictionnaire setting.state.positioning"),
483
+ stateReasonTypeOf: z
484
+ .number()
485
+ .int()
486
+ .optional()
487
+ .describe("Motif d'\u00e9tat : ID num\u00e9rique du type de motif (stateReason.typeOf)"),
488
+ stateReasonDetail: z.string().optional().describe("Motif d'\u00e9tat : d\u00e9tail libre (stateReason.detail)"),
489
+ startDate: z.string().optional().describe("Date de d\u00e9but (YYYY-MM-DD, ou cha\u00eene vide pour effacer)"),
490
+ endDate: z.string().optional().describe("Date de fin (YYYY-MM-DD, ou cha\u00eene vide pour effacer)"),
491
+ informationComments: z.string().max(250).optional().describe("Commentaires (max 250 caract\u00e8res)"),
492
+ })
493
+ .strict();
443
494
  export const CandidateUpdateSchema = z
444
495
  .object({
445
496
  id: z.string().min(1).describe("ID du candidat à modifier"),
@@ -450,7 +501,7 @@ export const CandidateUpdateSchema = z
450
501
  city: z.string().optional().describe("Ville"),
451
502
  country: z.string().optional().describe("Pays"),
452
503
  title: z.string().optional().describe("Titre / fonction"),
453
- state: z.number().int().optional().describe("État du candidat"),
504
+ state: stateField("candidate", "État du candidat"),
454
505
  mainSkills: z.string().optional().describe("Compétences principales"),
455
506
  note: z.string().optional().describe("Notes"),
456
507
  })
@@ -465,7 +516,7 @@ export const ResourceCreateSchema = z
465
516
  city: z.string().optional().describe("Ville"),
466
517
  country: z.string().optional().describe("Pays"),
467
518
  title: z.string().optional().describe("Titre / poste"),
468
- state: z.number().int().optional().describe("État de la ressource"),
519
+ state: stateField("resource", "État de la ressource"),
469
520
  note: z.string().optional().describe("Notes"),
470
521
  })
471
522
  .strict();
@@ -479,7 +530,7 @@ export const ResourceUpdateSchema = z
479
530
  city: z.string().optional().describe("Ville"),
480
531
  country: z.string().optional().describe("Pays"),
481
532
  title: z.string().optional().describe("Titre / poste"),
482
- state: z.number().int().optional().describe("État"),
533
+ state: stateField("resource", "État"),
483
534
  note: z.string().optional().describe("Notes"),
484
535
  })
485
536
  .strict();
@@ -626,7 +677,7 @@ export const CompanyCreateSchema = z
626
677
  country: z.string().optional().describe("Pays"),
627
678
  website: z.string().optional().describe("Site web"),
628
679
  siret: z.string().optional().describe("Numéro SIRET"),
629
- state: z.number().int().optional().describe("État de la société"),
680
+ state: stateField("company", "État de la société"),
630
681
  note: z.string().optional().describe("Notes"),
631
682
  })
632
683
  .strict();
@@ -640,7 +691,7 @@ export const CompanyUpdateSchema = z
640
691
  country: z.string().optional().describe("Pays"),
641
692
  website: z.string().optional().describe("Site web"),
642
693
  siret: z.string().optional().describe("Numéro SIRET"),
643
- state: z.number().int().optional().describe("État"),
694
+ state: stateField("company", "État"),
644
695
  note: z.string().optional().describe("Notes"),
645
696
  })
646
697
  .strict();
@@ -650,7 +701,7 @@ export const OpportunityCreateSchema = z
650
701
  name: z.string().min(1).describe("Nom / titre de l'opportunité"),
651
702
  companyId: z.string().optional().describe("ID de la société cliente"),
652
703
  contactId: z.string().optional().describe("ID du contact associé"),
653
- state: z.number().int().optional().describe("État de l'opportunité"),
704
+ state: stateField("opportunity", "État de l'opportunité"),
654
705
  startDate: z.string().optional().describe("Date de début prévue (YYYY-MM-DD)"),
655
706
  endDate: z.string().optional().describe("Date de fin prévue (YYYY-MM-DD)"),
656
707
  note: z.string().optional().describe("Notes / description"),
@@ -660,7 +711,7 @@ export const OpportunityUpdateSchema = z
660
711
  .object({
661
712
  id: z.string().min(1).describe("ID de l'opportunité à modifier"),
662
713
  name: z.string().optional().describe("Nom / titre"),
663
- state: z.number().int().optional().describe("État"),
714
+ state: stateField("opportunity", "État"),
664
715
  startDate: z.string().optional().describe("Date de début (YYYY-MM-DD)"),
665
716
  endDate: z.string().optional().describe("Date de fin (YYYY-MM-DD)"),
666
717
  note: z.string().optional().describe("Notes"),
@@ -684,11 +735,10 @@ export const ActionSearchSchema = z
684
735
  // and `text` (not subject/content) — anything else triggers a 422.
685
736
  export const ActionCreateSchema = z
686
737
  .object({
687
- typeOf: z.coerce
688
- .number()
689
- .int()
690
- .min(0)
691
- .describe("Type d'action : ID numérique du dictionnaire BoondManager (setting.action.*, via boond_application_dictionary)"),
738
+ typeOf: z
739
+ .union([z.coerce.number().int().min(0), z.string().min(1)])
740
+ .describe("Type d'action : ID numérique du dictionnaire (setting.action.*, via boond_application_dictionary) " +
741
+ "ou libellé personnalisé si BOOND_DICTIONARY_OVERRIDES est configuré"),
692
742
  title: z.string().optional().describe("Titre de l'action"),
693
743
  text: z.string().optional().describe("Contenu / notes de l'action"),
694
744
  startDate: z
@@ -702,6 +752,10 @@ export const ActionCreateSchema = z
702
752
  opportunityId: z.string().optional().describe("ID de l'opportunité à laquelle rattacher l'action (dependsOn)"),
703
753
  projectId: z.string().optional().describe("ID du projet auquel rattacher l'action (dependsOn)"),
704
754
  companyId: z.string().optional().describe("ID de la société associée (uniquement en complément d'un contactId)"),
755
+ positioningId: z
756
+ .string()
757
+ .optional()
758
+ .describe("ID du positionnement à lier à l'action (relation positioning). Requis par l'API pour les types d'action liés aux positionnements (ex. RQ) — sans lui, erreur 422 « 1002 - Wrong or missing attribute (/data/relationships/positioning) »."),
705
759
  })
706
760
  .strict();
707
761
  // ---- Timesheet schemas ----
@@ -748,7 +802,7 @@ export const ProjectCreateSchema = z
748
802
  companyId: z.string().optional().describe("ID de la société cliente"),
749
803
  contactId: z.string().optional().describe("ID du contact associé"),
750
804
  opportunityId: z.string().optional().describe("ID de l'opportunité liée"),
751
- state: z.number().int().optional().describe("État du projet (0=en cours, 1=terminé, 2=archivé...)"),
805
+ state: stateField("project", "État du projet (0=en cours, 1=terminé, 2=archivé...)"),
752
806
  startDate: z.string().optional().describe("Date de début (YYYY-MM-DD)"),
753
807
  endDate: z.string().optional().describe("Date de fin (YYYY-MM-DD)"),
754
808
  note: z.string().optional().describe("Notes / description du projet"),
@@ -758,7 +812,7 @@ export const ProjectUpdateSchema = z
758
812
  .object({
759
813
  id: z.string().min(1).describe("ID du projet à modifier"),
760
814
  name: z.string().optional().describe("Nom du projet"),
761
- state: z.number().int().optional().describe("État du projet"),
815
+ state: stateField("project", "État du projet"),
762
816
  startDate: z.string().optional().describe("Date de début (YYYY-MM-DD)"),
763
817
  endDate: z.string().optional().describe("Date de fin (YYYY-MM-DD)"),
764
818
  note: z.string().optional().describe("Notes"),
@@ -947,11 +1001,34 @@ export const PositioningCreateSchema = z
947
1001
  .strict();
948
1002
  export const PositioningSearchSchema = z
949
1003
  .object({
950
- keywords: z.string().optional().describe("Mots-clés de recherche"),
951
- candidateId: z.string().optional().describe("Filtrer par ID candidat"),
952
- resourceId: z.string().optional().describe("Filtrer par ID ressource"),
953
- projectId: z.string().optional().describe("Filtrer par ID projet"),
954
- opportunityId: z.string().optional().describe("Filtrer par ID opportunité"),
1004
+ keywords: z
1005
+ .string()
1006
+ .optional()
1007
+ .describe("Mots-clés de recherche. L'API y accepte aussi des références d'entités (AO<id>, CAND<id>, COMP<id>...) — les filtres *Id ci-dessous sont convertis automatiquement en de telles références."),
1008
+ candidateId: z
1009
+ .string()
1010
+ .optional()
1011
+ .describe("Filtrer par ID candidat (envoyé à l'API comme référence keywords CAND<id>)"),
1012
+ resourceId: z
1013
+ .string()
1014
+ .optional()
1015
+ .describe("Filtrer par ID ressource (envoyé à l'API comme référence keywords COMP<id>)"),
1016
+ opportunityId: z
1017
+ .string()
1018
+ .optional()
1019
+ .describe("Filtrer par ID opportunité (envoyé à l'API comme référence keywords AO<id>)"),
1020
+ companyId: z
1021
+ .string()
1022
+ .optional()
1023
+ .describe("Filtrer par ID société (envoyé à l'API comme référence keywords CSOC<id>)"),
1024
+ contactId: z
1025
+ .string()
1026
+ .optional()
1027
+ .describe("Filtrer par ID contact (envoyé à l'API comme référence keywords CCON<id>)"),
1028
+ productId: z
1029
+ .string()
1030
+ .optional()
1031
+ .describe("Filtrer par ID produit (envoyé à l'API comme référence keywords PROD<id>)"),
955
1032
  page: z.number().int().min(1).max(MAX_SEARCH_PAGE).default(1).describe(`Numéro de page (max: ${MAX_SEARCH_PAGE})`),
956
1033
  pageSize: z.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE).describe("Résultats par page"),
957
1034
  })
@@ -1098,4 +1175,51 @@ export const DictionaryGetSchema = z
1098
1175
  .describe("Type de dictionnaire (ex: typeOf/actions, typeOf/absences, states/candidates, states/resources, states/opportunities, states/projects, states/invoices, countries, currencies, languages...)"),
1099
1176
  })
1100
1177
  .strict();
1178
+ // ---- Documents ----
1179
+ // Source: https://doc.boondmanager.com/api-externe/raml-build/resources/documents/search.raml
1180
+ // L'upload passe par `fileUrl` uniquement : l'API BoondManager télécharge le
1181
+ // fichier elle-même, le serveur MCP ne bufferise jamais d'octets de fichier
1182
+ // (et n'expose pas de lecture du système de fichiers local).
1183
+ export const DocumentParentTypes = [
1184
+ "action",
1185
+ "resourceResume",
1186
+ "candidateResume",
1187
+ "resource",
1188
+ "candidate",
1189
+ "expensesReport",
1190
+ "timesReport",
1191
+ "absencesReport",
1192
+ "payment",
1193
+ "company",
1194
+ "project",
1195
+ "order",
1196
+ "product",
1197
+ "purchase",
1198
+ "delivery",
1199
+ "groupment",
1200
+ "inactivity",
1201
+ "positioning",
1202
+ "followeddocument",
1203
+ "appentity",
1204
+ "contract",
1205
+ "invoice",
1206
+ "providerinvoice",
1207
+ ];
1208
+ export const DocumentCreateSchema = z
1209
+ .object({
1210
+ parentType: z
1211
+ .enum(DocumentParentTypes)
1212
+ .describe("Type d'entité parente. Notables : 'candidateResume' (CV de candidat), 'resourceResume' (CV de ressource), " +
1213
+ "'candidate'/'resource' (dossier administratif), 'company', 'project', 'invoice'..."),
1214
+ parentId: z.number().int().min(1).describe("ID de l'entité parente"),
1215
+ fileUrl: z
1216
+ .string()
1217
+ .url()
1218
+ .describe("URL (https) du fichier à téléverser — BoondManager télécharge le fichier depuis cette URL."),
1219
+ parsing: z
1220
+ .boolean()
1221
+ .optional()
1222
+ .describe("Lancer le parsing IA du CV après upload (uniquement pour parentType=candidateResume)."),
1223
+ })
1224
+ .strict();
1101
1225
  //# sourceMappingURL=index.js.map