@promptpartner/bexio-mcp-server 2.0.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 (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/dist/bexio-client.d.ts +350 -0
  4. package/dist/bexio-client.js +1045 -0
  5. package/dist/index.d.ts +15 -0
  6. package/dist/index.js +80 -0
  7. package/dist/logger.d.ts +17 -0
  8. package/dist/logger.js +28 -0
  9. package/dist/server.d.ts +18 -0
  10. package/dist/server.js +81 -0
  11. package/dist/shared/errors.d.ts +21 -0
  12. package/dist/shared/errors.js +54 -0
  13. package/dist/shared/index.d.ts +5 -0
  14. package/dist/shared/index.js +5 -0
  15. package/dist/shared/response.d.ts +24 -0
  16. package/dist/shared/response.js +92 -0
  17. package/dist/tools/accounting/definitions.d.ts +9 -0
  18. package/dist/tools/accounting/definitions.js +345 -0
  19. package/dist/tools/accounting/handlers.d.ts +10 -0
  20. package/dist/tools/accounting/handlers.js +121 -0
  21. package/dist/tools/accounting/index.d.ts +16 -0
  22. package/dist/tools/accounting/index.js +16 -0
  23. package/dist/tools/banking/definitions.d.ts +11 -0
  24. package/dist/tools/banking/definitions.js +349 -0
  25. package/dist/tools/banking/handlers.d.ts +9 -0
  26. package/dist/tools/banking/handlers.js +123 -0
  27. package/dist/tools/banking/index.d.ts +6 -0
  28. package/dist/tools/banking/index.js +6 -0
  29. package/dist/tools/company/definitions.d.ts +7 -0
  30. package/dist/tools/company/definitions.js +87 -0
  31. package/dist/tools/company/handlers.d.ts +7 -0
  32. package/dist/tools/company/handlers.js +31 -0
  33. package/dist/tools/company/index.d.ts +6 -0
  34. package/dist/tools/company/index.js +6 -0
  35. package/dist/tools/contacts/definitions.d.ts +6 -0
  36. package/dist/tools/contacts/definitions.js +150 -0
  37. package/dist/tools/contacts/handlers.d.ts +7 -0
  38. package/dist/tools/contacts/handlers.js +40 -0
  39. package/dist/tools/contacts/index.d.ts +6 -0
  40. package/dist/tools/contacts/index.js +5 -0
  41. package/dist/tools/deliveries/definitions.d.ts +6 -0
  42. package/dist/tools/deliveries/definitions.js +67 -0
  43. package/dist/tools/deliveries/handlers.d.ts +7 -0
  44. package/dist/tools/deliveries/handlers.js +28 -0
  45. package/dist/tools/deliveries/index.d.ts +6 -0
  46. package/dist/tools/deliveries/index.js +5 -0
  47. package/dist/tools/files/definitions.d.ts +6 -0
  48. package/dist/tools/files/definitions.js +217 -0
  49. package/dist/tools/files/handlers.d.ts +7 -0
  50. package/dist/tools/files/handlers.js +63 -0
  51. package/dist/tools/files/index.d.ts +6 -0
  52. package/dist/tools/files/index.js +5 -0
  53. package/dist/tools/index.d.ts +19 -0
  54. package/dist/tools/index.js +93 -0
  55. package/dist/tools/invoices/definitions.d.ts +6 -0
  56. package/dist/tools/invoices/definitions.js +147 -0
  57. package/dist/tools/invoices/handlers.d.ts +7 -0
  58. package/dist/tools/invoices/handlers.js +119 -0
  59. package/dist/tools/invoices/index.d.ts +6 -0
  60. package/dist/tools/invoices/index.js +5 -0
  61. package/dist/tools/items/definitions.d.ts +6 -0
  62. package/dist/tools/items/definitions.js +100 -0
  63. package/dist/tools/items/handlers.d.ts +7 -0
  64. package/dist/tools/items/handlers.js +36 -0
  65. package/dist/tools/items/index.d.ts +6 -0
  66. package/dist/tools/items/index.js +5 -0
  67. package/dist/tools/misc/definitions.d.ts +6 -0
  68. package/dist/tools/misc/definitions.js +126 -0
  69. package/dist/tools/misc/handlers.d.ts +7 -0
  70. package/dist/tools/misc/handlers.js +52 -0
  71. package/dist/tools/misc/index.d.ts +6 -0
  72. package/dist/tools/misc/index.js +5 -0
  73. package/dist/tools/orders/definitions.d.ts +6 -0
  74. package/dist/tools/orders/definitions.js +114 -0
  75. package/dist/tools/orders/handlers.d.ts +7 -0
  76. package/dist/tools/orders/handlers.js +62 -0
  77. package/dist/tools/orders/index.d.ts +6 -0
  78. package/dist/tools/orders/index.js +5 -0
  79. package/dist/tools/payments/definitions.d.ts +6 -0
  80. package/dist/tools/payments/definitions.js +74 -0
  81. package/dist/tools/payments/handlers.d.ts +7 -0
  82. package/dist/tools/payments/handlers.js +28 -0
  83. package/dist/tools/payments/index.d.ts +6 -0
  84. package/dist/tools/payments/index.js +5 -0
  85. package/dist/tools/payroll/definitions.d.ts +15 -0
  86. package/dist/tools/payroll/definitions.js +239 -0
  87. package/dist/tools/payroll/handlers.d.ts +14 -0
  88. package/dist/tools/payroll/handlers.js +152 -0
  89. package/dist/tools/payroll/index.d.ts +16 -0
  90. package/dist/tools/payroll/index.js +16 -0
  91. package/dist/tools/projects/definitions.d.ts +7 -0
  92. package/dist/tools/projects/definitions.js +430 -0
  93. package/dist/tools/projects/handlers.d.ts +7 -0
  94. package/dist/tools/projects/handlers.js +127 -0
  95. package/dist/tools/projects/index.d.ts +6 -0
  96. package/dist/tools/projects/index.js +6 -0
  97. package/dist/tools/purchase/definitions.d.ts +6 -0
  98. package/dist/tools/purchase/definitions.js +381 -0
  99. package/dist/tools/purchase/handlers.d.ts +7 -0
  100. package/dist/tools/purchase/handlers.js +120 -0
  101. package/dist/tools/purchase/index.d.ts +7 -0
  102. package/dist/tools/purchase/index.js +6 -0
  103. package/dist/tools/quotes/definitions.d.ts +6 -0
  104. package/dist/tools/quotes/definitions.js +174 -0
  105. package/dist/tools/quotes/handlers.d.ts +7 -0
  106. package/dist/tools/quotes/handlers.js +79 -0
  107. package/dist/tools/quotes/index.d.ts +6 -0
  108. package/dist/tools/quotes/index.js +5 -0
  109. package/dist/tools/reference/definitions.d.ts +7 -0
  110. package/dist/tools/reference/definitions.js +421 -0
  111. package/dist/tools/reference/handlers.d.ts +7 -0
  112. package/dist/tools/reference/handlers.js +161 -0
  113. package/dist/tools/reference/index.d.ts +6 -0
  114. package/dist/tools/reference/index.js +6 -0
  115. package/dist/tools/reminders/definitions.d.ts +6 -0
  116. package/dist/tools/reminders/definitions.js +132 -0
  117. package/dist/tools/reminders/handlers.d.ts +7 -0
  118. package/dist/tools/reminders/handlers.js +43 -0
  119. package/dist/tools/reminders/index.d.ts +6 -0
  120. package/dist/tools/reminders/index.js +5 -0
  121. package/dist/tools/reports/definitions.d.ts +6 -0
  122. package/dist/tools/reports/definitions.js +133 -0
  123. package/dist/tools/reports/handlers.d.ts +7 -0
  124. package/dist/tools/reports/handlers.js +33 -0
  125. package/dist/tools/reports/index.d.ts +6 -0
  126. package/dist/tools/reports/index.js +5 -0
  127. package/dist/tools/timetracking/definitions.d.ts +9 -0
  128. package/dist/tools/timetracking/definitions.js +226 -0
  129. package/dist/tools/timetracking/handlers.d.ts +9 -0
  130. package/dist/tools/timetracking/handlers.js +88 -0
  131. package/dist/tools/timetracking/index.d.ts +6 -0
  132. package/dist/tools/timetracking/index.js +6 -0
  133. package/dist/tools/users/definitions.d.ts +6 -0
  134. package/dist/tools/users/definitions.js +93 -0
  135. package/dist/tools/users/handlers.d.ts +7 -0
  136. package/dist/tools/users/handlers.js +35 -0
  137. package/dist/tools/users/index.d.ts +6 -0
  138. package/dist/tools/users/index.js +5 -0
  139. package/dist/transports/http.d.ts +17 -0
  140. package/dist/transports/http.js +203 -0
  141. package/dist/transports/index.d.ts +4 -0
  142. package/dist/transports/index.js +4 -0
  143. package/dist/types/common.d.ts +32 -0
  144. package/dist/types/common.js +11 -0
  145. package/dist/types/index.d.ts +9 -0
  146. package/dist/types/index.js +11 -0
  147. package/dist/types/schemas/accounting.d.ts +225 -0
  148. package/dist/types/schemas/accounting.js +96 -0
  149. package/dist/types/schemas/banking.d.ts +207 -0
  150. package/dist/types/schemas/banking.js +86 -0
  151. package/dist/types/schemas/company.d.ts +44 -0
  152. package/dist/types/schemas/company.js +23 -0
  153. package/dist/types/schemas/contacts.d.ts +104 -0
  154. package/dist/types/schemas/contacts.js +42 -0
  155. package/dist/types/schemas/deliveries.d.ts +40 -0
  156. package/dist/types/schemas/deliveries.js +22 -0
  157. package/dist/types/schemas/files.d.ts +152 -0
  158. package/dist/types/schemas/files.js +64 -0
  159. package/dist/types/schemas/index.d.ts +24 -0
  160. package/dist/types/schemas/index.js +44 -0
  161. package/dist/types/schemas/invoices.d.ts +594 -0
  162. package/dist/types/schemas/invoices.js +109 -0
  163. package/dist/types/schemas/items.d.ts +153 -0
  164. package/dist/types/schemas/items.js +43 -0
  165. package/dist/types/schemas/misc.d.ts +64 -0
  166. package/dist/types/schemas/misc.js +36 -0
  167. package/dist/types/schemas/orders.d.ts +657 -0
  168. package/dist/types/schemas/orders.js +101 -0
  169. package/dist/types/schemas/payments.d.ts +46 -0
  170. package/dist/types/schemas/payments.js +24 -0
  171. package/dist/types/schemas/payroll.d.ts +146 -0
  172. package/dist/types/schemas/payroll.js +65 -0
  173. package/dist/types/schemas/projects.d.ts +268 -0
  174. package/dist/types/schemas/projects.js +102 -0
  175. package/dist/types/schemas/purchase.d.ts +228 -0
  176. package/dist/types/schemas/purchase.js +114 -0
  177. package/dist/types/schemas/quotes.d.ts +102 -0
  178. package/dist/types/schemas/quotes.js +49 -0
  179. package/dist/types/schemas/reference.d.ts +240 -0
  180. package/dist/types/schemas/reference.js +99 -0
  181. package/dist/types/schemas/reminders.d.ts +76 -0
  182. package/dist/types/schemas/reminders.js +38 -0
  183. package/dist/types/schemas/reports.d.ts +69 -0
  184. package/dist/types/schemas/reports.js +36 -0
  185. package/dist/types/schemas/timetracking.d.ts +150 -0
  186. package/dist/types/schemas/timetracking.js +68 -0
  187. package/dist/types/schemas/users.d.ts +51 -0
  188. package/dist/types/schemas/users.js +27 -0
  189. package/dist/ui/contact-card/mcp-app.d.ts +1 -0
  190. package/dist/ui/contact-card/mcp-app.js +108 -0
  191. package/dist/ui/dashboard/mcp-app.d.ts +1 -0
  192. package/dist/ui/dashboard/mcp-app.js +81 -0
  193. package/dist/ui/invoice-preview/mcp-app.d.ts +1 -0
  194. package/dist/ui/invoice-preview/mcp-app.js +96 -0
  195. package/dist/ui-resources.d.ts +17 -0
  196. package/dist/ui-resources.js +124 -0
  197. package/dist/vite.config.d.ts +2 -0
  198. package/dist/vite.config.js +46 -0
  199. package/package.json +78 -0
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Order-related Zod schemas and types.
3
+ * Domain: Orders (kb_order)
4
+ */
5
+ import { z } from "zod";
6
+ // Order position (line item)
7
+ const OrderPositionSchema = z
8
+ .object({
9
+ type: z.string(),
10
+ text: z.string(),
11
+ amount: z.number(),
12
+ unit_id: z.number().int().positive().optional(),
13
+ unit_price: z.number(),
14
+ discount_in_percent: z.number().min(0).max(100).optional(),
15
+ position_total: z.number().optional(),
16
+ mwst_type: z.number().int().optional(),
17
+ mwst_is_net: z.boolean().optional(),
18
+ account_id: z.number().int().positive().optional(),
19
+ tax_id: z.number().int().positive().optional(),
20
+ tax_value: z.number().optional(),
21
+ map_all: z.boolean().optional(),
22
+ })
23
+ .passthrough();
24
+ // Order creation payload
25
+ export const OrderCreateSchema = z
26
+ .object({
27
+ title: z.string().min(1, "Order title is required"),
28
+ contact_id: z.number().int().positive("Contact ID must be positive"),
29
+ delivery_address: z.string().optional(),
30
+ delivery_address_2: z.string().optional(),
31
+ delivery_zip: z.string().optional(),
32
+ delivery_city: z.string().optional(),
33
+ delivery_country_id: z.number().int().positive().optional(),
34
+ currency_id: z.number().int().positive().optional(),
35
+ mwst_type: z.number().int().optional(),
36
+ mwst_is_net: z.boolean().optional(),
37
+ show_position_taxes: z.boolean().optional(),
38
+ is_valid_from: z
39
+ .string()
40
+ .regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format")
41
+ .optional(),
42
+ is_valid_until: z
43
+ .string()
44
+ .regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format")
45
+ .optional(),
46
+ contact_address: z.string().optional(),
47
+ contact_address_2: z.string().optional(),
48
+ contact_zip: z.string().optional(),
49
+ contact_city: z.string().optional(),
50
+ contact_country_id: z.number().int().positive().optional(),
51
+ contact_salutation_id: z.number().int().positive().optional(),
52
+ contact_firstname: z.string().optional(),
53
+ contact_lastname: z.string().optional(),
54
+ contact_phone: z.string().optional(),
55
+ contact_mobile: z.string().optional(),
56
+ contact_email: z.string().email().optional(),
57
+ contact_website: z.string().url().optional(),
58
+ contact_remarks: z.string().optional(),
59
+ user_id: z.number().int().positive().optional(),
60
+ language_id: z.number().int().positive().optional(),
61
+ bank_account_id: z.number().int().positive().optional(),
62
+ payment_type_id: z.number().int().positive().optional(),
63
+ header: z.string().optional(),
64
+ footer: z.string().optional(),
65
+ total: z.number().optional(),
66
+ total_rounding_difference: z.number().optional(),
67
+ mwst_amount: z.number().optional(),
68
+ mwst_amount_net: z.number().optional(),
69
+ positions: z.array(OrderPositionSchema).optional(),
70
+ })
71
+ .passthrough();
72
+ // List orders
73
+ export const ListOrdersParamsSchema = z.object({
74
+ limit: z.number().int().positive().default(50),
75
+ offset: z.number().int().min(0).default(0),
76
+ });
77
+ // Get single order
78
+ export const GetOrderParamsSchema = z.object({
79
+ order_id: z.number().int().positive(),
80
+ });
81
+ // Create order
82
+ export const CreateOrderParamsSchema = z.object({
83
+ order_data: OrderCreateSchema,
84
+ });
85
+ // Search orders
86
+ export const SearchOrdersParamsSchema = z.object({
87
+ search_params: z.record(z.unknown()),
88
+ });
89
+ // Search by customer name
90
+ export const SearchOrdersByCustomerParamsSchema = z.object({
91
+ customer_name: z.string().min(1),
92
+ limit: z.number().int().positive().default(50),
93
+ });
94
+ // Create invoice from order
95
+ export const CreateInvoiceFromOrderParamsSchema = z.object({
96
+ order_id: z.number().int().positive(),
97
+ });
98
+ // Create delivery from order
99
+ export const CreateDeliveryFromOrderParamsSchema = z.object({
100
+ order_id: z.number().int().positive(),
101
+ });
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Payment-related Zod schemas and types.
3
+ * Domain: Payments
4
+ */
5
+ import { z } from "zod";
6
+ export declare const ListPaymentsParamsSchema: z.ZodObject<{
7
+ invoice_id: z.ZodNumber;
8
+ }, "strip", z.ZodTypeAny, {
9
+ invoice_id: number;
10
+ }, {
11
+ invoice_id: number;
12
+ }>;
13
+ export type ListPaymentsParams = z.infer<typeof ListPaymentsParamsSchema>;
14
+ export declare const GetPaymentParamsSchema: z.ZodObject<{
15
+ invoice_id: z.ZodNumber;
16
+ payment_id: z.ZodNumber;
17
+ }, "strip", z.ZodTypeAny, {
18
+ invoice_id: number;
19
+ payment_id: number;
20
+ }, {
21
+ invoice_id: number;
22
+ payment_id: number;
23
+ }>;
24
+ export type GetPaymentParams = z.infer<typeof GetPaymentParamsSchema>;
25
+ export declare const CreatePaymentParamsSchema: z.ZodObject<{
26
+ invoice_id: z.ZodNumber;
27
+ payment_data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ invoice_id: number;
30
+ payment_data: Record<string, unknown>;
31
+ }, {
32
+ invoice_id: number;
33
+ payment_data: Record<string, unknown>;
34
+ }>;
35
+ export type CreatePaymentParams = z.infer<typeof CreatePaymentParamsSchema>;
36
+ export declare const DeletePaymentParamsSchema: z.ZodObject<{
37
+ invoice_id: z.ZodNumber;
38
+ payment_id: z.ZodNumber;
39
+ }, "strip", z.ZodTypeAny, {
40
+ invoice_id: number;
41
+ payment_id: number;
42
+ }, {
43
+ invoice_id: number;
44
+ payment_id: number;
45
+ }>;
46
+ export type DeletePaymentParams = z.infer<typeof DeletePaymentParamsSchema>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Payment-related Zod schemas and types.
3
+ * Domain: Payments
4
+ */
5
+ import { z } from "zod";
6
+ // List payments for an invoice
7
+ export const ListPaymentsParamsSchema = z.object({
8
+ invoice_id: z.number().int().positive(),
9
+ });
10
+ // Get single payment
11
+ export const GetPaymentParamsSchema = z.object({
12
+ invoice_id: z.number().int().positive(),
13
+ payment_id: z.number().int().positive(),
14
+ });
15
+ // Create payment
16
+ export const CreatePaymentParamsSchema = z.object({
17
+ invoice_id: z.number().int().positive(),
18
+ payment_data: z.record(z.unknown()),
19
+ });
20
+ // Delete payment
21
+ export const DeletePaymentParamsSchema = z.object({
22
+ invoice_id: z.number().int().positive(),
23
+ payment_id: z.number().int().positive(),
24
+ });
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Payroll Zod schemas and types.
3
+ * Domain: Employees, Absences, and Payroll Documents
4
+ *
5
+ * IMPORTANT: Payroll module is conditional - may not be enabled in all Bexio subscriptions.
6
+ * Handlers check module availability on first call and cache the result.
7
+ * When unavailable, tools return friendly error with upgrade instructions.
8
+ */
9
+ import { z } from "zod";
10
+ export declare const ListEmployeesParamsSchema: z.ZodObject<{
11
+ limit: z.ZodDefault<z.ZodNumber>;
12
+ offset: z.ZodDefault<z.ZodNumber>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ limit: number;
15
+ offset: number;
16
+ }, {
17
+ limit?: number | undefined;
18
+ offset?: number | undefined;
19
+ }>;
20
+ export type ListEmployeesParams = z.infer<typeof ListEmployeesParamsSchema>;
21
+ export declare const GetEmployeeParamsSchema: z.ZodObject<{
22
+ employee_id: z.ZodNumber;
23
+ }, "strip", z.ZodTypeAny, {
24
+ employee_id: number;
25
+ }, {
26
+ employee_id: number;
27
+ }>;
28
+ export type GetEmployeeParams = z.infer<typeof GetEmployeeParamsSchema>;
29
+ export declare const CreateEmployeeParamsSchema: z.ZodObject<{
30
+ user_id: z.ZodNumber;
31
+ first_name: z.ZodOptional<z.ZodString>;
32
+ last_name: z.ZodOptional<z.ZodString>;
33
+ email: z.ZodOptional<z.ZodString>;
34
+ hourly_rate: z.ZodOptional<z.ZodNumber>;
35
+ start_date: z.ZodOptional<z.ZodString>;
36
+ end_date: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ user_id: number;
39
+ start_date?: string | undefined;
40
+ end_date?: string | undefined;
41
+ first_name?: string | undefined;
42
+ last_name?: string | undefined;
43
+ email?: string | undefined;
44
+ hourly_rate?: number | undefined;
45
+ }, {
46
+ user_id: number;
47
+ start_date?: string | undefined;
48
+ end_date?: string | undefined;
49
+ first_name?: string | undefined;
50
+ last_name?: string | undefined;
51
+ email?: string | undefined;
52
+ hourly_rate?: number | undefined;
53
+ }>;
54
+ export type CreateEmployeeParams = z.infer<typeof CreateEmployeeParamsSchema>;
55
+ export declare const UpdateEmployeeParamsSchema: z.ZodObject<{
56
+ employee_id: z.ZodNumber;
57
+ employee_data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
58
+ }, "strip", z.ZodTypeAny, {
59
+ employee_id: number;
60
+ employee_data: Record<string, unknown>;
61
+ }, {
62
+ employee_id: number;
63
+ employee_data: Record<string, unknown>;
64
+ }>;
65
+ export type UpdateEmployeeParams = z.infer<typeof UpdateEmployeeParamsSchema>;
66
+ export declare const ListAbsencesParamsSchema: z.ZodObject<{
67
+ year: z.ZodOptional<z.ZodNumber>;
68
+ limit: z.ZodDefault<z.ZodNumber>;
69
+ offset: z.ZodDefault<z.ZodNumber>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ limit: number;
72
+ offset: number;
73
+ year?: number | undefined;
74
+ }, {
75
+ limit?: number | undefined;
76
+ offset?: number | undefined;
77
+ year?: number | undefined;
78
+ }>;
79
+ export type ListAbsencesParams = z.infer<typeof ListAbsencesParamsSchema>;
80
+ export declare const GetAbsenceParamsSchema: z.ZodObject<{
81
+ absence_id: z.ZodNumber;
82
+ }, "strip", z.ZodTypeAny, {
83
+ absence_id: number;
84
+ }, {
85
+ absence_id: number;
86
+ }>;
87
+ export type GetAbsenceParams = z.infer<typeof GetAbsenceParamsSchema>;
88
+ export declare const CreateAbsenceParamsSchema: z.ZodObject<{
89
+ user_id: z.ZodNumber;
90
+ absence_type_id: z.ZodNumber;
91
+ start_date: z.ZodString;
92
+ end_date: z.ZodString;
93
+ half_day_start: z.ZodDefault<z.ZodBoolean>;
94
+ half_day_end: z.ZodDefault<z.ZodBoolean>;
95
+ note: z.ZodOptional<z.ZodString>;
96
+ }, "strip", z.ZodTypeAny, {
97
+ user_id: number;
98
+ start_date: string;
99
+ end_date: string;
100
+ absence_type_id: number;
101
+ half_day_start: boolean;
102
+ half_day_end: boolean;
103
+ note?: string | undefined;
104
+ }, {
105
+ user_id: number;
106
+ start_date: string;
107
+ end_date: string;
108
+ absence_type_id: number;
109
+ half_day_start?: boolean | undefined;
110
+ half_day_end?: boolean | undefined;
111
+ note?: string | undefined;
112
+ }>;
113
+ export type CreateAbsenceParams = z.infer<typeof CreateAbsenceParamsSchema>;
114
+ export declare const UpdateAbsenceParamsSchema: z.ZodObject<{
115
+ absence_id: z.ZodNumber;
116
+ absence_data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
117
+ }, "strip", z.ZodTypeAny, {
118
+ absence_id: number;
119
+ absence_data: Record<string, unknown>;
120
+ }, {
121
+ absence_id: number;
122
+ absence_data: Record<string, unknown>;
123
+ }>;
124
+ export type UpdateAbsenceParams = z.infer<typeof UpdateAbsenceParamsSchema>;
125
+ export declare const DeleteAbsenceParamsSchema: z.ZodObject<{
126
+ absence_id: z.ZodNumber;
127
+ }, "strip", z.ZodTypeAny, {
128
+ absence_id: number;
129
+ }, {
130
+ absence_id: number;
131
+ }>;
132
+ export type DeleteAbsenceParams = z.infer<typeof DeleteAbsenceParamsSchema>;
133
+ export declare const ListPayrollDocumentsParamsSchema: z.ZodObject<{
134
+ employee_id: z.ZodOptional<z.ZodNumber>;
135
+ limit: z.ZodDefault<z.ZodNumber>;
136
+ offset: z.ZodDefault<z.ZodNumber>;
137
+ }, "strip", z.ZodTypeAny, {
138
+ limit: number;
139
+ offset: number;
140
+ employee_id?: number | undefined;
141
+ }, {
142
+ limit?: number | undefined;
143
+ offset?: number | undefined;
144
+ employee_id?: number | undefined;
145
+ }>;
146
+ export type ListPayrollDocumentsParams = z.infer<typeof ListPayrollDocumentsParamsSchema>;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Payroll Zod schemas and types.
3
+ * Domain: Employees, Absences, and Payroll Documents
4
+ *
5
+ * IMPORTANT: Payroll module is conditional - may not be enabled in all Bexio subscriptions.
6
+ * Handlers check module availability on first call and cache the result.
7
+ * When unavailable, tools return friendly error with upgrade instructions.
8
+ */
9
+ import { z } from "zod";
10
+ // ===== EMPLOYEES (PAY-01) =====
11
+ export const ListEmployeesParamsSchema = z.object({
12
+ limit: z.number().int().positive().default(50),
13
+ offset: z.number().int().min(0).default(0),
14
+ });
15
+ export const GetEmployeeParamsSchema = z.object({
16
+ employee_id: z.number().int().positive(),
17
+ });
18
+ export const CreateEmployeeParamsSchema = z.object({
19
+ // Required fields
20
+ user_id: z.number().int().positive({ message: "User ID is required" }),
21
+ // Optional fields - Bexio may have more
22
+ first_name: z.string().min(1).optional(),
23
+ last_name: z.string().min(1).optional(),
24
+ email: z.string().email().optional(),
25
+ hourly_rate: z.number().positive().optional(),
26
+ start_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be YYYY-MM-DD").optional(),
27
+ end_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be YYYY-MM-DD").optional(),
28
+ });
29
+ export const UpdateEmployeeParamsSchema = z.object({
30
+ employee_id: z.number().int().positive(),
31
+ employee_data: z.record(z.unknown()),
32
+ });
33
+ // ===== ABSENCES (PAY-02) =====
34
+ export const ListAbsencesParamsSchema = z.object({
35
+ year: z.number().int().positive().optional().describe("Filter by year (e.g., 2024)"),
36
+ limit: z.number().int().positive().default(50),
37
+ offset: z.number().int().min(0).default(0),
38
+ });
39
+ export const GetAbsenceParamsSchema = z.object({
40
+ absence_id: z.number().int().positive(),
41
+ });
42
+ export const CreateAbsenceParamsSchema = z.object({
43
+ // Required fields
44
+ user_id: z.number().int().positive({ message: "User ID is required" }),
45
+ absence_type_id: z.number().int().positive({ message: "Absence type ID is required" }),
46
+ start_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be YYYY-MM-DD"),
47
+ end_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be YYYY-MM-DD"),
48
+ // Optional fields
49
+ half_day_start: z.boolean().default(false).describe("True if absence starts at midday"),
50
+ half_day_end: z.boolean().default(false).describe("True if absence ends at midday"),
51
+ note: z.string().optional(),
52
+ });
53
+ export const UpdateAbsenceParamsSchema = z.object({
54
+ absence_id: z.number().int().positive(),
55
+ absence_data: z.record(z.unknown()),
56
+ });
57
+ export const DeleteAbsenceParamsSchema = z.object({
58
+ absence_id: z.number().int().positive(),
59
+ });
60
+ // ===== PAYROLL DOCUMENTS (PAY-03) =====
61
+ export const ListPayrollDocumentsParamsSchema = z.object({
62
+ employee_id: z.number().int().positive().optional().describe("Filter by employee ID"),
63
+ limit: z.number().int().positive().default(50),
64
+ offset: z.number().int().min(0).default(0),
65
+ });
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Projects Zod schemas and types.
3
+ * Domain: Projects (Projects, Project Types, Project Statuses)
4
+ */
5
+ import { z } from "zod";
6
+ export declare const ListProjectsParamsSchema: z.ZodObject<{
7
+ limit: z.ZodDefault<z.ZodNumber>;
8
+ offset: z.ZodDefault<z.ZodNumber>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ limit: number;
11
+ offset: number;
12
+ }, {
13
+ limit?: number | undefined;
14
+ offset?: number | undefined;
15
+ }>;
16
+ export type ListProjectsParams = z.infer<typeof ListProjectsParamsSchema>;
17
+ export declare const GetProjectParamsSchema: z.ZodObject<{
18
+ project_id: z.ZodNumber;
19
+ }, "strip", z.ZodTypeAny, {
20
+ project_id: number;
21
+ }, {
22
+ project_id: number;
23
+ }>;
24
+ export type GetProjectParams = z.infer<typeof GetProjectParamsSchema>;
25
+ export declare const CreateProjectParamsSchema: z.ZodObject<{
26
+ user_id: z.ZodNumber;
27
+ name: z.ZodString;
28
+ contact_id: z.ZodOptional<z.ZodNumber>;
29
+ pr_state_id: z.ZodOptional<z.ZodNumber>;
30
+ pr_project_type_id: z.ZodOptional<z.ZodNumber>;
31
+ start_date: z.ZodOptional<z.ZodString>;
32
+ end_date: z.ZodOptional<z.ZodString>;
33
+ comment: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ name: string;
36
+ user_id: number;
37
+ contact_id?: number | undefined;
38
+ start_date?: string | undefined;
39
+ end_date?: string | undefined;
40
+ pr_state_id?: number | undefined;
41
+ pr_project_type_id?: number | undefined;
42
+ comment?: string | undefined;
43
+ }, {
44
+ name: string;
45
+ user_id: number;
46
+ contact_id?: number | undefined;
47
+ start_date?: string | undefined;
48
+ end_date?: string | undefined;
49
+ pr_state_id?: number | undefined;
50
+ pr_project_type_id?: number | undefined;
51
+ comment?: string | undefined;
52
+ }>;
53
+ export type CreateProjectParams = z.infer<typeof CreateProjectParamsSchema>;
54
+ export declare const UpdateProjectParamsSchema: z.ZodObject<{
55
+ project_id: z.ZodNumber;
56
+ project_data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ project_id: number;
59
+ project_data: Record<string, unknown>;
60
+ }, {
61
+ project_id: number;
62
+ project_data: Record<string, unknown>;
63
+ }>;
64
+ export type UpdateProjectParams = z.infer<typeof UpdateProjectParamsSchema>;
65
+ export declare const DeleteProjectParamsSchema: z.ZodObject<{
66
+ project_id: z.ZodNumber;
67
+ }, "strip", z.ZodTypeAny, {
68
+ project_id: number;
69
+ }, {
70
+ project_id: number;
71
+ }>;
72
+ export type DeleteProjectParams = z.infer<typeof DeleteProjectParamsSchema>;
73
+ export declare const ArchiveProjectParamsSchema: z.ZodObject<{
74
+ project_id: z.ZodNumber;
75
+ }, "strip", z.ZodTypeAny, {
76
+ project_id: number;
77
+ }, {
78
+ project_id: number;
79
+ }>;
80
+ export type ArchiveProjectParams = z.infer<typeof ArchiveProjectParamsSchema>;
81
+ export declare const UnarchiveProjectParamsSchema: z.ZodObject<{
82
+ project_id: z.ZodNumber;
83
+ }, "strip", z.ZodTypeAny, {
84
+ project_id: number;
85
+ }, {
86
+ project_id: number;
87
+ }>;
88
+ export type UnarchiveProjectParams = z.infer<typeof UnarchiveProjectParamsSchema>;
89
+ export declare const SearchProjectsParamsSchema: z.ZodObject<{
90
+ search_criteria: z.ZodArray<z.ZodObject<{
91
+ field: z.ZodString;
92
+ value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
93
+ criteria: z.ZodOptional<z.ZodString>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ field: string;
96
+ value: string | number | boolean;
97
+ criteria?: string | undefined;
98
+ }, {
99
+ field: string;
100
+ value: string | number | boolean;
101
+ criteria?: string | undefined;
102
+ }>, "many">;
103
+ }, "strip", z.ZodTypeAny, {
104
+ search_criteria: {
105
+ field: string;
106
+ value: string | number | boolean;
107
+ criteria?: string | undefined;
108
+ }[];
109
+ }, {
110
+ search_criteria: {
111
+ field: string;
112
+ value: string | number | boolean;
113
+ criteria?: string | undefined;
114
+ }[];
115
+ }>;
116
+ export type SearchProjectsParams = z.infer<typeof SearchProjectsParamsSchema>;
117
+ export declare const ListProjectTypesParamsSchema: z.ZodObject<{
118
+ limit: z.ZodDefault<z.ZodNumber>;
119
+ offset: z.ZodDefault<z.ZodNumber>;
120
+ }, "strip", z.ZodTypeAny, {
121
+ limit: number;
122
+ offset: number;
123
+ }, {
124
+ limit?: number | undefined;
125
+ offset?: number | undefined;
126
+ }>;
127
+ export type ListProjectTypesParams = z.infer<typeof ListProjectTypesParamsSchema>;
128
+ export declare const GetProjectTypeParamsSchema: z.ZodObject<{
129
+ type_id: z.ZodNumber;
130
+ }, "strip", z.ZodTypeAny, {
131
+ type_id: number;
132
+ }, {
133
+ type_id: number;
134
+ }>;
135
+ export type GetProjectTypeParams = z.infer<typeof GetProjectTypeParamsSchema>;
136
+ export declare const ListProjectStatusesParamsSchema: z.ZodObject<{
137
+ limit: z.ZodDefault<z.ZodNumber>;
138
+ offset: z.ZodDefault<z.ZodNumber>;
139
+ }, "strip", z.ZodTypeAny, {
140
+ limit: number;
141
+ offset: number;
142
+ }, {
143
+ limit?: number | undefined;
144
+ offset?: number | undefined;
145
+ }>;
146
+ export type ListProjectStatusesParams = z.infer<typeof ListProjectStatusesParamsSchema>;
147
+ export declare const GetProjectStatusParamsSchema: z.ZodObject<{
148
+ status_id: z.ZodNumber;
149
+ }, "strip", z.ZodTypeAny, {
150
+ status_id: number;
151
+ }, {
152
+ status_id: number;
153
+ }>;
154
+ export type GetProjectStatusParams = z.infer<typeof GetProjectStatusParamsSchema>;
155
+ export declare const ListMilestonesParamsSchema: z.ZodObject<{
156
+ project_id: z.ZodNumber;
157
+ limit: z.ZodDefault<z.ZodNumber>;
158
+ offset: z.ZodDefault<z.ZodNumber>;
159
+ }, "strip", z.ZodTypeAny, {
160
+ limit: number;
161
+ offset: number;
162
+ project_id: number;
163
+ }, {
164
+ project_id: number;
165
+ limit?: number | undefined;
166
+ offset?: number | undefined;
167
+ }>;
168
+ export type ListMilestonesParams = z.infer<typeof ListMilestonesParamsSchema>;
169
+ export declare const GetMilestoneParamsSchema: z.ZodObject<{
170
+ project_id: z.ZodNumber;
171
+ milestone_id: z.ZodNumber;
172
+ }, "strip", z.ZodTypeAny, {
173
+ project_id: number;
174
+ milestone_id: number;
175
+ }, {
176
+ project_id: number;
177
+ milestone_id: number;
178
+ }>;
179
+ export type GetMilestoneParams = z.infer<typeof GetMilestoneParamsSchema>;
180
+ export declare const CreateMilestoneParamsSchema: z.ZodObject<{
181
+ project_id: z.ZodNumber;
182
+ name: z.ZodString;
183
+ end_date: z.ZodOptional<z.ZodString>;
184
+ }, "strip", z.ZodTypeAny, {
185
+ name: string;
186
+ project_id: number;
187
+ end_date?: string | undefined;
188
+ }, {
189
+ name: string;
190
+ project_id: number;
191
+ end_date?: string | undefined;
192
+ }>;
193
+ export type CreateMilestoneParams = z.infer<typeof CreateMilestoneParamsSchema>;
194
+ export declare const DeleteMilestoneParamsSchema: z.ZodObject<{
195
+ project_id: z.ZodNumber;
196
+ milestone_id: z.ZodNumber;
197
+ }, "strip", z.ZodTypeAny, {
198
+ project_id: number;
199
+ milestone_id: number;
200
+ }, {
201
+ project_id: number;
202
+ milestone_id: number;
203
+ }>;
204
+ export type DeleteMilestoneParams = z.infer<typeof DeleteMilestoneParamsSchema>;
205
+ export declare const ListWorkPackagesParamsSchema: z.ZodObject<{
206
+ project_id: z.ZodNumber;
207
+ limit: z.ZodDefault<z.ZodNumber>;
208
+ offset: z.ZodDefault<z.ZodNumber>;
209
+ }, "strip", z.ZodTypeAny, {
210
+ limit: number;
211
+ offset: number;
212
+ project_id: number;
213
+ }, {
214
+ project_id: number;
215
+ limit?: number | undefined;
216
+ offset?: number | undefined;
217
+ }>;
218
+ export type ListWorkPackagesParams = z.infer<typeof ListWorkPackagesParamsSchema>;
219
+ export declare const GetWorkPackageParamsSchema: z.ZodObject<{
220
+ project_id: z.ZodNumber;
221
+ workpackage_id: z.ZodNumber;
222
+ }, "strip", z.ZodTypeAny, {
223
+ project_id: number;
224
+ workpackage_id: number;
225
+ }, {
226
+ project_id: number;
227
+ workpackage_id: number;
228
+ }>;
229
+ export type GetWorkPackageParams = z.infer<typeof GetWorkPackageParamsSchema>;
230
+ export declare const CreateWorkPackageParamsSchema: z.ZodObject<{
231
+ project_id: z.ZodNumber;
232
+ name: z.ZodString;
233
+ estimated_time: z.ZodOptional<z.ZodString>;
234
+ }, "strip", z.ZodTypeAny, {
235
+ name: string;
236
+ project_id: number;
237
+ estimated_time?: string | undefined;
238
+ }, {
239
+ name: string;
240
+ project_id: number;
241
+ estimated_time?: string | undefined;
242
+ }>;
243
+ export type CreateWorkPackageParams = z.infer<typeof CreateWorkPackageParamsSchema>;
244
+ export declare const UpdateWorkPackageParamsSchema: z.ZodObject<{
245
+ project_id: z.ZodNumber;
246
+ workpackage_id: z.ZodNumber;
247
+ workpackage_data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
248
+ }, "strip", z.ZodTypeAny, {
249
+ project_id: number;
250
+ workpackage_id: number;
251
+ workpackage_data: Record<string, unknown>;
252
+ }, {
253
+ project_id: number;
254
+ workpackage_id: number;
255
+ workpackage_data: Record<string, unknown>;
256
+ }>;
257
+ export type UpdateWorkPackageParams = z.infer<typeof UpdateWorkPackageParamsSchema>;
258
+ export declare const DeleteWorkPackageParamsSchema: z.ZodObject<{
259
+ project_id: z.ZodNumber;
260
+ workpackage_id: z.ZodNumber;
261
+ }, "strip", z.ZodTypeAny, {
262
+ project_id: number;
263
+ workpackage_id: number;
264
+ }, {
265
+ project_id: number;
266
+ workpackage_id: number;
267
+ }>;
268
+ export type DeleteWorkPackageParams = z.infer<typeof DeleteWorkPackageParamsSchema>;