Atendimento.Schema.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { z } from "zod";
  2. const protocoloSchema = z.object({
  3. Id: z.number().int().positive(),
  4. Codigo: z.string().min(1),
  5. Status: z.number().int()
  6. });
  7. const clienteSchema = z.object({
  8. Id: z.number().int().positive(),
  9. Nome: z.string().min(1),
  10. Foto: z.string().nullish(),
  11. Wid: z.string().nullish(),
  12. Ultima2: z.string().nullish(),
  13. Ultimacliente2: z.string().nullish(),
  14. Deadmensage2: z.boolean().nullish()
  15. }).passthrough();
  16. const mensagemSchema = z.object({
  17. Id: z.number().int().positive(),
  18. Body: z.string().nullish(),
  19. Resposta: z.number().int().nullish(),
  20. Timestamp: z.string().datetime({ offset: true }).nullish(),
  21. Tipodemidia: z.string().nullish(),
  22. Midia: z.string().nullish(),
  23. Autor: z.string().nullish(),
  24. Citacao: z.string().nullish()
  25. }).passthrough();
  26. export const atendimentoPayloadSchema = z.object({
  27. status: z.boolean().optional(),
  28. Protocolo: protocoloSchema,
  29. Cliente: clienteSchema,
  30. Mensagens: z.array(mensagemSchema).default([])
  31. }).passthrough();
  32. export const atendimentoBodySchema = z.object({
  33. setor: z.string().min(1).max(100).optional(),
  34. atendimento: atendimentoPayloadSchema
  35. });
  36. export const atendimentoUrlSchema = z.object({
  37. url: z.string().url().startsWith("https://"),
  38. setor: z.string().min(1).max(100).optional()
  39. });
  40. export const protocolosAbertosSchema = z.object({
  41. status: z.boolean().optional(),
  42. Total: z.number().int().optional(),
  43. Protocolos: z.array(
  44. z.object({
  45. Id: z.number().int().positive(),
  46. Codigo: z.string().min(1),
  47. Abertura: z.string().datetime({ offset: true }).nullish(),
  48. Cliente: z.object({
  49. Id: z.number().int().positive(),
  50. Nome: z.string().min(1),
  51. Telefone: z.string().nullish(),
  52. Wid: z.string().nullish()
  53. }).passthrough()
  54. }).passthrough()
  55. )
  56. }).passthrough();
  57. export const protocoloMensagensSchema = z.object({
  58. status: z.boolean().optional(),
  59. Mensagens: z.array(mensagemSchema).default([])
  60. }).passthrough();
  61. export const atendimentoSyncSchema = z.object({
  62. pagina: z.number().int().positive().optional(),
  63. limite: z.number().int().positive().max(200).optional(),
  64. inicio: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
  65. fim: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
  66. });
  67. export const atendimentoSyncAllSchema = z.object({
  68. limite: z.number().int().positive().max(200).optional(),
  69. maxPaginas: z.number().int().positive().max(100).optional()
  70. });
  71. export const atendimentoAvaliarSchema = z.object({
  72. limite: z.number().int().positive().max(200).optional()
  73. });