@floristcloud/api-lib 1.2.194 → 1.2.196

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/build/commands/auth/get-security-code-status-by-admin.query.js +8 -0
  2. package/build/commands/auth/index.js +2 -0
  3. package/build/commands/auth/register-user.command.js +4 -15
  4. package/build/commands/auth/reset-password-by-admin.command.js +4 -9
  5. package/build/commands/auth/reset-password-by-security-code.command.js +8 -18
  6. package/build/commands/auth/reset-password-by-token.command.js +9 -20
  7. package/build/commands/auth/reset-password-by-user.command.js +4 -9
  8. package/build/commands/auth/reset-security-code-limits-by-admin.command.js +10 -0
  9. package/build/commands/company/createCompanyWithUser.command.js +4 -21
  10. package/build/commands/company/getCompanyList.query.js +4 -12
  11. package/build/commands/domain/get-domain-list.query.js +4 -12
  12. package/build/commands/session/validate-session-s2s.query.js +4 -19
  13. package/build/commands/session/validate-ws-ticket-s2s.query.js +2 -5
  14. package/build/commands/user/attachUserToCompany.command.js +1 -0
  15. package/build/commands/user/create-user-global.command.js +4 -22
  16. package/build/commands/user/createUserByClientId.command.js +4 -25
  17. package/build/commands/user/createUserForCompany.command.js +4 -23
  18. package/build/commands/user/get-me.query.js +2 -11
  19. package/build/commands/user/getUser.command.js +2 -8
  20. package/build/commands/user/update-password-by-user.command.js +4 -9
  21. package/build/commands/work-session/create-many-work-session.command.js +4 -11
  22. package/build/commands/work-session/export-overtime.query.js +4 -20
  23. package/build/constant/error.js +10 -0
  24. package/build/constant/validation-i18n-key.js +2 -0
  25. package/build/constant/validation-i18n-message.js +2 -0
  26. package/build/constant/work-session-report-limits.constant.js +7 -0
  27. package/build/enum/index.js +1 -0
  28. package/build/enum/security-code-blocked-reason.enum.js +2 -0
  29. package/build/enum/security-code-purpose.enum.js +8 -0
  30. package/build/schemas/auth/get-security-code-status-by-admin-response.schema.js +6 -0
  31. package/build/schemas/auth/index.js +36 -0
  32. package/build/schemas/auth/password-reset-data.schema.js +6 -0
  33. package/build/schemas/auth/password-reset-user.schema.js +5 -0
  34. package/build/schemas/auth/password.schema.js +9 -0
  35. package/build/schemas/auth/register-user-request.schema.js +11 -0
  36. package/build/schemas/auth/register-user-response.schema.js +6 -0
  37. package/build/schemas/auth/registration-success.schema.js +5 -0
  38. package/build/schemas/auth/reset-password-by-admin-request.schema.js +6 -0
  39. package/build/schemas/auth/reset-password-by-admin-response.schema.js +5 -0
  40. package/build/schemas/auth/reset-password-by-security-code-request.schema.js +11 -0
  41. package/build/schemas/auth/reset-password-by-security-code-response.schema.js +6 -0
  42. package/build/schemas/auth/reset-password-by-token-request.schema.js +8 -0
  43. package/build/schemas/auth/reset-password-by-token-response.schema.js +6 -0
  44. package/build/schemas/auth/reset-password-by-user-request.schema.js +6 -0
  45. package/build/schemas/auth/reset-password-by-user-response.schema.js +5 -0
  46. package/build/schemas/auth/reset-security-code-limits-by-admin-request.schema.js +5 -0
  47. package/build/schemas/auth/reset-security-code-limits-by-admin-response.schema.js +5 -0
  48. package/build/schemas/auth/restore-access-token.schema.js +5 -0
  49. package/build/schemas/auth/security-code-issuance-block.schema.js +9 -0
  50. package/build/schemas/auth/security-code-issuance-status.schema.js +16 -0
  51. package/build/schemas/client/register-client-webshop-request.schema.js +2 -1
  52. package/build/schemas/company/create-company-data.schema.js +5 -0
  53. package/build/schemas/company/create-company-user-data.schema.js +6 -0
  54. package/build/schemas/company/create-company-with-user-request.schema.js +7 -0
  55. package/build/schemas/company/create-company-with-user-response.schema.js +6 -0
  56. package/build/schemas/company/get-company-list-request.schema.js +8 -0
  57. package/build/schemas/company/get-company-list-response.schema.js +6 -0
  58. package/build/schemas/company/index.js +21 -0
  59. package/build/schemas/consignment/consignment.schema.js +9 -9
  60. package/build/schemas/domain/get-domain-list-request.schema.js +8 -0
  61. package/build/schemas/domain/get-domain-list-response.schema.js +6 -0
  62. package/build/schemas/employee-schedule/employee-schedule.schema.js +1 -1
  63. package/build/schemas/index.js +29 -8
  64. package/build/schemas/product/group/update-group-product-update-batch-request-data.schema.js +1 -1
  65. package/build/schemas/product/product-base.schema.js +1 -1
  66. package/build/schemas/product/update-product-request.schema.js +2 -2
  67. package/build/schemas/session/validate-session-s2s-request.schema.js +7 -0
  68. package/build/schemas/session/validate-session-s2s-response.schema.js +6 -0
  69. package/build/schemas/session/validate-ws-ticket-s2s-request.schema.js +7 -0
  70. package/build/schemas/session/validated-session-user.schema.js +15 -0
  71. package/build/schemas/user/allowed-user-role.schema.js +8 -0
  72. package/build/schemas/user/create-user-by-client-id-data.schema.js +15 -0
  73. package/build/schemas/user/create-user-by-client-id-request.schema.js +6 -0
  74. package/build/schemas/user/create-user-by-client-id-response.schema.js +11 -0
  75. package/build/schemas/user/create-user-for-company-request.schema.js +11 -0
  76. package/build/schemas/user/create-user-for-company-response.schema.js +11 -0
  77. package/build/schemas/user/create-user-global-request.schema.js +15 -0
  78. package/build/schemas/user/create-user-global-response.schema.js +6 -0
  79. package/build/schemas/user/create-user.schema.js +14 -0
  80. package/build/schemas/user/get-me-data.schema.js +7 -0
  81. package/build/schemas/user/get-me-response.schema.js +6 -0
  82. package/build/schemas/user/get-user-data.schema.js +6 -0
  83. package/build/schemas/user/get-user-response.schema.js +6 -0
  84. package/build/schemas/user/index.js +15 -0
  85. package/build/schemas/user/update-password-by-user-request.schema.js +9 -0
  86. package/build/schemas/user/update-password-by-user-response.schema.js +5 -0
  87. package/build/schemas/user/user.schema.js +2 -12
  88. package/build/schemas/work-session/create-many-work-session-request.schema.js +8 -0
  89. package/build/schemas/work-session/create-many-work-session-response.schema.js +9 -0
  90. package/build/schemas/work-session/create-work-session-for-employee.schema.js +8 -0
  91. package/build/schemas/work-session/create-work-session.schema.js +18 -0
  92. package/build/schemas/work-session/export-overtime-request.schema.js +23 -0
  93. package/build/schemas/work-session/export-overtime-response.schema.js +6 -0
  94. package/build/schemas/work-session/overtime-file.schema.js +5 -0
  95. package/build/schemas/work-session/update-work-session.schema.js +21 -0
  96. package/build/schemas/work-session/work-session-date.schema.js +13 -0
  97. package/build/schemas/work-session/work-session-extended-list.schema.js +9 -0
  98. package/build/schemas/work-session/work-session-extended.schema.js +8 -0
  99. package/build/schemas/work-session/work-session.schema.js +1 -26
  100. package/commands/auth/get-security-code-status-by-admin.query.ts +7 -0
  101. package/commands/auth/index.ts +2 -0
  102. package/commands/auth/register-user.command.ts +3 -15
  103. package/commands/auth/reset-password-by-admin.command.ts +3 -9
  104. package/commands/auth/reset-password-by-security-code.command.ts +5 -17
  105. package/commands/auth/reset-password-by-token.command.ts +6 -19
  106. package/commands/auth/reset-password-by-user.command.ts +3 -9
  107. package/commands/auth/reset-security-code-limits-by-admin.command.ts +11 -0
  108. package/commands/company/createCompanyWithUser.command.ts +3 -21
  109. package/commands/company/getCompanyList.query.ts +4 -14
  110. package/commands/domain/get-domain-list.query.ts +3 -13
  111. package/commands/session/validate-session-s2s.query.ts +3 -20
  112. package/commands/session/validate-ws-ticket-s2s.query.ts +2 -6
  113. package/commands/user/attachUserToCompany.command.ts +1 -0
  114. package/commands/user/create-user-global.command.ts +3 -22
  115. package/commands/user/createUserByClientId.command.ts +3 -25
  116. package/commands/user/createUserForCompany.command.ts +3 -26
  117. package/commands/user/get-me.query.ts +2 -11
  118. package/commands/user/getUser.command.ts +3 -9
  119. package/commands/user/update-password-by-user.command.ts +3 -10
  120. package/commands/work-session/create-many-work-session.command.ts +3 -12
  121. package/commands/work-session/export-overtime.query.ts +3 -21
  122. package/constant/error.ts +11 -0
  123. package/constant/validation-i18n-key.ts +2 -0
  124. package/constant/validation-i18n-message.ts +2 -0
  125. package/constant/work-session-report-limits.constant.ts +4 -0
  126. package/enum/index.ts +2 -0
  127. package/enum/security-code-blocked-reason.enum.ts +2 -0
  128. package/enum/security-code-purpose.enum.ts +4 -0
  129. package/package.json +1 -1
  130. package/schemas/auth/get-security-code-status-by-admin-response.schema.ts +4 -0
  131. package/schemas/auth/index.ts +20 -0
  132. package/schemas/auth/password-reset-data.schema.ts +4 -0
  133. package/schemas/auth/password-reset-user.schema.ts +3 -0
  134. package/schemas/auth/password.schema.ts +7 -0
  135. package/schemas/auth/register-user-request.schema.ts +9 -0
  136. package/schemas/auth/register-user-response.schema.ts +4 -0
  137. package/schemas/auth/registration-success.schema.ts +3 -0
  138. package/schemas/auth/reset-password-by-admin-request.schema.ts +4 -0
  139. package/schemas/auth/reset-password-by-admin-response.schema.ts +3 -0
  140. package/schemas/auth/reset-password-by-security-code-request.schema.ts +9 -0
  141. package/schemas/auth/reset-password-by-security-code-response.schema.ts +4 -0
  142. package/schemas/auth/reset-password-by-token-request.schema.ts +6 -0
  143. package/schemas/auth/reset-password-by-token-response.schema.ts +4 -0
  144. package/schemas/auth/reset-password-by-user-request.schema.ts +4 -0
  145. package/schemas/auth/reset-password-by-user-response.schema.ts +3 -0
  146. package/schemas/auth/reset-security-code-limits-by-admin-request.schema.ts +3 -0
  147. package/schemas/auth/reset-security-code-limits-by-admin-response.schema.ts +3 -0
  148. package/schemas/auth/restore-access-token.schema.ts +3 -0
  149. package/schemas/auth/security-code-issuance-block.schema.ts +7 -0
  150. package/schemas/auth/security-code-issuance-status.schema.ts +14 -0
  151. package/schemas/client/register-client-webshop-request.schema.ts +2 -1
  152. package/schemas/company/create-company-data.schema.ts +3 -0
  153. package/schemas/company/create-company-user-data.schema.ts +4 -0
  154. package/schemas/company/create-company-with-user-request.schema.ts +5 -0
  155. package/schemas/company/create-company-with-user-response.schema.ts +4 -0
  156. package/schemas/company/get-company-list-request.schema.ts +5 -0
  157. package/schemas/company/get-company-list-response.schema.ts +3 -0
  158. package/schemas/company/index.ts +5 -0
  159. package/schemas/consignment/consignment.schema.ts +9 -9
  160. package/schemas/domain/get-domain-list-request.schema.ts +5 -0
  161. package/schemas/domain/get-domain-list-response.schema.ts +3 -0
  162. package/schemas/employee-schedule/employee-schedule.schema.ts +1 -1
  163. package/schemas/index.ts +30 -8
  164. package/schemas/product/group/update-group-product-update-batch-request-data.schema.ts +1 -1
  165. package/schemas/product/product-base.schema.ts +1 -1
  166. package/schemas/product/update-product-request.schema.ts +2 -2
  167. package/schemas/session/validate-session-s2s-request.schema.ts +4 -0
  168. package/schemas/session/validate-session-s2s-response.schema.ts +3 -0
  169. package/schemas/session/validate-ws-ticket-s2s-request.schema.ts +4 -0
  170. package/schemas/session/validated-session-user.schema.ts +12 -0
  171. package/schemas/user/allowed-user-role.schema.ts +6 -0
  172. package/schemas/user/create-user-by-client-id-data.schema.ts +13 -0
  173. package/schemas/user/create-user-by-client-id-request.schema.ts +4 -0
  174. package/schemas/user/create-user-by-client-id-response.schema.ts +9 -0
  175. package/schemas/user/create-user-for-company-request.schema.ts +9 -0
  176. package/schemas/user/create-user-for-company-response.schema.ts +9 -0
  177. package/schemas/user/create-user-global-request.schema.ts +13 -0
  178. package/schemas/user/create-user-global-response.schema.ts +4 -0
  179. package/schemas/user/create-user.schema.ts +12 -0
  180. package/schemas/user/get-me-data.schema.ts +5 -0
  181. package/schemas/user/get-me-response.schema.ts +4 -0
  182. package/schemas/user/get-user-data.schema.ts +4 -0
  183. package/schemas/user/get-user-response.schema.ts +4 -0
  184. package/schemas/user/index.ts +15 -0
  185. package/schemas/user/update-password-by-user-request.schema.ts +7 -0
  186. package/schemas/user/update-password-by-user-response.schema.ts +3 -0
  187. package/schemas/user/user.schema.ts +1 -12
  188. package/schemas/work-session/create-many-work-session-request.schema.ts +5 -0
  189. package/schemas/work-session/create-many-work-session-response.schema.ts +6 -0
  190. package/schemas/work-session/create-work-session-for-employee.schema.ts +5 -0
  191. package/schemas/work-session/create-work-session.schema.ts +15 -0
  192. package/schemas/work-session/export-overtime-request.schema.ts +24 -0
  193. package/schemas/work-session/export-overtime-response.schema.ts +3 -0
  194. package/schemas/work-session/overtime-file.schema.ts +2 -0
  195. package/schemas/work-session/update-work-session.schema.ts +18 -0
  196. package/schemas/work-session/work-session-date.schema.ts +14 -0
  197. package/schemas/work-session/work-session-extended-list.schema.ts +6 -0
  198. package/schemas/work-session/work-session-extended.schema.ts +5 -0
  199. package/schemas/work-session/work-session.schema.ts +0 -30
@@ -1,28 +1,6 @@
1
- import { z } from 'zod';
2
- import { UserSchema } from '../../schemas';
3
- import { UserRoleEnum } from '../../enum';
4
-
5
- const CreateUserByClientIdRequestSchema = z.object({
6
- user: z
7
- .object({
8
- password: z.string(),
9
- name: z.string(),
10
- email: z.email().toLowerCase().nullable().optional(),
11
- phone: z.string().nullable().optional(),
12
- roles: z.array(z.nativeEnum(UserRoleEnum)).optional().default([UserRoleEnum.BUYER]),
13
- })
14
- .refine(data => data.email || data.phone, {
15
- message: 'validation.emailOrPhoneRequired',
16
- }),
17
- clientUuid: z.uuid(),
18
- });
19
-
20
- const CreateUserByClientIdResponseSchema = z.object({
21
- message: z.string().optional(),
22
- code: z.string().optional(),
23
- i18nKey: z.string().optional(),
24
- data: UserSchema,
25
- });
1
+ import type { z } from 'zod';
2
+ import { CreateUserByClientIdRequestSchema } from '../../schemas/user/create-user-by-client-id-request.schema';
3
+ import { CreateUserByClientIdResponseSchema } from '../../schemas/user/create-user-by-client-id-response.schema';
26
4
 
27
5
  export namespace CreateUserByClientIdCommand {
28
6
  export const RequestSchema = CreateUserByClientIdRequestSchema;
@@ -1,29 +1,6 @@
1
- import { z } from 'zod';
2
- import { UserSchema } from '../../schemas';
3
- import { UserRoleEnum } from '../../enum';
4
-
5
- const UserRoles = z.nativeEnum(UserRoleEnum);
6
- const AllowedRoles = UserRoles.refine(role => role !== UserRoleEnum.BUYER, {
7
- message: 'validation.allowedRoles',
8
- });
9
-
10
- const CreateUserForCompanyRequestSchema = UserSchema.pick({
11
- email: true,
12
- phone: true,
13
- name: true,
14
- }).merge(
15
- z.object({
16
- roles: z.array(AllowedRoles),
17
- password: z.string(),
18
- }),
19
- );
20
-
21
- const CreateUserForCompanyResponseSchema = z.object({
22
- message: z.string().optional(),
23
- code: z.string().optional(),
24
- i18nKey: z.string().optional(),
25
- data: UserSchema,
26
- });
1
+ import type { z } from 'zod';
2
+ import { CreateUserForCompanyRequestSchema } from '../../schemas/user/create-user-for-company-request.schema';
3
+ import { CreateUserForCompanyResponseSchema } from '../../schemas/user/create-user-for-company-response.schema';
27
4
 
28
5
  export namespace CreateUserForCompanyCommand {
29
6
  export const RequestSchema = CreateUserForCompanyRequestSchema;
@@ -1,14 +1,5 @@
1
- import { z } from 'zod';
2
- import { UserSchema } from '../../schemas';
3
- import { EffectivePermissionsSchema } from '../../schemas/access-policy/access-policy.schema';
4
-
5
- const GetMeResponseSchema = z.object({
6
- message: z.string().optional(),
7
- data: z.object({
8
- user: UserSchema.omit({ passwordHash: true, restoreTokenHash: true }),
9
- permissions: EffectivePermissionsSchema,
10
- }),
11
- });
1
+ import type { z } from 'zod';
2
+ import { GetMeResponseSchema } from '../../schemas/user/get-me-response.schema';
12
3
 
13
4
  export namespace GetMeContractQuery {
14
5
  export const ResponseSchema = GetMeResponseSchema;
@@ -1,13 +1,7 @@
1
- import { z } from 'zod';
2
- import { UserSchema } from '../../schemas';
3
-
4
- const GetUserRequestSchema = z.object({
5
- data: z.object({
6
- user: UserSchema.omit({ passwordHash: true, restoreTokenHash: true }),
7
- }),
8
- });
1
+ import type { z } from 'zod';
2
+ import { GetUserResponseSchema } from '../../schemas/user/get-user-response.schema';
9
3
 
10
4
  export namespace GetUserCommand {
11
- export const ResponseSchema = GetUserRequestSchema;
5
+ export const ResponseSchema = GetUserResponseSchema;
12
6
  export type Response = z.infer<typeof ResponseSchema>;
13
7
  }
@@ -1,17 +1,10 @@
1
- import { z } from 'zod';
2
-
3
- const UpdatePasswordByUserRequestSchema = z.object({
4
- password: z.string(),
5
- });
6
-
7
- const UpdatePasswordByUserResponseSchema = z.object({
8
- message: z.string(),
9
- });
1
+ import type { z } from 'zod';
2
+ import { UpdatePasswordByUserRequestSchema } from '../../schemas/user/update-password-by-user-request.schema';
3
+ import { UpdatePasswordByUserResponseSchema } from '../../schemas/user/update-password-by-user-response.schema';
10
4
 
11
5
  export namespace UpdatePasswordByUserContractCommand {
12
6
  export const RequestSchema = UpdatePasswordByUserRequestSchema;
13
7
  export type Request = z.infer<typeof RequestSchema>;
14
-
15
8
  export const ResponseSchema = UpdatePasswordByUserResponseSchema;
16
9
  export type Response = z.infer<typeof ResponseSchema>;
17
10
  }
@@ -1,15 +1,6 @@
1
- import { z } from 'zod';
2
- import { CreateWorkSessionSchema, WorkSessionSchema } from '../../schemas';
3
-
4
- const CreateManyWorkSessionRequestSchema = z.object({
5
- data: z.array(CreateWorkSessionSchema),
6
- });
7
-
8
- const CreateManyWorkSessionResponseSchema = z.object({
9
- message: z.string().optional(),
10
- data: z.array(WorkSessionSchema),
11
- });
12
-
1
+ import type { z } from 'zod';
2
+ import { CreateManyWorkSessionRequestSchema } from '../../schemas/work-session/create-many-work-session-request.schema';
3
+ import { CreateManyWorkSessionResponseSchema } from '../../schemas/work-session/create-many-work-session-response.schema';
13
4
  export namespace CreateManyWorkSessionContractCommand {
14
5
  export const RequestSchema = CreateManyWorkSessionRequestSchema;
15
6
  export type Request = z.infer<typeof RequestSchema>;
@@ -1,24 +1,6 @@
1
- import { z } from 'zod';
2
- import { dateRangeCheck } from '../../helpers/date.helper';
3
-
4
- const ExportOvertimeRequestSchema = z
5
- .object({
6
- startDate: z.coerce.date(),
7
- endDate: z.coerce.date(),
8
- userUUIDs: z.array(z.string().uuid()).optional(),
9
- })
10
- .refine(value => dateRangeCheck(value.startDate, value.endDate), {
11
- message: 'validation.dateRange',
12
- path: ['endDate', 'startDate'],
13
- });
14
-
15
- const ExportOvertimeResponseSchema = z.object({
16
- data: z.object({
17
- fileUrl: z.string(),
18
- fileKey: z.string(),
19
- }),
20
- });
21
-
1
+ import type { z } from 'zod';
2
+ import { ExportOvertimeRequestSchema } from '../../schemas/work-session/export-overtime-request.schema';
3
+ import { ExportOvertimeResponseSchema } from '../../schemas/work-session/export-overtime-response.schema';
22
4
  export namespace ExportOvertimeContractQuery {
23
5
  export const RequestSchema = ExportOvertimeRequestSchema;
24
6
  export type Request = z.infer<typeof RequestSchema>;
package/constant/error.ts CHANGED
@@ -136,6 +136,9 @@ export const ERRORS = {
136
136
  USER_EMAIL_REQUIRED_FOR_NOTIFICATION: { code: 'U018', message: 'User email is required for email notification', httpCode: 400 },
137
137
  USER_PASSWORD_GENERATION_FAILED: { code: 'U019', message: 'Failed to generate and send password', httpCode: 500 },
138
138
 
139
+ CURRENT_PASSWORD_REQUIRED: { code: 'U020', message: 'Current password is required', httpCode: 400 },
140
+ INVALID_CURRENT_PASSWORD: { code: 'U021', message: 'Current password is incorrect', httpCode: 400 },
141
+
139
142
  //AUTH
140
143
  FAILED_TO_UPDATE: { code: 'A010', message: 'User update failed', httpCode: 500 },
141
144
  RESTORE_TOKEN_ERROR: { code: 'A012', message: 'Invalid recovery token', httpCode: 500 },
@@ -544,6 +547,11 @@ export const ERRORS = {
544
547
  CART_NOT_DELETED: { code: 'O013', message: 'Cart not deleted', httpCode: 500 },
545
548
  ORDER_SEND_INVOICE_FAILED_NO_EMAIL: { code: 'O014', message: 'Order send invoice failed, client does not have email', httpCode: 500 },
546
549
  ORDER_SEND_INVOICE_FAILED_NO_PHONE: { code: 'O017', message: 'Order send invoice failed, client does not have phone', httpCode: 500 },
550
+ ORDER_SEND_INVOICE_FAILED_NO_ACCOUNT: {
551
+ code: 'O067',
552
+ message: 'Order send invoice failed, client has no account for the selected channel',
553
+ httpCode: 400,
554
+ },
547
555
  ORDER_SEND_INVOICE_FAILED_NO_CONTACTS: {
548
556
  code: 'O025',
549
557
  message: 'Order send invoice failed, client does not have contact methods',
@@ -1632,6 +1640,9 @@ export const ERRORS = {
1632
1640
  SECURITY_CODE_FRAUD: { code: 'SC005', message: 'Security code attempts exceeded. Contact administrator', httpCode: 403 },
1633
1641
  SECURITY_CODE_DAILY_LIMIT: { code: 'SC006', message: 'Daily security code limit reached. Contact administrator', httpCode: 429 },
1634
1642
  SECURITY_CODE_FRAUD_BLOCK: { code: 'SC007', message: 'Security code temporarily blocked after fraud detection', httpCode: 429 },
1643
+ SECURITY_CODE_WINDOW_LIMIT: { code: 'SC008', message: 'Too many security codes requested. Try again later', httpCode: 429 },
1644
+ SECURITY_CODE_STATUS_FAILED: { code: 'SC009', message: 'Failed to get security code status', httpCode: 500 },
1645
+ SECURITY_CODE_LIMITS_RESET_FAILED: { code: 'SC010', message: 'Failed to reset security code limits', httpCode: 500 },
1635
1646
 
1636
1647
  // MESSENGER PROFILE
1637
1648
  MESSENGER_VERIFICATION_CODE_NOT_FOUND: { code: 'MP001', message: 'Verification code not found', httpCode: 404 },
@@ -7,6 +7,8 @@
7
7
  * stable contract; the English text lives only in the frontend dictionary.
8
8
  */
9
9
  export const ValidationI18nKey = {
10
+ passwordMinLength: 'validation.passwordMinLength',
11
+ passwordMaxBytes: 'validation.passwordMaxBytes',
10
12
  dateRange: 'validation.dateRange',
11
13
  reportPeriodMax: 'validation.reportPeriodMax',
12
14
  emailOrPhoneRequired: 'validation.emailOrPhoneRequired',
@@ -11,6 +11,8 @@ import { ValidationI18nKey, ValidationI18nKeyType } from './validation-i18n-key'
11
11
  * Every token in ValidationI18nKey MUST have an entry here (enforced by the Record type).
12
12
  */
13
13
  export const VALIDATION_I18N_MESSAGE: Record<ValidationI18nKeyType, string> = {
14
+ [ValidationI18nKey.passwordMinLength]: 'Password must contain at least 8 characters',
15
+ [ValidationI18nKey.passwordMaxBytes]: 'Password must not exceed 72 bytes in UTF-8',
14
16
  [ValidationI18nKey.dateRange]: 'Start date must be before or equal to end date',
15
17
  [ValidationI18nKey.reportPeriodMax]: 'The selected period exceeds the maximum allowed range',
16
18
  [ValidationI18nKey.emailOrPhoneRequired]: 'Either email or phone is required',
@@ -0,0 +1,4 @@
1
+ export const WORK_SESSION_REPORT_LIMITS = {
2
+ maxPeriodDays: 731,
3
+ millisecondsPerDay: 24 * 60 * 60 * 1000,
4
+ };
package/enum/index.ts CHANGED
@@ -172,3 +172,5 @@ export * from './order-seller-sync-status-list';
172
172
  export * from './seller-sync-status.enum';
173
173
 
174
174
  export * from './seller-sync-item-status.enum';
175
+
176
+ export * from './security-code-purpose.enum';
@@ -1,4 +1,6 @@
1
1
  export enum SecurityCodeBlockedReasonEnum {
2
2
  FRAUD_BLOCK = 'fraud_block',
3
3
  DAILY_LIMIT = 'daily_limit',
4
+ WINDOW_LIMIT = 'window_limit',
5
+ THROTTLED = 'throttled',
4
6
  }
@@ -0,0 +1,4 @@
1
+ export enum SecurityCodePurposeEnum {
2
+ PASSWORD_RESET = 'PASSWORD_RESET',
3
+ ACCOUNT_DELETION = 'ACCOUNT_DELETION',
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floristcloud/api-lib",
3
- "version": "1.2.194",
3
+ "version": "1.2.196",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { SecurityCodeIssuanceStatusSchema } from './security-code-issuance-status.schema';
3
+
4
+ export const GetSecurityCodeStatusByAdminResponseSchema = z.object({ data: SecurityCodeIssuanceStatusSchema });
@@ -0,0 +1,20 @@
1
+ export * from './password.schema';
2
+ export * from './registration-success.schema';
3
+ export * from './register-user-request.schema';
4
+ export * from './register-user-response.schema';
5
+ export * from './reset-password-by-admin-request.schema';
6
+ export * from './reset-password-by-admin-response.schema';
7
+ export * from './reset-password-by-user-request.schema';
8
+ export * from './reset-password-by-user-response.schema';
9
+ export * from './reset-password-by-token-request.schema';
10
+ export * from './restore-access-token.schema';
11
+ export * from './reset-password-by-token-response.schema';
12
+ export * from './reset-password-by-security-code-request.schema';
13
+ export * from './password-reset-user.schema';
14
+ export * from './password-reset-data.schema';
15
+ export * from './reset-password-by-security-code-response.schema';
16
+ export * from './security-code-issuance-block.schema';
17
+ export * from './security-code-issuance-status.schema';
18
+ export * from './get-security-code-status-by-admin-response.schema';
19
+ export * from './reset-security-code-limits-by-admin-request.schema';
20
+ export * from './reset-security-code-limits-by-admin-response.schema';
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { PasswordResetUserSchema } from './password-reset-user.schema';
3
+
4
+ export const PasswordResetDataSchema = z.object({ user: PasswordResetUserSchema });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const PasswordResetUserSchema = z.object({ uuid: z.string(), email: z.string().nullable(), phone: z.string().nullable() });
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ import { ValidationI18nKey } from '../../constant/validation-i18n-key';
3
+
4
+ export const PasswordSchema = z
5
+ .string()
6
+ .min(8, { message: ValidationI18nKey.passwordMinLength })
7
+ .refine(password => new TextEncoder().encode(password).byteLength <= 72, { message: ValidationI18nKey.passwordMaxBytes });
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { PasswordSchema } from './password.schema';
3
+
4
+ export const RegisterUserRequestSchema = z.object({
5
+ email: z.email().toLowerCase(),
6
+ phone: z.string(),
7
+ name: z.string(),
8
+ password: PasswordSchema,
9
+ });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { RegistrationSuccessSchema } from './registration-success.schema';
3
+
4
+ export const RegisterUserResponseSchema = z.object({ message: z.string().optional(), data: RegistrationSuccessSchema });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const RegistrationSuccessSchema = z.object({ success: z.boolean() });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { PasswordSchema } from './password.schema';
3
+
4
+ export const ResetPasswordByAdminRequestSchema = z.object({ password: PasswordSchema });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const ResetPasswordByAdminResponseSchema = z.object({ message: z.string().optional() });
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { PasswordSchema } from './password.schema';
3
+
4
+ export const ResetPasswordBySecurityCodeRequestSchema = z.object({
5
+ email: z.email().toLowerCase().optional(),
6
+ phone: z.string().optional(),
7
+ securityCode: z.string(),
8
+ password: PasswordSchema,
9
+ });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { PasswordResetDataSchema } from './password-reset-data.schema';
3
+
4
+ export const ResetPasswordBySecurityCodeResponseSchema = z.object({ data: PasswordResetDataSchema });
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ import { PasswordSchema } from './password.schema';
3
+
4
+ export const ResetPasswordByTokenRequestSchema = z
5
+ .object({ email: z.email().toLowerCase().optional(), phone: z.string().optional(), restoreToken: z.string(), password: PasswordSchema })
6
+ .refine(data => data.email || data.phone, { message: 'validation.emailOrPhoneRequired', path: ['email', 'phone'] });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { RestoreAccessTokenSchema } from './restore-access-token.schema';
3
+
4
+ export const ResetPasswordByTokenResponseSchema = z.object({ message: z.string().optional(), data: RestoreAccessTokenSchema });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { PasswordSchema } from './password.schema';
3
+
4
+ export const ResetPasswordByUserRequestSchema = z.object({ password: PasswordSchema });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const ResetPasswordByUserResponseSchema = z.object({ message: z.string().optional() });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const ResetSecurityCodeLimitsByAdminRequestSchema = z.object({});
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const ResetSecurityCodeLimitsByAdminResponseSchema = z.object({ message: z.string().optional() });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const RestoreAccessTokenSchema = z.object({ accessToken: z.string() });
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ import { SecurityCodeBlockedReasonEnum } from '../../enum/security-code-blocked-reason.enum';
3
+
4
+ export const SecurityCodeIssuanceBlockSchema = z.object({
5
+ reason: z.nativeEnum(SecurityCodeBlockedReasonEnum),
6
+ until: z.date(),
7
+ });
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { SecurityCodeIssuanceBlockSchema } from './security-code-issuance-block.schema';
3
+
4
+ export const SecurityCodeIssuanceStatusSchema = z.object({
5
+ isBlocked: z.boolean(),
6
+ /** Действующие блоки по приоритету; первый — тот, что сейчас мешает получить код. */
7
+ blocks: SecurityCodeIssuanceBlockSchema.array(),
8
+ dailyCount: z.number().int(),
9
+ dailyLimit: z.number().int(),
10
+ windowCount: z.number().int(),
11
+ windowLimit: z.number().int(),
12
+ windowMinutes: z.number().int(),
13
+ lastIssuedAt: z.date().nullable(),
14
+ });
@@ -1,9 +1,10 @@
1
+ import { PasswordSchema } from '../auth/password.schema';
1
2
  import { z } from 'zod';
2
3
  import { ClientTypeEnum } from '../../enum/client-type.enum';
3
4
 
4
5
  export const RegisterClientWebshopRequestSchema = z.object({
5
6
  name: z.string(),
6
- password: z.string(),
7
+ password: PasswordSchema,
7
8
  contactName: z.string().nullable(),
8
9
  phone: z.string(),
9
10
  email: z.email().toLowerCase(),
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+
3
+ export const CreateCompanyDataSchema = z.object({ name: z.string(), alias: z.string().optional() });
@@ -0,0 +1,4 @@
1
+ import { UserSchema } from '../user/user.schema';
2
+ import { PasswordSchema } from '../auth/password.schema';
3
+
4
+ export const CreateCompanyUserDataSchema = UserSchema.pick({ email: true, phone: true, name: true }).extend({ password: PasswordSchema });
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { CreateCompanyDataSchema } from './create-company-data.schema';
3
+ import { CreateCompanyUserDataSchema } from './create-company-user-data.schema';
4
+
5
+ export const CreateCompanyWithUserRequestSchema = z.object({ company: CreateCompanyDataSchema, user: CreateCompanyUserDataSchema });
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import { CompanySchema } from './company.schema';
3
+
4
+ export const CreateCompanyWithUserResponseSchema = z.object({ message: z.string().optional(), data: CompanySchema.nullable() });
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ export const GetCompanyListRequestSchema = z.object({
3
+ page: z.string().transform(val => Number(val) || 1),
4
+ count: z.string().transform(val => Number(val) || 10),
5
+ });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ import { CompanyListSchema } from './companyList.schema';
3
+ export const GetCompanyListResponseSchema = z.object({ message: z.string().optional(), data: CompanyListSchema });
@@ -0,0 +1,5 @@
1
+ export * from './create-company-data.schema';
2
+ export * from './create-company-user-data.schema';
3
+ export * from './create-company-with-user-request.schema';
4
+ export * from './create-company-with-user-response.schema';
5
+ export * from './get-company-list-response.schema';
@@ -21,25 +21,25 @@ export const ConsignmentSchema = z.object({
21
21
 
22
22
  export const ConsignmentWithStatisticForListSchema = ConsignmentSchema.extend({
23
23
  statistic: z.object({
24
- totalCostPrice: MoneySchema,
24
+ totalCostPrice: MoneySchema.nullable(),
25
25
  currentProductBalance: z.number(),
26
- currentCostPrice: MoneySchema,
26
+ currentCostPrice: MoneySchema.nullable(),
27
27
  totalProductQuantity: z.number(),
28
- totalSellings: MoneySchema,
29
- totalApprovedWriteOffSellings: MoneySchema,
28
+ totalSellings: MoneySchema.nullable(),
29
+ totalApprovedWriteOffSellings: MoneySchema.nullable(),
30
30
  }),
31
31
  });
32
32
 
33
33
  export const ConsignmentWithStatisticSchema = ConsignmentSchema.extend({
34
34
  statistic: z.object({
35
- totalCostPrice: MoneySchema,
35
+ totalCostPrice: MoneySchema.nullable(),
36
36
  currentProductBalance: z.number(),
37
- currentCostPrice: MoneySchema,
37
+ currentCostPrice: MoneySchema.nullable(),
38
38
  totalProductQuantity: z.number(),
39
- totalSellings: MoneySchema,
39
+ totalSellings: MoneySchema.nullable(),
40
40
  writeOffQuantity: z.number(),
41
- writeOffCostPrice: MoneySchema,
42
- writeOffCostPriceByOrderProduct: MoneySchema,
41
+ writeOffCostPrice: MoneySchema.nullable(),
42
+ writeOffCostPriceByOrderProduct: MoneySchema.nullable(),
43
43
  }),
44
44
  });
45
45
 
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ export const GetDomainListRequestSchema = z.object({
3
+ page: z.string().transform(val => Number(val) || 1),
4
+ count: z.string().transform(val => Number(val) || 10),
5
+ });
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ import { DomainListSchema } from './domain.schema';
3
+ export const GetDomainListResponseSchema = z.object({ message: z.string().optional(), data: DomainListSchema });
@@ -20,7 +20,7 @@ export const EmployeeScheduleListSchema = z.object({
20
20
  });
21
21
 
22
22
  export const EmployeeScheduleExtendedSchema = EmployeeScheduleSchema.extend({
23
- user: UserSchema.omit({ passwordHash: true, restoreTokenHash: true }),
23
+ user: UserSchema,
24
24
  });
25
25
 
26
26
  export const EmployeeScheduleExtendedListSchema = z.object({
package/schemas/index.ts CHANGED
@@ -46,6 +46,7 @@ export * from './error-message.schema';
46
46
  export * from './file';
47
47
  export * from './i18n/localized-name.schema';
48
48
  export * from './integration';
49
+ export * from './measure-unit';
49
50
  export * from './message';
50
51
  export * from './messenger-profile';
51
52
  export * from './money-account';
@@ -70,9 +71,9 @@ export * from './package/package.schema';
70
71
  export * from './package/validate-package.schema';
71
72
  export * from './pagination-request.schema';
72
73
  export * from './parser';
73
- export * from './payment-invoice/payment-invoice.schema';
74
74
  export * from './payment-invoice/create-payment-invoice-request.schema';
75
75
  export * from './payment-invoice/create-payment-invoice-response.schema';
76
+ export * from './payment-invoice/payment-invoice.schema';
76
77
  export * from './positive-decimal4.schema';
77
78
  export * from './positive-money.schema';
78
79
  export * from './pre-order';
@@ -106,13 +107,13 @@ export * from './report/user-activity-by-section.schema';
106
107
  export * from './report/user-activity-summary-row.schema';
107
108
  export * from './report/user-activity-timeline-row.schema';
108
109
  export * from './service/service.schema';
109
- export * from './settings/settings.schema';
110
- export * from './settings/settings-private.schema';
111
- export * from './settings/settings-private-response.schema';
112
110
  export * from './settings/city-delivery-pricing-rule.schema';
113
111
  export * from './settings/default-delivery-pricing-rule.schema';
114
- export * from './settings/group-delivery-pricing-rule.schema';
115
112
  export * from './settings/delivery-pricing-tiers.schema';
113
+ export * from './settings/group-delivery-pricing-rule.schema';
114
+ export * from './settings/settings-private-response.schema';
115
+ export * from './settings/settings-private.schema';
116
+ export * from './settings/settings.schema';
116
117
  export * from './transaction';
117
118
  export * from './transaction/transaction-list.schema';
118
119
  export * from './transaction/transaction.schema';
@@ -129,7 +130,6 @@ export * from './write-off/write-off-archive-file.schema';
129
130
  export * from './write-off/write-off-export.schema';
130
131
  export * from './write-off/write-off-list.schema';
131
132
  export * from './write-off/write-off.schema';
132
- export * from './measure-unit';
133
133
 
134
134
  export * from './integration/one-c/update-one-c-settings-request.schema';
135
135
  export * from './integration/one-c/update-one-c-settings-response.schema';
@@ -146,9 +146,31 @@ export * from './integration/moysklad';
146
146
 
147
147
  export * from './company-legal-profile';
148
148
 
149
+ export * from './company/create-company-request.schema';
150
+ export * from './company/create-company-response.schema';
149
151
  export * from './order/create-order-request.schema';
150
152
  export * from './order/create-order-response.schema';
151
153
  export * from './order/update-order-request.schema';
152
154
  export * from './order/update-order-response.schema';
153
- export * from './company/create-company-request.schema';
154
- export * from './company/create-company-response.schema';
155
+
156
+ export * from './auth';
157
+ export * from './company';
158
+ export * from './company/get-company-list-request.schema';
159
+ export * from './domain/get-domain-list-request.schema';
160
+ export * from './domain/get-domain-list-response.schema';
161
+ export * from './session/session.schema';
162
+ export * from './session/validate-session-s2s-request.schema';
163
+ export * from './session/validate-session-s2s-response.schema';
164
+ export * from './session/validate-ws-ticket-s2s-request.schema';
165
+ export * from './session/validated-session-user.schema';
166
+ export * from './work-session/create-many-work-session-request.schema';
167
+ export * from './work-session/create-many-work-session-response.schema';
168
+ export * from './work-session/create-work-session-for-employee.schema';
169
+ export * from './work-session/create-work-session.schema';
170
+ export * from './work-session/export-overtime-request.schema';
171
+ export * from './work-session/export-overtime-response.schema';
172
+ export * from './work-session/overtime-file.schema';
173
+ export * from './work-session/update-work-session.schema';
174
+ export * from './work-session/work-session-date.schema';
175
+ export * from './work-session/work-session-extended-list.schema';
176
+ export * from './work-session/work-session-extended.schema';
@@ -6,7 +6,7 @@ export const UpdateGroupProductUpdateBatchRequestDataSchema = z.object({
6
6
  name: z.string(),
7
7
  categoryUUID: z.string(),
8
8
  price: MoneySchema,
9
- costPrice: MoneySchema,
9
+ costPrice: MoneySchema.nullable(),
10
10
  color: z.string().nullable(),
11
11
  size: z.string().nullable(),
12
12
  multiplicity: z.coerce.number(),