[{"data":1,"prerenderedAt":6624},["ShallowReactive",2],{"docs-nav-docs_es":3,"docs-search-docs_es":253,"doc-docs_es-\u002Fdocs\u002Fapi\u002Freference\u002Fsite":6206,"surround-docs_es-\u002Fdocs\u002Fapi\u002Freference\u002Fsite":6623},[4],{"title":5,"path":6,"stem":7,"children":8,"page":62},"Docs","\u002Fdocs","docs",[9,13,17,21,63,96,109,150,179,183,212,216,220,245,249],{"title":10,"path":11,"stem":12},"Introducción","\u002Fdocs\u002Fintroduction","docs\u002F01.introduction",{"title":14,"path":15,"stem":16},"Primeros pasos","\u002Fdocs\u002Fgetting-started","docs\u002F02.getting-started",{"title":18,"path":19,"stem":20},"Cómo funciona","\u002Fdocs\u002Fhow-it-works","docs\u002F03.how-it-works",{"title":22,"path":23,"stem":24,"children":25,"page":62},"Conceptos","\u002Fdocs\u002Fconcepts","docs\u002F04.concepts",[26,30,34,38,42,46,50,54,58],{"title":27,"path":28,"stem":29},"Workspaces y recursos","\u002Fdocs\u002Fconcepts\u002Fworkspaces-and-resources","docs\u002F04.concepts\u002F1.workspaces-and-resources",{"title":31,"path":32,"stem":33},"Servicios y disponibilidad","\u002Fdocs\u002Fconcepts\u002Fservices-and-availability","docs\u002F04.concepts\u002F2.services-and-availability",{"title":35,"path":36,"stem":37},"Reservas y pre-reservas","\u002Fdocs\u002Fconcepts\u002Fbookings-and-holds","docs\u002F04.concepts\u002F3.bookings-and-holds",{"title":39,"path":40,"stem":41},"Automatizaciones","\u002Fdocs\u002Fconcepts\u002Fautomations","docs\u002F04.concepts\u002F4.automations",{"title":43,"path":44,"stem":45},"Búsqueda global","\u002Fdocs\u002Fconcepts\u002Fglobal-search","docs\u002F04.concepts\u002F5.global-search",{"title":47,"path":48,"stem":49},"Resultados y ventas","\u002Fdocs\u002Fconcepts\u002Fsales-results","docs\u002F04.concepts\u002F6.sales-results",{"title":51,"path":52,"stem":53},"Cómo llamás a las cosas","\u002Fdocs\u002Fconcepts\u002Fvocabulary","docs\u002F04.concepts\u002F7.vocabulary",{"title":55,"path":56,"stem":57},"Temas y paletas","\u002Fdocs\u002Fconcepts\u002Fthemes","docs\u002F04.concepts\u002F8.themes",{"title":59,"path":60,"stem":61},"Wagy, tu asistente","\u002Fdocs\u002Fconcepts\u002Fwagy","docs\u002F04.concepts\u002F9.wagy",false,{"title":64,"path":65,"stem":66,"children":67,"page":62},"Canales","\u002Fdocs\u002Fchannels","docs\u002F05.channels",[68,72,76,80,84,88,92],{"title":69,"path":70,"stem":71},"WhatsApp","\u002Fdocs\u002Fchannels\u002Fwhatsapp","docs\u002F05.channels\u002F01.whatsapp",{"title":73,"path":74,"stem":75},"Chat web","\u002Fdocs\u002Fchannels\u002Fwebchat","docs\u002F05.channels\u002F02.webchat",{"title":77,"path":78,"stem":79},"Telegram","\u002Fdocs\u002Fchannels\u002Ftelegram","docs\u002F05.channels\u002F03.telegram",{"title":81,"path":82,"stem":83},"Pausas y Estado","\u002Fdocs\u002Fchannels\u002Fpauses-and-status","docs\u002F05.channels\u002F04.pauses-and-status",{"title":85,"path":86,"stem":87},"Inbox","\u002Fdocs\u002Fchannels\u002Finbox","docs\u002F05.channels\u002F05.inbox",{"title":89,"path":90,"stem":91},"Formulario","\u002Fdocs\u002Fchannels\u002Fform","docs\u002F05.channels\u002F06.form",{"title":93,"path":94,"stem":95},"Instagram","\u002Fdocs\u002Fchannels\u002Finstagram","docs\u002F05.channels\u002F07.instagram",{"title":97,"path":98,"stem":99,"children":100,"page":62},"Bot y conocimiento","\u002Fdocs\u002Fbot","docs\u002F06.bot",[101,105],{"title":102,"path":103,"stem":104},"El bot y la IA","\u002Fdocs\u002Fbot\u002Foverview","docs\u002F06.bot\u002F01.overview",{"title":106,"path":107,"stem":108},"Conocimiento del bot","\u002Fdocs\u002Fbot\u002Fknowledge","docs\u002F06.bot\u002F02.knowledge",{"title":110,"path":111,"stem":112,"children":113,"page":62},"Trabajo, mapa y reglas","\u002Fdocs\u002Fwork","docs\u002F07.work",[114,118,122,126,130,134,138,142,146],{"title":115,"path":116,"stem":117},"Trabajo y acciones","\u002Fdocs\u002Fwork\u002Ftasks-and-actions","docs\u002F07.work\u002F01.tasks-and-actions",{"title":119,"path":120,"stem":121},"Mapa y direcciones","\u002Fdocs\u002Fwork\u002Fmap-and-addresses","docs\u002F07.work\u002F02.map-and-addresses",{"title":123,"path":124,"stem":125},"Reglas","\u002Fdocs\u002Fwork\u002Fflows","docs\u002F07.work\u002F03.flows",{"title":127,"path":128,"stem":129},"Condiciones de las reglas","\u002Fdocs\u002Fwork\u002Fconditions","docs\u002F07.work\u002F04.conditions",{"title":131,"path":132,"stem":133},"Zonas","\u002Fdocs\u002Fwork\u002Fzones","docs\u002F07.work\u002F05.zones",{"title":135,"path":136,"stem":137},"Portal de seguimiento del cliente","\u002Fdocs\u002Fwork\u002Ftracking-portal","docs\u002F07.work\u002F06.tracking-portal",{"title":139,"path":140,"stem":141},"Pagos con Mercado Pago","\u002Fdocs\u002Fwork\u002Fpayments","docs\u002F07.work\u002F07.payments",{"title":143,"path":144,"stem":145},"Flujos","\u002Fdocs\u002Fwork\u002Fservice-flows","docs\u002F07.work\u002F08.service-flows",{"title":147,"path":148,"stem":149},"Gastos y movimientos","\u002Fdocs\u002Fwork\u002Fexpenses","docs\u002F07.work\u002F09.expenses",{"title":151,"path":152,"stem":153,"children":154,"page":62},"Equipo","\u002Fdocs\u002Fteam","docs\u002F08.team",[155,159,163,167,171,175],{"title":156,"path":157,"stem":158},"Telegram del equipo","\u002Fdocs\u002Fteam\u002Ftelegram-team","docs\u002F08.team\u002F01.telegram-team",{"title":160,"path":161,"stem":162},"Roles y permisos","\u002Fdocs\u002Fteam\u002Froles","docs\u002F08.team\u002F02.roles",{"title":164,"path":165,"stem":166},"Notificaciones","\u002Fdocs\u002Fteam\u002Fnotifications","docs\u002F08.team\u002F03.notifications",{"title":168,"path":169,"stem":170},"Comisiones del equipo","\u002Fdocs\u002Fteam\u002Fcommissions","docs\u002F08.team\u002F04.commissions",{"title":172,"path":173,"stem":174},"Partners y colaboradores","\u002Fdocs\u002Fteam\u002Fpartners","docs\u002F08.team\u002F05.partners",{"title":176,"path":177,"stem":178},"Focus, una tarea a la vez","\u002Fdocs\u002Fteam\u002Ffocus","docs\u002F08.team\u002F06.focus",{"title":180,"path":181,"stem":182},"Inicio rápido","\u002Fdocs\u002Fquickstart","docs\u002F09.quickstart",{"title":184,"path":185,"stem":186,"children":187,"page":62},"API","\u002Fdocs\u002Fapi","docs\u002F10.api",[188,192,196,200,204,208],{"title":189,"path":190,"stem":191},"Autenticación","\u002Fdocs\u002Fapi\u002Fauthentication","docs\u002F10.api\u002F1.authentication",{"title":193,"path":194,"stem":195},"Convenciones","\u002Fdocs\u002Fapi\u002Fconventions","docs\u002F10.api\u002F2.conventions",{"title":197,"path":198,"stem":199},"Endpoints","\u002Fdocs\u002Fapi\u002Fendpoints","docs\u002F10.api\u002F3.endpoints",{"title":201,"path":202,"stem":203},"Webhooks","\u002Fdocs\u002Fapi\u002Fwebhooks","docs\u002F10.api\u002F4.webhooks",{"title":205,"path":206,"stem":207},"SDK de TypeScript y Python","\u002Fdocs\u002Fapi\u002Fsdks","docs\u002F10.api\u002F5.sdks",{"title":209,"path":210,"stem":211},"Referencia de la API","\u002Fdocs\u002Fapi\u002Freference","docs\u002F10.api\u002F6.reference",{"title":213,"path":214,"stem":215},"MCP y agentes de IA","\u002Fdocs\u002Fmcp","docs\u002F11.mcp",{"title":217,"path":218,"stem":219},"Recetas","\u002Fdocs\u002Frecipes","docs\u002F12.recipes",{"title":221,"path":222,"stem":223,"children":224,"page":62},"¿Qué pasa si…?","\u002Fdocs\u002Fque-pasa-si","docs\u002F13.que-pasa-si",[225,229,233,237,241],{"title":226,"path":227,"stem":228},"¿Qué pasa si…? Reservas y señas","\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas","docs\u002F13.que-pasa-si\u002F01.senas-y-reservas",{"title":230,"path":231,"stem":232},"¿Qué pasa si…? Avisos y canales","\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales","docs\u002F13.que-pasa-si\u002F02.avisos-y-canales",{"title":234,"path":235,"stem":236},"¿Qué pasa si…? El bot","\u002Fdocs\u002Fque-pasa-si\u002Fbot","docs\u002F13.que-pasa-si\u002F03.bot",{"title":238,"path":239,"stem":240},"¿Qué pasa si…? Servicios y tareas","\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas","docs\u002F13.que-pasa-si\u002F04.servicios-y-tareas",{"title":242,"path":243,"stem":244},"¿Qué pasa si…? Suscripción y baja","\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja","docs\u002F13.que-pasa-si\u002F05.plan-y-baja",{"title":246,"path":247,"stem":248},"Conectar Fiuit a tu IA","\u002Fdocs\u002Fconectar-tu-ia","docs\u002F14.conectar-tu-ia",{"title":250,"path":251,"stem":252},"Configurá Fiuit con Claude o ChatGPT","\u002Fdocs\u002Fconfigurar-con-tu-ia","docs\u002F15.configurar-con-tu-ia",[254,258,264,269,273,278,281,286,291,296,302,307,312,317,322,327,332,335,340,345,350,355,359,364,369,372,377,382,387,392,395,400,405,410,415,420,425,430,435,440,445,450,455,460,463,468,473,478,483,488,491,496,501,506,511,516,521,526,531,536,539,544,549,554,557,562,567,572,577,580,585,590,595,598,603,608,611,616,621,626,631,636,641,646,651,654,659,664,669,674,679,684,689,694,699,704,709,712,717,722,727,732,737,742,746,750,753,758,763,768,772,776,780,785,789,792,797,802,807,812,817,822,825,830,835,840,845,850,855,860,865,868,873,878,883,886,891,895,900,904,908,912,917,922,925,930,935,940,945,950,955,960,965,969,974,977,982,987,992,997,1002,1007,1012,1015,1020,1025,1030,1035,1040,1045,1050,1055,1060,1065,1070,1075,1080,1085,1090,1095,1100,1105,1110,1115,1120,1125,1130,1135,1140,1143,1148,1153,1158,1163,1168,1173,1178,1181,1186,1191,1196,1201,1206,1209,1214,1219,1224,1229,1234,1237,1242,1247,1252,1257,1261,1266,1271,1276,1281,1286,1291,1296,1299,1304,1309,1314,1319,1322,1327,1332,1337,1342,1347,1352,1357,1362,1367,1372,1377,1382,1387,1390,1395,1400,1405,1410,1415,1420,1424,1429,1432,1437,1442,1447,1452,1457,1462,1466,1469,1474,1479,1484,1489,1494,1499,1503,1508,1513,1518,1521,1526,1531,1536,1541,1546,1551,1556,1561,1566,1571,1576,1579,1584,1589,1594,1599,1604,1607,1612,1616,1621,1626,1631,1635,1638,1643,1648,1653,1656,1661,1666,1671,1676,1681,1686,1691,1694,1699,1704,1709,1714,1719,1724,1729,1734,1737,1742,1747,1752,1757,1760,1765,1770,1775,1780,1785,1788,1793,1798,1803,1808,1813,1817,1822,1827,1832,1837,1842,1847,1850,1855,1860,1865,1870,1875,1878,1883,1888,1893,1897,1902,1907,1911,1915,1919,1924,1927,1932,1937,1942,1947,1952,1957,1962,1967,1972,1977,1982,1987,1992,1997,2002,2007,2012,2017,2022,2027,2032,2037,2042,2047,2052,2057,2062,2067,2072,2077,2082,2087,2092,2097,2102,2107,2112,2117,2122,2127,2132,2137,2142,2147,2152,2157,2162,2167,2172,2177,2182,2187,2192,2197,2202,2207,2212,2217,2222,2227,2232,2237,2242,2247,2252,2257,2262,2267,2272,2277,2282,2287,2292,2297,2302,2307,2312,2317,2322,2327,2332,2337,2342,2347,2352,2357,2362,2367,2372,2377,2382,2387,2392,2397,2402,2407,2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2467,2472,2477,2482,2487,2492,2497,2502,2507,2512,2517,2522,2527,2532,2537,2542,2547,2552,2557,2562,2567,2572,2577,2582,2587,2592,2597,2602,2607,2612,2617,2622,2627,2632,2637,2642,2647,2652,2657,2662,2667,2672,2677,2682,2687,2692,2697,2702,2707,2712,2717,2722,2727,2732,2737,2742,2747,2752,2757,2762,2767,2772,2777,2782,2787,2792,2797,2802,2807,2812,2817,2822,2827,2832,2837,2842,2847,2852,2857,2862,2867,2872,2877,2882,2887,2892,2897,2902,2907,2912,2917,2922,2927,2932,2937,2942,2947,2952,2957,2962,2967,2972,2977,2982,2987,2992,2997,3002,3007,3012,3017,3022,3027,3032,3037,3042,3047,3052,3057,3062,3067,3072,3077,3082,3087,3092,3097,3102,3107,3112,3117,3122,3127,3132,3137,3142,3147,3152,3157,3162,3167,3172,3177,3182,3187,3192,3197,3202,3207,3212,3217,3222,3227,3232,3237,3242,3247,3252,3257,3262,3267,3272,3277,3282,3287,3292,3297,3302,3307,3312,3317,3322,3327,3332,3337,3342,3347,3352,3357,3362,3367,3372,3377,3382,3387,3392,3397,3402,3407,3412,3417,3422,3427,3432,3437,3442,3447,3452,3457,3462,3467,3472,3477,3482,3487,3492,3497,3502,3507,3512,3517,3522,3527,3532,3537,3542,3547,3552,3557,3562,3567,3572,3577,3582,3587,3592,3597,3602,3607,3612,3617,3622,3627,3632,3637,3642,3647,3652,3657,3662,3667,3672,3677,3682,3687,3692,3697,3702,3707,3712,3717,3722,3727,3732,3737,3742,3747,3752,3757,3762,3767,3772,3777,3782,3787,3792,3797,3802,3807,3812,3817,3822,3827,3832,3837,3842,3847,3852,3857,3862,3867,3872,3877,3882,3887,3892,3897,3902,3907,3912,3917,3922,3927,3930,3935,3940,3945,3950,3955,3960,3965,3970,3975,3980,3985,3990,3995,4000,4005,4009,4014,4019,4024,4029,4034,4039,4042,4047,4052,4057,4062,4067,4072,4077,4082,4087,4092,4097,4102,4105,4110,4115,4120,4125,4130,4135,4140,4145,4150,4155,4160,4165,4170,4175,4180,4185,4190,4195,4200,4205,4210,4215,4220,4225,4230,4235,4240,4245,4250,4255,4260,4265,4270,4275,4280,4285,4290,4295,4300,4305,4310,4315,4320,4325,4330,4335,4340,4345,4350,4355,4360,4365,4370,4375,4380,4385,4390,4395,4400,4405,4410,4415,4420,4425,4430,4435,4440,4445,4450,4455,4460,4465,4470,4475,4480,4485,4488,4493,4498,4503,4508,4513,4518,4523,4528,4533,4538,4543,4548,4553,4558,4563,4568,4573,4578,4583,4588,4593,4598,4603,4608,4613,4618,4623,4628,4633,4638,4643,4648,4653,4658,4663,4668,4673,4676,4681,4686,4691,4696,4701,4706,4711,4716,4721,4726,4731,4736,4741,4746,4751,4756,4761,4766,4771,4776,4781,4786,4791,4796,4801,4806,4811,4816,4821,4826,4831,4836,4841,4846,4851,4856,4861,4866,4871,4876,4881,4886,4891,4896,4901,4906,4911,4916,4921,4926,4931,4936,4941,4946,4951,4956,4961,4966,4971,4976,4981,4986,4991,4996,5001,5006,5011,5016,5021,5026,5031,5036,5041,5046,5051,5056,5061,5066,5071,5076,5081,5086,5091,5096,5099,5104,5109,5114,5119,5124,5129,5134,5139,5142,5147,5152,5157,5162,5167,5172,5177,5182,5187,5192,5197,5202,5207,5212,5217,5222,5227,5232,5237,5242,5247,5252,5257,5262,5267,5272,5277,5282,5287,5292,5297,5302,5307,5312,5317,5322,5327,5332,5337,5342,5347,5352,5357,5362,5367,5372,5377,5382,5387,5392,5397,5402,5407,5412,5417,5422,5427,5432,5437,5442,5447,5452,5457,5462,5467,5472,5477,5482,5487,5492,5497,5502,5507,5512,5517,5522,5527,5532,5537,5542,5547,5552,5557,5562,5567,5572,5577,5582,5587,5592,5597,5602,5607,5612,5617,5622,5627,5632,5637,5642,5647,5652,5657,5662,5667,5672,5677,5682,5687,5692,5697,5702,5707,5712,5717,5722,5727,5732,5737,5742,5747,5752,5757,5762,5767,5772,5777,5780,5784,5789,5794,5799,5804,5809,5814,5819,5824,5829,5834,5839,5844,5849,5854,5859,5864,5869,5874,5879,5884,5889,5894,5899,5904,5909,5914,5919,5924,5929,5934,5939,5944,5949,5954,5959,5964,5969,5974,5979,5984,5989,5994,5999,6004,6007,6012,6017,6022,6027,6032,6037,6042,6047,6052,6057,6062,6067,6072,6077,6082,6087,6092,6097,6102,6107,6112,6117,6122,6127,6130,6135,6140,6145,6150,6155,6160,6165,6170,6175,6178,6183,6188,6193,6198,6202],{"id":11,"title":10,"titles":255,"content":256,"level":257},[],"Qué es Fiuit, para quién es y los bloques que vas a usar para atender, agendar y trabajar con tu equipo. Fiuit es una capa de automatización multicanal: conecta WhatsApp, Telegram y el chat de tu sitio con la agenda y el trabajo de tu equipo. Entiende lo que piden, propone el siguiente paso y convierte las confirmaciones en reservas y tareas. Vos definís las reglas. WhatsApp, Telegram y chat web conversan con tus clientes. Los formularios también llegan al Inbox, para atención humana. Tu equipo y la API operan sobre las mismas tareas. Esta documentación describe lo que ya está disponible. Lo que todavía no existe aparece marcado como Próximamente.",1,{"id":259,"title":260,"titles":261,"content":262,"level":263},"\u002Fdocs\u002Fintroduction#para-quién-es","Para quién es",[10],"Cualquier negocio que vende el tiempo de alguien o de algo. Fiuit usa un vocabulario genérico (tarea, recurso, servicio) y se adapta a tu rubro con un modelo inicial: NegocioQué se reserva o se haceBarberíaUn barbero por 30 a 45 minutosEstéticaUn profesional y una máquina y una cabina, al mismo tiempoClínicaUn médico y un consultorioRestauranteCubiertos en el salón según el tamaño del grupoEntregasTareas que un repartidor toma de una cola, con destino en el mapa",2,{"id":265,"title":266,"titles":267,"content":268,"level":263},"\u002Fdocs\u002Fintroduction#qué-vas-a-usar","Qué vas a usar",[10],"Hoy: lo que tenés que hacer ahora, con lo tuyo o lo de todo el equipo según tu rol.Inbox: todas las conversaciones de todos los canales en un solo lugar; tomás el control cuando haga falta.Trabajo: todas las tareas, en lista, calendario o mapa, con acciones por etapa (tomar, soltar, completar, no estaba).Clientes y Mi negocio: tus datos, tu catálogo (servicios, productos y planes), tu equipo y tus recursos (zonas, espacios y equipos), y las etapas de tus tareas, en pestañas.Atención: tus canales, el sitio web, el bot (personalidad, conocimiento y simulador), los mensajes automáticos (recordatorios y reglas con condiciones). Los modelos de WhatsApp están dentro de Canales › WhatsApp oficial, con el canal conectado.Wagy: el asistente del panel que te ayuda a configurar todo charlando.Novedades: lo último que se agregó a Fiuit y lo que viene, con un punto cuando hay algo que todavía no viste.Finanzas: movimientos, caja, comisiones, resultados del período y Cobros (Mercado Pago y reglas de seña). Configuración: Plan, Vocabulario, Notificaciones, Estado, Desarrolladores y Webhooks.",{"id":270,"title":64,"titles":271,"content":272,"level":263},"\u002Fdocs\u002Fintroduction#canales",[10],"Todos los canales usan el mismo motor: un horario reservado por WhatsApp desaparece al instante del panel, del chat web y de la API. WhatsApp con asistente de IA (texto y audio).Chat web para pegar en tu sitio.Telegram con el bot propio de tu negocio.Telegram del equipo: avisos y la Mini App \"Mi día\".",{"id":274,"title":275,"titles":276,"content":277,"level":263},"\u002Fdocs\u002Fintroduction#por-dónde-seguir","Por dónde seguir",[10],"Primeros pasos: del modelo de negocio a tu primera tarea, con Wagy.Cómo funciona: la vida de un mensaje y las garantías del motor.Trabajo y acciones y Reglas.¿Una duda puntual? Mirá ¿Qué pasa si…?: respuestas cortas sobre reservas, avisos, bot y tareas.Si desarrollás: Inicio rápido de la API, SDK y MCP. El bot de clientes reserva servicios con horario; las tareas de cola las crea el equipo desde el panel o la API. Creación de entregas en cola por chat: próximamente.",{"id":15,"title":14,"titles":279,"content":280,"level":257},[],"Guía paso a paso para armar tu negocio en Fiuit con la ayuda de Wagy, conectar un canal, probar el bot y hacer tu primera tarea. Esta guía te lleva de cero a un negocio atendiendo. Lleva unos 20 minutos y podés pedirle ayuda a Wagy en cada paso. ¿Olvidaste tu contraseña? Desde el login, ¿Olvidaste tu contraseña? te manda un enlace por email. El mensaje no revela si el email existe en Fiuit; el enlace vale 30 minutos, se usa una sola vez y te pide una contraseña nueva de 12 a 128 caracteres. Si no te llega, mirá en spam y, pasado un minuto, tocá Mandarlo de nuevo en la misma pantalla. Mientras escribís la contraseña, Wagy cierra los ojos; con el ojo del campo podés ver lo que escribiste.",{"id":282,"title":283,"titles":284,"content":285,"level":263},"\u002Fdocs\u002Fgetting-started#_1-crear-el-negocio-desde-un-modelo","1. Crear el negocio desde un modelo",[14],"Cada negocio (o sede) es un proyecto. Al crearlo elegís el tipo de negocio y Fiuit carga un modelo con servicios, recursos, horarios y etapas típicas de ese rubro: barbería, estética, clínica, restaurante o entregas. Entrá al panel y abrí el selector de proyectos.Tocá Crear proyecto, poné el nombre, elegí el tipo de negocio, la zona horaria y el idioma.Entrá al proyecto nuevo. Tu plan define cuántos proyectos podés tener; si llegaste al límite, el selector te lo avisa. Todo lo que trae el modelo se puede cambiar después. Los nombres se adaptan al rubro (por ejemplo \"Aceptar entrega\" en entregas), pero por debajo es el mismo motor.",{"id":287,"title":288,"titles":289,"content":290,"level":263},"\u002Fdocs\u002Fgetting-started#_2-configurar-con-wagy","2. Configurar con Wagy",[14],"Wagy es el asistente de configuración del panel: un bot amigable al que le contás qué hacés y arma tu negocio con vos. Lo abrís con el botón Hablar con Wagy. Lo usan el dueño, los encargados y los colaboradores, según sus permisos. Contale tu negocio (\"Tengo una barbería con tres barberos\").Wagy te propone un plan de cambios: una tarjeta con lo que va a crear o modificar (servicios, horarios, recursos, reglas del bot, automatizaciones).Revisá el plan y tocá Confirmar, Ajustar (seguís conversando y te arma otro) o Descartar. Nada se aplica sin tu confirmación.Si no te gusta el resultado, tocá Deshacer: podés deshacer el último plan aplicado durante 24 horas. Wagy también te muestra una lista de Primeros pasos que se marca sola con tus datos reales: perfil del negocio, horario de atención, servicios, equipo, canal conectado, bot probado, primera reserva y primera tarea completada. Y te manda avisos discretos (no más de dos por día) que podés cerrar o silenciar. ¿No sabés cómo se hace algo? Preguntale a Wagy, por ejemplo «¿cómo conecto WhatsApp?»: te responde con los pasos de estas guías y el enlace a la guía. Si no está documentado te lo dice, sin inventar, y te ofrece hablar con una persona del equipo de Fiuit. Wagy nunca te pide contraseñas ni tokens: para conectar un canal te lleva a la pantalla correspondiente. Los primeros mensajes con Wagy los paga la plataforma; después consume la cuota de IA de tu plan.",{"id":292,"title":293,"titles":294,"content":295,"level":263},"\u002Fdocs\u002Fgetting-started#_3-revisar-lo-básico-a-mano","3. Revisar lo básico a mano",[14],"Si preferís el panel, estas son las pantallas: Mi negocio → Datos: nombre, zona horaria, moneda, idioma, dirección y política de cancelación.Mi negocio → Catálogo: servicios, productos y suscripciones. Filtrá por tipo, estado y categoría; abrí un plan para ver quiénes lo tienen. Las zonas, salas, equipos y vehículos viven en Mi negocio → Equipo y recursos.Mi negocio → Equipo y recursos: personas, horarios, roles e invitaciones. Tocá Agregar para crear una persona o invitarla; abrí su ficha para gestionar su acceso y enlace de agenda (ver roles y permisos).",{"id":297,"title":298,"titles":299,"content":300,"level":301},"\u002Fdocs\u002Fgetting-started#fotos-perfil-equipo-y-logo","Fotos: perfil, equipo y logo",[14,293],"Todas las fotos del panel usan el mismo editor de fotos: tocá la foto (o Elegir foto), sacala con la cámara del celular, elegila de la galería o, en la computadora, arrastrala o pegala con Ctrl\u002FCmd+V. En la foto de perfil (Mi cuenta) y en la de cada persona (su perfil en Personas) se abre el editor: arrastrá para encuadrar, pellizcá o usá la rueda para el zoom, rotá y mirá cómo queda en las listas y en la ficha antes de tocar Listo. El logo (Mi negocio → Datos) no se recorta: conserva la transparencia y se guarda como miniatura cuadrada. Las fotos del iPhone (HEIC) también sirven. La foto se achica en tu teléfono antes de subir (unos pocos KB) y se guarda sin la ubicación ni otros datos del archivo.",3,{"id":303,"title":304,"titles":305,"content":306,"level":263},"\u002Fdocs\u002Fgetting-started#_4-conectar-un-canal","4. Conectar un canal",[14],"Andá a Atención → Canales: WhatsApp: escaneá un QR. Mirá WhatsApp.Chat web: pegá una línea de código en tu sitio. Mirá Chat web.Telegram: pegá el token de tu bot. Mirá Telegram. Todas las conversaciones llegan a la misma bandeja, el Inbox.",{"id":308,"title":309,"titles":310,"content":311,"level":263},"\u002Fdocs\u002Fgetting-started#_5-probar-el-bot","5. Probar el bot",[14],"Antes de abrirlo a clientes reales, usá el Simulador en Atención → Bot. Conversás con el bot como si fueras un cliente, sin enviar mensajes reales; las reservas que hace son de prueba. Probá frases como \"quiero reservar\", \"¿cuánto sale?\" o \"¿hasta qué hora abren?\". Ajustá la personalidad y cargá conocimiento (ver Bot y conocimiento).",{"id":313,"title":314,"titles":315,"content":316,"level":263},"\u002Fdocs\u002Fgetting-started#_6-tu-primera-tarea","6. Tu primera tarea",[14],"Tocá Nueva tarea (está en la barra superior, en cualquier pantalla). Esperá a que termine la carga del catálogo; los campos permanecen inactivos y podés cerrar el diálogo mientras carga.Elegí al cliente (buscalo o creá uno), después el servicio. El próximo horario libre ya aparece propuesto: tocá Continuar o cambialo.Revisá el resumen (co-responsables, repetir y notas están en Más opciones) y tocá Crear. La tarea aparece en Hoy y en Trabajo.",{"id":318,"title":319,"titles":320,"content":321,"level":263},"\u002Fdocs\u002Fgetting-started#_7-ver-el-día-en-hoy","7. Ver el día en Hoy",[14],"Hoy muestra lo que hay que hacer ahora. Los Dueños y Encargados ven todo; el equipo ve lo suyo. Desde «Ver» elegís qué mostrar: «Hoy» (el día), «Próximos» (hoy y los 7 días siguientes, agrupados por día), «Completadas» (lo terminado de cualquier día, lo más reciente primero; «Cargar más» trae la siguiente tanda) o «Pendientes» (todo lo abierto, en Atrasadas, Hoy y Próximas, sin límite de fecha). Las canceladas se ven solo en Trabajo. Desde cada tarea avanzás de etapa con las acciones disponibles. Seguí con Trabajo y acciones.",{"id":323,"title":324,"titles":325,"content":326,"level":263},"\u002Fdocs\u002Fgetting-started#próximos-pasos","Próximos pasos",[14],"Reglas y condiciones: recordatorios y avisos automáticos.Telegram del equipo: avisos y \"Mi día\" en el celular.Pausas y Estado: qué hacer si algo se complica.",{"id":328,"title":329,"titles":330,"content":331,"level":263},"\u002Fdocs\u002Fgetting-started#permisos-de-wagy","Permisos de Wagy",[14],"Wagy usa los mismos permisos que el panel y la API: solo te ofrece las acciones permitidas para tu rol. Si tu acceso cambia antes de confirmar un plan, vuelve a comprobarlo y no aplica cambios sin permiso. El personal operativo y quienes solo pueden ver siguen sin acceso a Wagy.",{"id":19,"title":18,"titles":333,"content":334,"level":257},[],"Arquitectura, principios y la vida de un mensaje, desde que llega por un canal hasta que se convierte en una tarea, una acción o un aviso.",{"id":336,"title":337,"titles":338,"content":339,"level":263},"\u002Fdocs\u002Fhow-it-works#principios","Principios",[18],"Núcleo determinístico, IA como intérprete. La IA entiende al cliente y llama herramientas. El motor calcula disponibilidad, pre-reserva y confirma. La IA nunca inventa un horario ni un precio.La base de datos garantiza las reglas. El sobreturno es imposible porque PostgreSQL rechaza asignaciones superpuestas, no porque la app \"chequee antes\".Una verdad operativa, muchas vistas. Una tarea es un solo objeto; la ves en Hoy, en lista, en calendario o en el mapa.API primero. El panel, el bot, el MCP y Wagy usan los mismos servicios. Si algo no se puede hacer por API, falta en la API.La credencial define el negocio. Una clave o sesión siempre pertenece a un proyecto.",{"id":341,"title":342,"titles":343,"content":344,"level":263},"\u002Fdocs\u002Fhow-it-works#de-la-entrada-a-la-acción","De la entrada a la acción",[18],"Entradas → motor → interpretación → acciones. Este es el recorrido de una conversación, no una cadena obligatoria: el panel y la API llaman al motor directamente; los formularios van a una persona. La IA vuelve al motor para validar cada propuesta antes de actuar. Entradas → Motor Fiuit → IA interpreta → Acciones y salidas La IA no ejecuta por su cuenta: pide herramientas y el motor valida permisos, disponibilidad y confirmaciones. Las reservas y las tareas comparten una verdad operativa. Los avisos dependen de tus reglas y del canal; el chat web responde durante la conversación, sin recordatorios proactivos. El bot de clientes reserva servicios con horario; las tareas de cola las crea el equipo desde el panel o la API. Creación de entregas en cola por chat: próximamente. WhatsApp → reserva «¿Tenés turno mañana para corte con Juan?» Fiuit consulta horarios reales, ofrece opciones y retiene la elegida por 10 minutos. Pide los datos que faltan y confirmación; recién entonces el motor confirma la reserva. Juan la ve en su agenda. Telegram → reserva con horario «¿Tienen mesa para cuatro mañana a las 20:00?» Fiuit consulta los horarios del servicio, retiene la opción elegida por 10 minutos y pide los datos y la confirmación. Cuando el cliente confirma, el motor registra la reserva y el equipo la ve en su agenda. El equipo crea la entrega desde el panel con un servicio de cola, el cliente y la dirección, sin elegir un horario. Después puede asignar, tomar y completar la tarea desde Trabajo. Los avisos dependen de las reglas activadas. Crear entregas en cola automáticamente por chat: próximamente.",{"id":346,"title":347,"titles":348,"content":349,"level":263},"\u002Fdocs\u002Fhow-it-works#la-vida-de-un-mensaje","La vida de un mensaje",[18],"Entra y se ordena. El canal verifica el origen y descarta mensajes repetidos. El motor conserva el contexto en el Inbox y respeta las pausas. Formularios: entrada para atención humana, sin bot automático.Se respeta el contexto. Se identifica al cliente y la conversación. Si una persona tomó el control, el bot no responde. Las acciones del equipo y la API tienen sus propios permisos y no necesitan pasar por la IA.La IA interpreta. En los canales conversacionales, el modelo entiende la intención, consulta datos del negocio mediante herramientas y pide lo que falta. El audio se transcribe solo donde el canal lo soporta.Propuesta y confirmación. El motor comprueba reglas, permisos y disponibilidad. Una opción elegida queda retenida 10 minutos; el cliente confirma antes de convertirla en reserva. Si algo cambió, se ofrecen alternativas.El motor ejecuta. Las operaciones idempotentes evitan repetir una acción al reintentarla. La base impide reservas superpuestas. Fechas, precios y confirmaciones se comunican con datos reales del sistema, en plantillas.Trabajo, avisos y diálogo. Una reserva creada por chat o una entrega en cola registrada por el equipo desde el panel aparece como tarea para el equipo. Las reglas activas generan avisos y acciones permitidas. Fiuit también responde consultas y deriva a una persona; no todo mensaje necesita crear una tarea.",{"id":351,"title":352,"titles":353,"content":354,"level":263},"\u002Fdocs\u002Fhow-it-works#tareas-etapas-y-acciones","Tareas, etapas y acciones",[18],"Cada negocio define las etapas por las que pasa su trabajo y las acciones que mueven una tarea de una a otra (tomar, soltar, completar, \"no estaba\"). Una acción puede tener efectos: asignar a quien la ejecuta, liberar, cerrar con un resultado. Mirá Trabajo y acciones.",{"id":356,"title":123,"titles":357,"content":358,"level":263},"\u002Fdocs\u002Fhow-it-works#reglas",[18],"Una regla dice \"cuando pase esto, si se cumple esta condición, hacé aquello\": enviar un mensaje, avisar al equipo, esperar, ejecutar una acción. Las condiciones son expresiones simples sobre la tarea, el cliente o la hora.",{"id":360,"title":361,"titles":362,"content":363,"level":263},"\u002Fdocs\u002Fhow-it-works#seguridad","Seguridad",[18],"Cada negocio está aislado en la propia base de datos, los secretos van cifrados y cada cambio queda en un registro de auditoría. Vos sos el responsable de los datos de tus clientes; Fiuit los trata en tu nombre.",{"id":365,"title":366,"titles":367,"content":368,"level":263},"\u002Fdocs\u002Fhow-it-works#a-dónde-seguir","A dónde seguir",[18],"Reservas y pre-reservas: las garantías de la agenda.Bot y IA: qué puede y qué no puede hacer el asistente.",{"id":28,"title":27,"titles":370,"content":371,"level":257},[],"Organizaciones, workspaces, roles, recursos y equipos de recursos.",{"id":373,"title":374,"titles":375,"content":376,"level":263},"\u002Fdocs\u002Fconcepts\u002Fworkspaces-and-resources#organización-y-workspaces","Organización y workspaces",[27],"En el panel, un workspace se llama proyecto: podés tener varios y cambiar entre ellos con el selector de proyectos. Una organización es la cuenta que paga. Contiene uno o más workspaces. Un workspace es un negocio o sede con sus propios: zona horaria, idioma y moneda,número(s) de WhatsApp,bot, servicios, recursos y equipo. Una cadena de tres barberías es una organización con tres workspaces.",{"id":378,"title":379,"titles":380,"content":381,"level":263},"\u002Fdocs\u002Fconcepts\u002Fworkspaces-and-resources#roles","Roles",[27],"Detalle completo de cada rol y de los permisos en Roles y permisos. RolPuedeownerTodo, en todos los workspaces de la organizaciónmanagerTodo dentro de un workspacestaffVer y gestionar solo sus propios recursos (por ejemplo, el barbero ve solo su agenda)viewerSolo lectura El equipo también puede actuar por WhatsApp después de vincular su número con un código de un solo uso. Las acciones de administrador por WhatsApp siempre piden confirmación SÍ\u002FNO.",{"id":383,"title":384,"titles":385,"content":386,"level":263},"\u002Fdocs\u002Fconcepts\u002Fworkspaces-and-resources#recursos","Recursos",[27],"Un recurso es cualquier cosa que una reserva consume. kindEjemplosstaffBarbero, médico, esteticista, instructorspaceSala, consultorio, cabina, salónequipmentMáquina de láser, sillón, canchatableMesa de restaurante (modo mesas)vehicleCamioneta, equipo de repartozoneZona de entrega por código postal",{"id":388,"title":389,"titles":390,"content":391,"level":263},"\u002Fdocs\u002Fconcepts\u002Fworkspaces-and-resources#equipos-de-recursos","Equipos de recursos",[27],"Un equipo de recursos es un conjunto intercambiable (\"cualquier barbero\", \"máquinas de láser\"). Los servicios piden equipos, no recursos individuales, para que el motor elija uno. La estrategia de asignación decide cuál: assignmentComportamientocustomer_choiceElige el cliente (por ejemplo \"con Juan\"); si le da igual, usa otra estrategiaround_robinRota entre los miembrosleast_busyElige al miembro con menos reservas en el díafixedSiempre el mismo miembro (una sola máquina, una sola sala) {\n  \"name\": \"Barberos\",\n  \"assignment\": \"customer_choice\",\n  \"member_ids\": [\"res_juan\", \"res_pedro\", \"res_leo\"]\n} Los equipos se gestionan en Mi negocio → Equipo y recursos, bajo el título Equipos de trabajo. El rol Equipo da acceso al panel; no es requisito para pertenecer a un equipo de trabajo. Una persona puede recibir tareas sin cuenta ni teléfono. Podés invitarla después desde Invitar al panel, en su ficha. Cada equipo muestra los servicios que lo usan y las zonas atendidas por sus miembros. La ficha y el alta de personas no piden un modo de atención. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":32,"title":31,"titles":393,"content":394,"level":257},[],"Servicios, requisitos con varios recursos, horarios y cómo se calculan los slots.",{"id":396,"title":397,"titles":398,"content":399,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#servicios","Servicios",[31],"Un servicio es lo que reserva el cliente. CampoSignificadoduration_minDuración del serviciostep_minGrilla de inicio (cada 15, 30 minutos…)buffer_before_min \u002F buffer_after_minTiempo de preparación o limpieza bloqueado alrededor de la reservaprice_cents, currencyPrecio que informa el bot (siempre desde la base de datos)deposit_centsSeña necesaria para confirmar (cobro en línea: próximamente)booking_paymentQué se cobra al confirmar un turno: none, deposit (la seña) o total (el valor de la tarea)lead_time_minAnticipación mínima (por ejemplo 60 minutos)max_advance_daysCon cuánta anticipación máxima se puede reservarwindow_modeEl slot es una ventana fija (entregas: 14:00–16:00)fulfillment_modescheduled (default, con horario) o queue (despacho por cola, sin horario fijo)location_modeDónde se presta: en el local, en la dirección del cliente, a elección o a distanciacolorColor que identifica al servicio en todas las vistasintake_formJSON Schema de datos extra a pedir (obra social, dirección…)requirementsQué recursos necesita el servicio al mismo tiempo",{"id":401,"title":402,"titles":403,"content":404,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#ventana-o-despacho-dos-modos-de-cumplimiento","Ventana o despacho: dos modos de cumplimiento",[31],"Cada servicio define cómo se cumple lo reservado (fulfillment_mode): scheduled (el default): la reserva ocupa un rango de tiempo conocido — un horario fijo o, con window_mode, una ventana (entregas de 14:00 a 16:00, con cupo por zona).queue (despacho, para agua, gas o delivery on-demand): la reserva no tiene horario fijo — entra en la cola de pendientes de un repartidor. El motor la asigna al repartidor con menos tareas activas y cada repartidor tiene un cupo de tareas activas a la vez, garantizado en la base de datos. La cola usa los mismos estados que una reserva: pendiente → aceptada → iniciada → finalizada (o fallida). Así, un mismo negocio de entregas puede ofrecer ventanas programadas, despacho inmediato o ambos.",{"id":406,"title":407,"titles":408,"content":409,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#requisitos","Requisitos",[31],"Un requisito dice: de este equipo, necesito tantas unidades. Un servicio puede tener varios; un slot existe solo si todos están libres. {\n  \"name\": \"Depilación láser\",\n  \"duration_min\": 45,\n  \"buffer_after_min\": 10,\n  \"requirements\": [\n    { \"resource_group_id\": \"grp_professionals\", \"units\": 1 },\n    { \"resource_group_id\": \"grp_lasers\", \"units\": 1 },\n    { \"resource_group_id\": \"grp_rooms\", \"units\": 1 }\n  ]\n} Con dos profesionales y un solo láser, Fiuit nunca ofrece dos sesiones de láser superpuestas. Opciones avanzadas: units: \"party_size\" — consume tantas unidades como personas (restaurantes, clases).offset_min \u002F duration_min en un requisito — usa un recurso solo en parte del servicio (por ejemplo el lavacabezas en los últimos 15 minutos de un color).",{"id":411,"title":412,"titles":413,"content":414,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#horarios","Horarios",[31],"Cada recurso tiene un horario: reglas semanales en la zona horaria del recurso más excepciones para fechas puntuales (cerrado u horario especial). Horarios que cruzan medianoche. Si la hora de cierre es menor o igual que la de apertura, el tramo termina al día siguiente: [\"20:00\", \"03:00\"] se muestra 20:00 – 03:00 (+1). La noche pertenece al día en que abre: el viernes 20:00 – 03:00 (+1) sigue hasta el sábado a las 03:00 aunque el sábado esté cerrado, y cerrar el viernes quita esa noche entera. Las 24 horas se escriben [\"00:00\", \"00:00\"]. No se puede guardar un tramo que pise la madrugada del día siguiente. Una reserva puede cruzar las 00:00 sin cortarse, y al pedir los horarios de «un día» (bot, reserva pública, GET \u002Fv1\u002Fslots?day=) entran los de su noche después de las 00:00. Los cambios de horario de verano se respetan: una noche con cambio de hora dura sus horas reales. {\n  \"tz\": \"America\u002FArgentina\u002FBuenos_Aires\",\n  \"weekly\": { \"tue\": [[\"09:00\", \"19:00\"]], \"sat\": [[\"08:00\", \"12:00\"], [\"13:00\", \"16:00\"]] },\n  \"overrides\": [{ \"date\": \"2026-12-24\", \"ranges\": [[\"09:00\", \"13:00\"]] }, { \"date\": \"2026-12-25\", \"closed\": true }]\n}",{"id":416,"title":417,"titles":418,"content":419,"level":301},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#bloquear-un-horario","Bloquear un horario",[31,412],"Un bloqueo es una excepción del día: todo el día (cerrado) o algunas horas (se guarda como los tramos que sí se atienden ese día: el horario semanal menos lo bloqueado). Desde el panel se bloquea con el mismo diálogo en el Calendario (tocando un hueco o arrastrando sobre la grilla), en la ficha de cada recurso (Horarios y bloqueos) y, aparte, en el servicio (Pausar por un rango, que cierra solo ese servicio y no bloquea a los recursos que lo atienden). Se puede elegir uno o varios recursos, un rango de días o repetirlo cada semana. Las tareas que ya estaban en ese horario se avisan y no se mueven solas. Si varios recursos comparten un mismo horario, el bloqueo vale para todos.",{"id":421,"title":422,"titles":423,"content":424,"level":301},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#días-y-horarios-propios-del-servicio","Días y horarios propios del servicio",[31,412],"Un servicio también puede tener su propia ventana: los días y rangos en que se presta, con el mismo editor semanal de los recursos. La oferta siempre es la intersección: la ventana del servicio recorta la disponibilidad del equipo, nunca la amplía. Si el servicio no define ventana, se ofrece cualquier horario que sus recursos tengan. El editor muestra una vista previa con la intersección real antes de guardar, y el bot explica la ventana cuando no hay turnos.",{"id":426,"title":427,"titles":428,"content":429,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#color","Color",[31],"Cada servicio elige un color de la paleta del tema. Lo ves en el calendario, en Hoy, en Trabajo, en el mapa y en las estadísticas, junto al nombre: el color identifica, pero no reemplaza al texto. Si no elegís uno, Fiuit asigna un color estable automáticamente.",{"id":431,"title":432,"titles":433,"content":434,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#dónde-se-presta","Dónde se presta",[31],"Cada servicio define su destino: En el local: la tarea ocurre en la dirección del negocio.En la dirección del cliente: entregas, visitas, servicio en domicilio.A elección del cliente: el cliente decide al reservar.A distancia: una sesión por videollamada o teléfono. No se pide ni se muestra ninguna dirección: ni en el bot, ni en la reserva web, ni en los avisos. Podés cargar el enlace de la reunión del servicio (el de tu sala de videollamada): el bot lo comparte al confirmar y los recordatorios lo repiten. Fiuit no genera el enlace. Cuando el destino es la dirección del cliente, al crear la tarea Fiuit propone la dirección que ya tiene guardada (con autocompletar o carga manual, ver Mapa y direcciones). Cada tarea guarda su propio destino: cambiarla en una tarea no toca las demás ni el perfil. Guardar la dirección nueva en el perfil del cliente es opcional y aparte: solo pasa si marcás la casilla de consentimiento. El bot confirma la dirección, el consentimiento y la reserva como pasos separados.",{"id":436,"title":437,"titles":438,"content":439,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#formularios-con-cantidades-y-cálculos","Formularios con cantidades y cálculos",[31],"Además de los campos de texto, el formulario de un servicio admite: Cantidades: cuántas unidades de algo (bidones, metros, personas, equipos).Campos calculados: una expresión simple que combina cantidades y precios para mostrar un total (por ejemplo agua * 1500 + gas * 3000). El cálculo se valida en el servidor y no puede tocar datos de otros módulos ni de otros negocios. El panel tiene editor y vista previa: probá el resultado antes de guardar. Al crear la tarea, el formulario pide las cantidades, aplica el cálculo y muestra el total; el cliente ve un resumen claro con lo que pidió. La cotización queda congelada con la tarea: si el precio del catálogo cambia antes de confirmar, la tarea ya armada conserva su total; editar las cantidades a mano recalcula con el catálogo vigente.",{"id":441,"title":442,"titles":443,"content":444,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#cómo-se-calculan-los-slots","Cómo se calculan los slots",[31],"Expandir los horarios para el rango pedido, en la zona horaria de cada recurso.Restar reservas y pre-reservas activas (más los buffers) y bloqueos manuales.Cortar en slots candidatos según la duración y la grilla del servicio.Aplicar anticipación mínima y máxima, reglas de corte y tamaño del grupo.Cruzar todos los requisitos, probando los miembros de cada equipo según la estrategia de asignación.Devolver una lista corta y ordenada. Cuando no hay nada disponible, la respuesta trae unavailable_reason (closed, no_staff, no_equipment, no_space, lead_time, max_advance, cutoff, full) para que el bot explique por qué. Los resultados pasados de cada servicio —completadas, canceladas, facturación estimada, día pico y exportación CSV— están en Resultados y ventas.",{"id":446,"title":447,"titles":448,"content":449,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#pausar-y-duplicar","Pausar y duplicar",[31],"Pausar deja de ofrecer el servicio para pedidos nuevos en bot, reserva pública, Wagy y MCP. Las tareas ya agendadas pueden reprogramarse, reasignarse, completarse y cancelarse con los permisos y validaciones habituales. La pausa no elimina los controles de horario ni capacidad. Reactivar vuelve a ofrecerlo. Pausar y desactivar son la misma acción. Duplicar crea « (copia)» pausado con precio, reglas, requisitos, formulario, productos, horario independiente y etapas. No copia tareas, resultados ni opiniones. Requiere permiso de catálogo; sin permiso para editar etapas usa las etapas base del proyecto y lo avisa. Revisá la copia y reactivala cuando esté lista. En el detalle abrí ⋯ → Duplicar o Pausar. En escritorio también hay un menú en la lista. Wagy propone ambas acciones y espera la confirmación del plan. MCP permite pausar con update_service(active=false, confirm=true); duplicar aún no tiene herramienta MCP.",{"id":451,"title":452,"titles":453,"content":454,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#eliminar-y-archivar","Eliminar y archivar",[31],"Pausado y archivado no son lo mismo. Pausado es temporal: el servicio, producto, equipo o recurso se ve atenuado en el catálogo con «Reactivar» y no aparece en los filtros de trabajo ni en el bot. Archivado es definitivo para la vista: solo se ve en «Archivados» (al final del catálogo, plegado y oculto si está vacío), con «Restaurar». ⋯ → Eliminar borra de verdad si no tiene historial (ninguna tarea, cobro ni registro que lo use) y lo archiva si lo tiene; el diálogo dice cuál de las dos pasa. Un archivado desaparece de todo (catálogo, filtros, selectores, bot, web del negocio, Wagy y sugerencias), pero las tareas y cobros viejos siguen mostrando su nombre. Si tiene tareas futuras no se elimina: se muestran para reasignarlas o cancelarlas primero. Restaurar lo deja pausado. Los filtros y selectores ofrecen solo lo activo; un pausado o archivado se ofrece únicamente si hay tareas con él, marcado «(pausado)» o «(archivado)». API y MCP: DELETE con ?mode=remove|archive|delete (permiso de administración; sin mode pausa, como siempre), GET …\u002Fremoval para ver qué pasaría y POST …\u002Frestore.",{"id":456,"title":457,"titles":458,"content":459,"level":263},"\u002Fdocs\u002Fconcepts\u002Fservices-and-availability#probar-un-flujo","Probar un flujo",[31],"En Mi negocio → Etapas, dentro de un flujo, ▶ Probar flujo (en el celular, ▶ Probar) recorre el borrador que tenés en pantalla, aunque no lo hayas guardado. Solo lo ve quien puede editar flujos (el Dueño). Ver como: Equipo ve todas las pantallas; Cliente ve solo los ítems y botones marcados «Cliente». Si una etapa no tiene nada para el cliente, la prueba dice «El cliente no ve esta etapa: la completa el equipo» y ofrece seguir como equipo.Datos: completá cada ítem o tocá Completar con ejemplo. Un botón no avanza si faltan los ítems que pide, y la prueba dice cuáles.Caminos: los botones de la etapa y, para el equipo, las salidas fijas que corresponden a ese punto (Cancelar, Reprogramar, No vino y, en atención, Cerrar sin completar con su motivo).Mapa y registro: el mapa marca por dónde va la prueba. Qué pasaría lista cada paso: el aviso al cliente o al equipo (con el texto de ejemplo del mensaje), la asignación y los datos que se guardarían.Reiniciar vuelve a la primera etapa. La prueba no guarda nada, no avisa a nadie, no cobra y no manda mensajes, y no deja tareas, historial ni auditoría. No simula tiempos ni recordatorios diferidos, ni el link del cliente ni el cobro. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":36,"title":35,"titles":461,"content":462,"level":257},[],"Estados de la reserva, la pre-reserva de 10 minutos, señas y la garantía de cero sobreturnos.",{"id":464,"title":465,"titles":466,"content":467,"level":263},"\u002Fdocs\u002Fconcepts\u002Fbookings-and-holds#por-qué-una-pre-reserva","Por qué una pre-reserva",[35],"Una conversación por WhatsApp puede tardar minutos: el cliente elige horario, después le pedís el nombre, quizás una seña. Mientras tanto otros clientes y la API compiten por el mismo horario. La pre-reserva (hold) guarda el horario por 10 minutos (15 cuando hay seña) y vence sola.",{"id":469,"title":470,"titles":471,"content":472,"level":263},"\u002Fdocs\u002Fconcepts\u002Fbookings-and-holds#estados","Estados",[35],"EstadoSignificadoOcupa el horarioheldPre-reserva temporalSípending_paymentEsperando la señaSíconfirmedReservadoSíchecked_inEl cliente llegóSícompletedAtendidoNocancelledCancelado (o reemplazado por una reprogramación)Nono_showAusencia marcada por una personaNoexpiredPre-reserva no confirmada a tiempoNo held ──confirm──► confirmed ──check-in──► checked_in ──► completed\n │  └─(seña)──► pending_payment ──pagada──► confirmed\n └─vence──► expired          confirmed ──cancela──► cancelled",{"id":474,"title":475,"titles":476,"content":477,"level":263},"\u002Fdocs\u002Fconcepts\u002Fbookings-and-holds#garantías","Garantías",[35],"Cada recurso que ocupa una reserva se guarda como una asignación con un rango de tiempo.Para recursos exclusive, PostgreSQL rechaza asignaciones superpuestas con una constraint de exclusión.Para recursos pooled, los contadores de capacidad nunca superan el límite (chequeo atómico).Una reserva con varios recursos se escribe en una sola transacción: si cualquier recurso choca, no se reserva nada.POST \u002Fholds y POST \u002Fholds\u002F{id}\u002Fconfirm exigen Idempotency-Key: reintentar un request nunca crea una segunda reserva. Si el horario se ocupó mientras el cliente decidía, recibís 409 con code: \"slot_taken\" y una lista de alternatives.",{"id":479,"title":480,"titles":481,"content":482,"level":263},"\u002Fdocs\u002Fconcepts\u002Fbookings-and-holds#reprogramar-y-cancelar","Reprogramar y cancelar",[35],"Reprogramar crea una reserva nueva y cancela la anterior (vinculadas por rescheduled_to). Los recordatorios se mueven solos.Cancelar libera el horario y cancela los recordatorios pendientes.Ausencia nunca es automática: el sistema la sugiere, una persona la confirma.",{"id":484,"title":485,"titles":486,"content":487,"level":263},"\u002Fdocs\u002Fconcepts\u002Fbookings-and-holds#señas","Señas",[35],"Si el servicio tiene deposit_cents, confirmar la pre-reserva deja la reserva en pending_payment y el horario sigue bloqueado. Cuando el proveedor confirma el cobro de la seña, el núcleo registra el pago, confirma la reserva y emite payment.paid. La disponibilidad de un proveedor real depende de la configuración del negocio. Cada servicio elige qué se cobra al reservar con booking_payment: none (nada), deposit (la seña) o total (el valor completo de la tarea, que calcula el servidor). Con total la reserva sigue el mismo camino que con la seña: pending_payment, vencimiento, devolución por la ventana de cancelación y pago tardío en revisión.",{"id":40,"title":39,"titles":489,"content":490,"level":257},[],"Recordatorios y confirmaciones, horario de silencio y garantías de ejecución. Para esperas y condiciones, mirá las reglas. Hay dos herramientas de automatización: Recordatorios: \"cuando pase esto, mandá aquel mensaje\". Son la forma más simple de enviar recordatorios y confirmaciones. Se administran en Atención → Mensajes automáticos.Reglas: esperan, deciden con condiciones y actúan sobre las tareas. Ver Reglas y Condiciones.",{"id":492,"title":493,"titles":494,"content":495,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#recordatorios","Recordatorios",[39],"Un recordatorio tiene un disparador, el mensaje que se envía (una plantilla con vista previa) y, si querés, un filtro por etapa o acción. Cada negocio crea, activa y ajusta los suyos: ningún recordatorio le escribe a un cliente sin estar activa.",{"id":497,"title":498,"titles":499,"content":500,"level":301},"\u002Fdocs\u002Fconcepts\u002Fautomations#disparadores","Disparadores",[39,493],"DisparadorEjemploUn tiempo antes del inicio24 h antes: enviar un recordatorioUn tiempo después del finMensaje de seguimientoCancelación o reprogramaciónAvisar al clienteUso de una herramienta de la tareaCuando alguien reprograma o toma la tareaHora fija del díaAvisos al equipo, como la agenda del día Los recordatorios dirigidos a clientes salen por WhatsApp. Los avisos al equipo salen por Telegram, WhatsApp o email, según cómo recibe avisos cada persona: ver Telegram del equipo. En cada recordatorio ves los últimos envíos con su estado y el motivo si falló.",{"id":502,"title":503,"titles":504,"content":505,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#avisos-al-entrar-en-una-etapa-y-la-confirmación","Avisos al entrar en una etapa (y la confirmación)",[39],"El aviso al cliente cuando la tarea entra en una etapa —por ejemplo «Salió a entrega»— y el aviso de confirmación ya no son recordatorios: son parte de la etapa del servicio, en su bloque «Al llegar». Así hay un solo lugar y el cliente nunca recibe el mismo aviso dos veces. Cada aviso tiene un interruptor propio. Los que trae tu tipo de negocio llegan apagados, incluido «Salió a entrega».La confirmación sale una sola vez, venga del bot, del pago de la seña, del panel o de un botón de etapa. Las tareas sin horario no la reciben.Al llegar también puede avisar al equipo: a todas las personas asignadas a la tarea, por email y Telegram. Si un canal falla, se reintenta sin repetir el que ya llegó.Valen las mismas garantías de abajo (horario de silencio, clientes de prueba, canal en pausa) y los interruptores de avisos del proyecto.Para esperar un tiempo, poner condiciones o llamar a un webhook propio al entrar en una etapa, usá una regla. Por ahora estos avisos se configuran por la API o MCP (etapas del servicio); el editor visual de etapas llega pronto. Los recordatorios de etapa o de confirmación que tenías se pasaron solos a sus etapas, con el mismo estado (encendido o apagado).",{"id":507,"title":508,"titles":509,"content":510,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#recomendadas-para-tu-negocio","Recomendadas para tu negocio",[39],"Fiuit trae un set de recordatorios recomendados según el tipo de negocio (recordatorio 24 h antes, pedido de reseña tras completar, avisos al equipo…). Se instalan apagadas: nadie les escribe a tus clientes sin que vos decidas. Andá a Atención → Mensajes automáticos.En Recomendadas para tu negocio, mirá la vista previa del mensaje de cada recordatorio.Activá las que quieras con el interruptor. La sección se oculta cuando no queda ninguna por activar.",{"id":512,"title":513,"titles":514,"content":515,"level":301},"\u002Fdocs\u002Fconcepts\u002Fautomations#reactivar-clientes-que-no-vuelven","Reactivar clientes que no vuelven",[39,508],"Una de las recomendadas es \"Reactivar clientes que no vuelven\": escribe por WhatsApp a quien no tiene actividad hace N días (sin tareas completadas ni mensajes entrantes; lo que manda el negocio no cuenta). La cantidad de días se edita en el recordatorio (de 1 a 365; cada modelo trae uno razonable para su rubro). El barrido corre cada hora, solo de día (10:00 a 18:00, hora del negocio) y con tope de clientes nuevos por pasada, así que escribe de a poco. Cada cliente recibe un solo mensaje por período de inactividad: si vuelve y vuelve a faltar, puede recibir otro más adelante. Si el cliente pidió no recibir mensajes, o el canal o la IA están en pausa, no se le escribe.",{"id":517,"title":518,"titles":519,"content":520,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#mensajes-automáticos-con-cabeza","Mensajes automáticos con cabeza",[39],"Hay un tope de 30 envíos automáticos por hora a clientes, por proyecto: los envíos se van escalonando solos para cuidar la línea de WhatsApp.En la ficha del cliente (Dueño y Encargado), el interruptor \"No enviar mensajes automáticos de promoción\" marca a quien pidió no recibirlos. Los recordatorios de turnos siguen saliendo igual: el interruptor solo frena los mensajes de promoción, como la reactivación.",{"id":522,"title":523,"titles":524,"content":525,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#garantías-de-ejecución","Garantías de ejecución",[39],"Cada envío se programa junto con el evento que lo origina, así que no se pierde.Antes de salir, el sistema vuelve a revisar la tarea. Si se reprogramó o canceló, el envío viejo se descarta.Cada envío sale una sola vez y, si falla, reintenta con espera creciente; tras 5 fallos aparece en el panel.Horario de silencio: no se envía nada a clientes entre las 21:00 y las 08:00 de la zona horaria del negocio. El envío se difiere, no se pierde.Las respuestas SÍ\u002FNO (\"sí\", \"ok\", \"👍\", \"não\"...) se interpretan sin IA: instantáneo y sin costo.",{"id":527,"title":528,"titles":529,"content":530,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#próximamente","Próximamente",[39],"Todavía no existen disparadores para pre-reservas vencidas ni para pagos (llegan con el cobro de señas).",{"id":532,"title":533,"titles":534,"content":535,"level":263},"\u002Fdocs\u002Fconcepts\u002Fautomations#avisos-por-servicio-y-bitácora","Avisos por servicio y bitácora",[39],"En Atención → Mensajes automáticos, el Dueño o Encargado configura avisos por servicio: creación sin horario, persona asignada o cambiada, datos modificados, en camino, llegada y finalización. Comienzan apagados. Para datos modificados se eligen las claves de los campos relevantes; las ediciones consecutivas se agrupan hasta 60 segundos después de la última. Para progreso se elige una etapa vigente del servicio. Si esa etapa ya tiene un aviso, se conserva su configuración existente. Los textos se guardan por idioma y admiten los marcadores de servicio y negocio. La bitácora aparece en esa configuración, en Actividad de la tarea y en la ficha del cliente. Muestra hasta 50 intentos de los últimos 90 días: enviado, omitido, diferido o fallido, con canal, plantilla y motivo. «Enviado» significa aceptado por el adaptador; no acredita entrega ni lectura. No guarda texto ni datos de contacto. Empieza con esta versión, sin reconstruir envíos anteriores. Sin canal o con la ventana de respuesta vencida se omite; no hay cambio automático a correo u otro canal. El rechazo de promoción afecta la reactivación, no los avisos operativos.",{"id":44,"title":43,"titles":537,"content":538,"level":257},[],"Encontrá clientes, conversaciones, tareas, recursos y servicios desde cualquier pantalla del panel con Ctrl\u002FCmd+K o la lupa del móvil. La búsqueda global te lleva directo a lo que buscás, desde cualquier pantalla del panel, sin entrar a cada sección.",{"id":540,"title":541,"titles":542,"content":543,"level":263},"\u002Fdocs\u002Fconcepts\u002Fglobal-search#cómo-usarla","Cómo usarla",[43],"En la computadora pulsá Ctrl+K (en Mac, Cmd+K). En el celular, tocá la lupa de la barra superior.Escribí lo que buscás: un nombre, un teléfono, un email o el código de una tarea.Recorré los resultados con las flechas, pulsá Enter para abrir el resultado y Escape para cerrar. Los resultados vienen agrupados por tipo —Clientes, Conversaciones, Tareas, Recursos y Servicios— y los grupos vacíos no se muestran. Cada resultado abre su pantalla: una tarea abre directamente su diálogo.",{"id":545,"title":546,"titles":547,"content":548,"level":263},"\u002Fdocs\u002Fconcepts\u002Fglobal-search#qué-busca","Qué busca",[43],"Clientes: nombre, teléfono (en cualquier formato, también parte del número), @usuario de Instagram o Telegram, o email.Conversaciones: por el cliente o por el último mensaje.Tareas: por cliente, servicio o código (el prefijo corto que ves en la tarea).Recursos y servicios: por nombre.",{"id":550,"title":551,"titles":552,"content":553,"level":263},"\u002Fdocs\u002Fconcepts\u002Fglobal-search#quién-ve-qué","Quién ve qué",[43],"Los resultados respetan tu rol: Equipo y Lectura no ven clientes, recursos ni servicios, y Equipo ve solo las conversaciones y tareas que ya puede ver en sus pantallas, con los datos sensibles enmascarados. La búsqueda nunca muestra dinero ni registra lo que escribiste. Si un grupo tarda demasiado, se omite y el resto de los resultados aparece igual.",{"id":48,"title":47,"titles":555,"content":556,"level":257},[],"Cómo ver los resultados de cada servicio y del negocio, con períodos, tendencias, mejores clientes y exportación CSV, y quién puede verlos. En Servicios ves mucho más que el catálogo: cada servicio muestra sus resultados pasados y el negocio tiene un resumen mensual con el total.",{"id":558,"title":559,"titles":560,"content":561,"level":263},"\u002Fdocs\u002Fconcepts\u002Fsales-results#en-el-detalle-de-un-servicio","En el detalle de un servicio",[47],"Abrí Servicios y tocá el servicio.Elegí el período: Hoy, semana, mes, mes pasado, trimestre (con barras semanales) o año (con barras mensuales).Revisá los indicadores y tocá Exportar CSV para bajar la tabla. Qué muestra: Tareas completadas, con la tasa de canceladas y de ausentes (\"no estaba\").Facturación estimada y ticket promedio: se calculan con el precio actual del catálogo de las tareas completadas, más las señas retenidas. Es una estimación, no los cobros reales.Señas retenidas y mejores clientes (sin datos que tu rol no pueda ver).Día y hora pico del servicio.Peso sobre la capacidad: cuánto de los recursos compartidos ocupa el servicio. Los servicios por cola no usan agenda, así que no tienen este dato. Si el servicio tiene un formulario con cantidades o cálculos (ver Servicios y disponibilidad), los resultados se agregan por campo: ves cuánto se usó o vendió de cada cosa, con su tendencia, y también sale en el CSV.",{"id":563,"title":564,"titles":565,"content":566,"level":263},"\u002Fdocs\u002Fconcepts\u002Fsales-results#en-las-listas-de-productos-y-suscripciones","En las listas de Productos y Suscripciones",[47],"En Mi negocio → Catálogo → Productos y Mi negocio → Catálogo (filtro Suscripción), cada tarjeta muestra su rendimiento del período (Este mes, Mes anterior o 90 días, con flecha ▲▼ frente al período anterior): los productos, las unidades vendidas en tareas completadas y en cuántas tareas aparecen; las suscripciones, cuántas se vendieron, los clientes activos hoy, el consumo de sus unidades y, en los paquetes, cuántos vencen en 30 días. La facturación y lo vendido en dinero solo aparecen si tu rol puede ver el dinero.",{"id":568,"title":569,"titles":570,"content":571,"level":263},"\u002Fdocs\u002Fconcepts\u002Fsales-results#resumen-del-negocio","Resumen del negocio",[47],"La lista de Servicios trae una tarjeta con el resumen del mes de todo el negocio; tocándola ves el detalle repartido por servicio.",{"id":573,"title":574,"titles":575,"content":576,"level":263},"\u002Fdocs\u002Fconcepts\u002Fsales-results#quién-lo-ve","Quién lo ve",[47],"Solo el Dueño y el Encargado (o una clave de API con permiso de lectura de reservas) ven resultados e importes. Equipo y Lectura no reciben dinero ni nombres de clientes.",{"id":52,"title":51,"titles":578,"content":579,"level":257},[],"Renombrá Servicio, Tarea, Recurso y Cliente con las palabras de tu negocio y usalas en el panel, el bot, los avisos y los emails operativos. Fiuit habla del servicio, la tarea, el recurso y el cliente. Si en tu negocio esas cosas tienen otro nombre —producto y pedido, profesional y paciente— podés ponerlos vos. El panel, los mensajes del bot, los avisos y los emails operativos usan tus palabras, con la concordancia correcta («el turno» \u002F «la entrega», «Nuevo turno» \u002F «Nueva entrega»).",{"id":581,"title":582,"titles":583,"content":584,"level":263},"\u002Fdocs\u002Fconcepts\u002Fvocabulary#cambiar-los-nombres-paso-a-paso","Cambiar los nombres, paso a paso",[51],"Entrá a Configuración → Vocabulario (solo el Dueño o quien administra el proyecto).Elegí un punto de partida o escribí cada nombre a mano. Para cada concepto definí el singular, el plural y el género, en minúscula.Editás por idioma: los nombres que escribas en español se usan en los mensajes en español, y así con portugués e inglés.Guardá. Configuración aplica todo junto en una sola tanda: Guardar confirma los nombres junto con el resto de los cambios de la página y Descartar recupera los valores anteriores. Los cambios se ven enseguida en el menú, los botones, las pantallas, los mensajes del bot y los avisos, para todo el equipo.",{"id":586,"title":587,"titles":588,"content":589,"level":263},"\u002Fdocs\u002Fconcepts\u002Fvocabulary#un-nombre-por-tipo-de-recurso","Un nombre por tipo de recurso",[51],"Cada tipo (sala, equipo, mesa, vehículo, zona) puede llevar su propio nombre: «Canchas» en vez de «Salas». Se ve en Mi empresa, los formularios, Nueva tarea, el calendario y los mensajes del bot. Al dar de alta el negocio se toma la palabra que usás («tenemos 4 canchas»); si no la decís, se usa la de tu rubro.Para cambiarla, usá Vocabulario o pedíselo a Wagy.Con palabras conocidas («cancha», «camioneta», «turno») el género se ajusta solo; con otras, elegilo en Género.",{"id":591,"title":592,"titles":593,"content":594,"level":263},"\u002Fdocs\u002Fconcepts\u002Fvocabulary#qué-no-cambia","Qué no cambia",[51],"Solo cambia el nombre. Tus datos, reservas, permisos y estadísticas siguen igual: una tarea sigue siendo una tarea aunque en pantalla diga «pedido».Los textos que escriben las personas (notas, respuestas, comentarios) no se tocan.Para volver atrás, restaurá los nombres predeterminados en la misma sección y guardá. Los nombres reales —de clientes, servicios o recursos— y los números nunca se traducen: el vocabulario cambia cómo Fiuit llama a los conceptos, no a tus datos.",{"id":56,"title":55,"titles":596,"content":597,"level":257},[],"La paleta de colores del proyecto se elige en Configuración y vale para todo el equipo; cada persona elige entre tema claro, oscuro o automático en su cuenta. Fiuit tiene dos decisiones de color separadas: la paleta del proyecto (qué colores usa el panel) y el tema claro\u002Foscuro (sobre qué fondo se dibujan).",{"id":599,"title":600,"titles":601,"content":602,"level":263},"\u002Fdocs\u002Fconcepts\u002Fthemes#la-paleta-del-proyecto","La paleta del proyecto",[55],"La paleta define los colores del panel para todo el equipo: botones, etiquetas, acciones principales y superficies. Entrá a Mi negocio → Datos → Apariencia (Dueño o quien administra el proyecto).Elegí una paleta entre las disponibles: combinaciones de dos colores, monocromos y la opción Blanco y negro para una interfaz sin colores de marca. El selector muestra una vista previa con el texto y los botones reales.Guardá. Los cambios de Configuración se aplican todos juntos con un solo Guardar y se ven enseguida para todo el equipo. Si no elegís ninguna, el proyecto usa la paleta de la plataforma. Con la paleta Blanco y negro, los avisos de éxito, error y demás siguen en color: lo importante no se te escapa.",{"id":604,"title":605,"titles":606,"content":607,"level":263},"\u002Fdocs\u002Fconcepts\u002Fthemes#el-tema-de-cada-persona","El tema de cada persona",[55],"Cada persona elige cómo se ve su propio panel, sin tocar la paleta del proyecto: En Mi cuenta elegís claro, oscuro o automático (sigue el tema del dispositivo).El mapa tiene su propio selector (automático, claro u oscuro), que se recuerda por navegador. Así el negocio mantiene su identidad y cada quien trabaja con la luz que prefiere.",{"id":60,"title":59,"titles":609,"content":610,"level":257},[],"Qué es Wagy, qué puede hacer con tus permisos, cómo pedirle cosas, deshacer y aplicar cambios en lote. Wagy es el asistente de Fiuit dentro del panel. Le pedís algo con tus palabras y arma una propuesta; nada cambia hasta que se aplica con tu nivel de confirmación.",{"id":612,"title":613,"titles":614,"content":615,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#dónde-aparece","Dónde aparece",[59],"El botón de Wagy, en cualquier pantalla. En el celular ocupa toda la pantalla, con las pestañas Chat y Tablero.⤢ (escritorio y tablet): la pantalla de control, con pedidos de hoy, equipo, conversaciones, caja y «¿Cómo vamos?».Los botones ✦ de los menús «+ Nuevo…» y la ayuda «?» de cada pantalla.Para Dueño y Encargado.",{"id":617,"title":618,"titles":619,"content":620,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#qué-puede-hacer","Qué puede hacer",[59],"Wagy usa las mismas herramientas que la API y el MCP, siempre con tu rol y tus permisos. Si vos no podés hacerlo en el panel, Wagy tampoco. Preguntar: «¿cuánto cobré esta semana?», «¿cuánta Inteligencia me queda?». Lo que solo lee responde enseguida.Operar: agendar, reagendar o cancelar tareas, editar clientes, mandar mensajes, cargar productos, armar flujos, cambiar tu web y el vocabulario.Leer archivos: una foto o un PDF (hasta 10 MB y 10 páginas) y notas de voz; Wagy lo lee una vez, lo borra y te muestra una propuesta.Pedir ayuda a soporte con el error ya cargado.",{"id":622,"title":623,"titles":624,"content":625,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#cómo-pedirle-cosas","Cómo pedirle cosas",[59],"Escribí lo que necesitás: «creá una tarea para Ana el viernes a las 10».Wagy muestra la propuesta con los cambios concretos.Confirmás, o la cuenta regresiva la aplica sola si tu nivel lo permite. Si falta un dato, pregunta con botones (por ejemplo, los próximos horarios libres). Lo que escribió un cliente nunca es una orden: si Wagy lo leyó, siempre te pide confirmar.",{"id":627,"title":628,"titles":629,"content":630,"level":301},"\u002Fdocs\u002Fconcepts\u002Fwagy#niveles","Niveles",[59,623],"En ⤢ → Nivel de Wagy: NivelQué hacePreguntar todoConfirmás cada cambio.Aceptar lo internoHace solo lo interno que se puede deshacer, con 10 s para frenarlo. Lo que le llega al cliente o mueve plata te lo pregunta.AutopilotHace todo; lo del cliente o la plata espera 10 s para que lo frenes. El Dueño fija el tope del proyecto y nadie lo pasa. En Lo hace solo elegís qué acciones puede hacer sin preguntar. Los cambios que requieren confirmación explícita y los pasos con sistemas externos siempre se confirman, incluso en Autopilot.",{"id":632,"title":633,"titles":634,"content":635,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#deshacer","Deshacer",[59],"Cuando Wagy hace algo solo ves «Lo hago en 10 s» con Deshacer y Ahora. Después, en Lo que hizo Wagy (o en el plan) tocás Deshacer mientras se pueda, incluso una reprogramación. Si alguien modificó los datos desde entonces, Wagy te pide revisarlos antes.",{"id":637,"title":638,"titles":639,"content":640,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#acciones-en-lote","Acciones en lote",[59],"Si pedís varios cambios juntos («pasá las 7 atrasadas a mañana»): Confirmás una sola vez.Se aplican de a uno, cada uno con su cuenta regresiva.Frenar este detiene uno; Pausar todo y Reanudar controlan el resto.Cada cambio se deshace por separado.Lo que no entra (sin horario libre, con un conflicto) queda marcado para que elijas, sin frenar al resto.",{"id":642,"title":643,"titles":644,"content":645,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#ejemplos-por-rol","Ejemplos por rol",[59],"RolLe puede pedirQué no haceDueño«Cambiá la frase de portada de mi web», «armá un flujo de entregas», «pasá a Autopilot».Nada fuera de tus permisos ni pasar el tope que fijaste.Encargado«Reagendá mis tareas atrasadas», «mandale un mensaje a Lucía», «¿qué hay hoy?».Cambiar el nivel por encima del tope del Dueño.EquipoNo usa Wagy: trabaja con Focus y su vista de Hoy.— Wagy tampoco inventa datos, no actúa por su cuenta sobre lo que le llega al cliente sin tu confirmación o cuenta regresiva, y no manda datos de tus clientes a soporte.",{"id":647,"title":648,"titles":649,"content":650,"level":263},"\u002Fdocs\u002Fconcepts\u002Fwagy#más","Más",[59],"MCP y agentes de IA: las mismas herramientas desde Claude o ChatGPT.Conectar Fiuit a tu IA.¿Qué pasa si…? Servicios y tareas.",{"id":70,"title":69,"titles":652,"content":653,"level":257},[],"Conectá el número de tu negocio por QR, qué hace el asistente con clientes y con tu equipo, y cómo derivar una conversación a una persona.",{"id":655,"title":656,"titles":657,"content":658,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#conectar-un-número","Conectar un número",[69],"En el panel, andá a Atención → Canales.Tocá Vincular WhatsApp. Aparece un código QR.En el celular del negocio abrí WhatsApp, tocá Configuración (o los tres puntos), Dispositivos vinculados y Vincular un dispositivo, y apuntá la cámara al código.Cuando el estado pase a Conectado ya podés recibir mensajes. Si el código vence, tocá Reconectar para generar otro. Solo el dueño y los encargados pueden vincular. La pantalla te muestra el estado (conectado, esperando escaneo, desconectado) y cuántas conexiones incluye tu plan. Desconectar detiene al bot en ese número pero conserva las conversaciones y el historial. Usá un número dedicado al negocio. Hoy la conexión por QR (como en WhatsApp Web) es la forma de conectar WhatsApp. No compartas el código: da acceso a tu WhatsApp. El simulador del bot no es una conexión de WhatsApp: no aparece en la lista ni cuenta para tu plan. Lo encontrás en Prueba rápida, más abajo en la misma pantalla.",{"id":660,"title":661,"titles":662,"content":663,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#con-qr-u-oficial-meta","Con QR u Oficial (Meta)",[69],"La pantalla de WhatsApp tiene dos pestañas y abre la del canal que estés usando (si no hay ninguno, la de QR). Cada una muestra su estado real (conectado, desconectado o reconectando) y la acción que toca. Con QR: se conecta en un minuto escaneando el QR con el número que ya usás y es gratis. Meta puede bloquear el número si mandás mucho a gente que no te escribió, así que no sirve para envíos masivos, y el celular tiene que mantener la sesión abierta.Oficial (Meta): pide verificar el negocio en Meta y que el número no esté en la app común. No hay riesgo de bloqueo y permite plantillas aprobadas para escribir primero, pero Meta cobra por cada conversación que inicia el negocio. El estado se comprueba cada 5 minutos, también si la conexión está caída: cuando vuelve, pasa a Conectado sola. Si se cae, el panel avisa al negocio en las notificaciones.",{"id":665,"title":666,"titles":667,"content":668,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#límites-de-tu-plan","Límites de tu plan",[69],"Cada plan incluye una cantidad de conexiones, y cuentan todas: un número de WhatsApp, una cuenta de Instagram, un bot de Telegram y el chat de tu web publicado. Solo: 2 conexiones, con un solo número de WhatsApp. Es decir, el número de WhatsApp más otra conexión: Instagram, Telegram o el chat de tu web.Negocio: 3 conexiones. Pro: 5 conexiones. En los dos, también un solo número de WhatsApp.Business: a medida, y es el único plan con más de un número de WhatsApp. Al llegar al límite, el botón para conectar queda desactivado (no desaparece), con un texto corto que explica el límite y un enlace a Configuración → Plan para pasar de plan. Reconectar o actualizar una conexión que ya tenés no cuenta como una nueva. En Atención → Canales ves cuántas usás, por ejemplo «1 de 2 conexiones» y «1 de 1 número de WhatsApp». Bajar de plan: no se puede mientras el negocio supere algún límite del plan nuevo. Primero hay que desconectar lo que sobra; nada se borra solo.",{"id":670,"title":671,"titles":672,"content":673,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#clientes-y-equipo","Clientes y equipo",[69],"El rol se decide en el código, nunca por lo que alguien diga en el chat: Un número vinculado a alguien del equipo (verificado con un código de un solo uso) recibe herramientas de equipo.Todos los demás reciben herramientas de cliente. Herramientas de clienteHerramientas de equipo (extra)Ver servicios, buscar horarios, pre-reservar y confirmar, ver y cancelar o reagendar sus reservas, consultar la información y el conocimiento del negocio, guardar una ubicación compartida, pasar a una personaVer el día, bloquear tiempo, marcar una ausencia, actualizar el catálogo y avanzar etapas de una tarea, siempre con confirmación SÍ\u002FNO El equipo también puede recibir avisos por Telegram.",{"id":675,"title":676,"titles":677,"content":678,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#qué-puede-y-qué-no-puede-hacer-la-ia","Qué puede y qué no puede hacer la IA",[69],"PuedeNo puedeEntender texto, audio, errores de tipeo y cambios de ideaInventar horarios, precios o direccionesBuscar horarios y ofrecer 2 o 3 opcionesConfirmar una reserva sin el motorPre-reservar y pedir los datos que faltanUsar herramientas de administrador con un clienteResponder con el conocimiento del negocioSeguir instrucciones escondidas en mensajes o archivosPasar la conversación a una personaVer datos de otro negocio Más detalle en Bot y IA.",{"id":680,"title":681,"titles":682,"content":683,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#ubicación-compartida","Ubicación compartida",[69],"Si un cliente comparte su ubicación por WhatsApp, queda guardada en la conversación y el Inbox la muestra con un mapa. El bot puede usarla como destino de una entrega o como dirección del cliente, siempre pidiéndole que confirme con SÍ o NO. Ver Mapa y direcciones.",{"id":685,"title":686,"titles":687,"content":688,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#derivación-a-una-persona","Derivación a una persona",[69],"El equipo ve todas las conversaciones en vivo en el Inbox. Con Tomar el control el bot se pausa en esa conversación; vuelve solo tras 15 minutos sin actividad del operador, o cuando tocás Devolver. El asistente también deriva cuando el cliente lo pide (\"quiero hablar con una persona\").",{"id":690,"title":691,"titles":692,"content":693,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#audios-e-idiomas","Audios e idiomas",[69],"Los audios se transcriben antes de que la IA los lea y la transcripción se ve en el Inbox. El asistente responde en el idioma del cliente (portugués, español o inglés).",{"id":695,"title":696,"titles":697,"content":698,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#nombre-y-contacto-del-cliente","Nombre y contacto del cliente",[69],"Cuando alguien te escribe, su ficha se completa sola con su número y con el nombre que eligió en su perfil de WhatsApp, si la ficha no tenía nombre. Si cargás el nombre a mano, WhatsApp nunca lo reemplaza.",{"id":700,"title":701,"titles":702,"content":703,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#foto-del-cliente","Foto del cliente",[69],"WhatsApp no comparte la foto de perfil de tus clientes: en su lugar se muestran sus iniciales. Si querés, Dueño y Encargado pueden subir una foto desde la ficha del cliente. Si el mismo cliente también escribe por Telegram o Instagram, se usa la foto de ese canal.",{"id":705,"title":706,"titles":707,"content":708,"level":263},"\u002Fdocs\u002Fchannels\u002Fwhatsapp#pausar-el-canal","Pausar el canal",[69],"Si hay spam o ruido, podés pausar el bot o todo el canal sin desconectarlo. Mirá Pausas y Estado.",{"id":74,"title":73,"titles":710,"content":711,"level":257},[],"Poné el asistente de Fiuit en tu sitio con una línea de código, con datos de contacto obligatorios y reglas por canal. El chat web es un widget que tu negocio pega en su propio sitio. Conversa con el mismo bot que WhatsApp (mismos horarios, precios y reservas), sin número ni aprobaciones de terceros. Las conversaciones llegan al mismo Inbox. Si alojás Fiuit vos mismo, el chat web viene apagado: se activa con PUBLIC_WEBCHAT_ENABLED=true en la API.",{"id":713,"title":714,"titles":715,"content":716,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#instalar-paso-a-paso","Instalar paso a paso",[73],"Entrá como Dueño a Atención → Canales → Chat web.En Sitios permitidos agregá cada sitio donde lo vas a usar, uno por línea, con https:\u002F\u002F y sin comodines ni rutas (por ejemplo https:\u002F\u002Fwww.mitienda.com). Para probar en tu computadora se acepta http:\u002F\u002Flocalhost.Elegí color principal, posición del botón, idioma por defecto, un título opcional (hasta 40 caracteres) y el avatar del asistente: tu logo (con su URL), la mascota animada Wagy tiñida con tu color, o unas iniciales genéricas.Tocá Activar chat web. Recibís una clave publicable wg_web_… y el código para pegar.Pegá el snippet antes de \u003C\u002Fbody> en cada página donde quieras el chat: \u003Cscript src=\"https:\u002F\u002Ffiuit.com\u002Fwidget.js\" data-key=\"wg_web_…\" defer>\u003C\u002Fscript> Atributos opcionales: data-locale (pt, es o en; por defecto usa el idioma del navegador), data-offset-bottom (píxeles, para subir el botón si tu sitio tiene una barra fija abajo), data-api (origen de la API, solo para entornos de prueba) y data-avatar (logo, wagy o generic; fuerza el avatar por sobre el configurado). Si tocás Desactivar, el chat deja de funcionar y se cierran las conversaciones abiertas; al volver a activarlo recibís una clave nueva y tenés que actualizar el código. En \u002Fdemo\u002Fwebchat hay una página de demostración donde pegás la clave y ves el widget funcionando. Tu plan limita cuántas conexiones podés tener en total (en Solo, 2) y un solo número de WhatsApp, salvo en Business. Mirá Límites de tu plan.",{"id":718,"title":719,"titles":720,"content":721,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#qué-ve-el-visitante","Qué ve el visitante",[73],"Un botón flotante que abre el chat (en el celular se abre a pantalla completa, respetando las zonas seguras), en portugués, español o inglés.Si elegís a Wagy como avatar, la mascota parpadea y «habla» mientras el bot prepara la respuesta (con la preferencia de reducción de movimiento del dispositivo queda estática), y el botón flotante puede mostrar una mini Wagy.Un chat breve a propósito: respuestas cortas que proponen reservar o seguir por WhatsApp. Desde la web el visitante es anónimo y cada respuesta cuesta.Si el bot le pide su ubicación (por ejemplo para una entrega), ofrece Usar mi ubicación, con consentimiento explícito.La conversación sigue entre páginas y recargas: al volver, el chat muestra lo conversado y las respuestas que llegaron mientras tanto (con un aviso de mensajes nuevos si estaba cerrado). Un botón Nueva conversación, en el menú ⋯ del chat, la borra y empieza de cero.",{"id":723,"title":724,"titles":725,"content":726,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#continuidad-entre-páginas-y-recargas","Continuidad entre páginas y recargas",[73],"Al abrir la conversación el servidor emite un código de sesión opaco. El widget lo guarda en el almacenamiento del navegador (localStorage, o sessionStorage si no está disponible) del sitio donde instalaste el chat, con una clave por clave publicable. No usa cookies ni servicios de terceros, y ahí no se guarda nada personal: ni nombre, ni teléfono, ni email, ni mensajes. Los datos de contacto declarados viven solo en el servidor, así que el chat no los vuelve a pedir dentro de la misma conversación. Al cargar otra página o recargar, el widget valida el código, trae el historial y se reconecta para recibir las respuestas nuevas.Vencimiento: la conversación vence por inactividad y por un tope máximo de duración. Si el código venció, se cerró o se purgó, el widget lo borra y empieza una conversación nueva, sin mostrar errores.Nueva conversación: el visitante la elige desde el menú ⋯. Se invalida el código en el servidor, se borra el del navegador y el chat arranca vacío. El equipo conserva el historial anterior en el Inbox hasta que se purga.Modo privado o almacenamiento bloqueado: el chat funciona igual, pero la conversación no sobrevive a una recarga.Canal pausado: si pausaste el canal, el chat no se muestra aunque el visitante tenga un código guardado; al reanudarlo, la conversación sigue. El código no es un secreto fuerte: es una llave de una sola conversación, nunca da acceso a otras ni al panel. Solo sirve desde los orígenes que autorizaste en el widget, está sujeto a los mismos límites de uso y se invalida al vencer, al elegir Nueva conversación y al purgar la conversación.",{"id":728,"title":729,"titles":730,"content":731,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#datos-de-contacto-obligatorios","Datos de contacto obligatorios",[73],"Por defecto el bot no conversa hasta tener teléfono y email: ante cualquier mensaje responde un texto fijo (sin IA) y el chat muestra un mini formulario (teléfono con selector de país, en formato internacional, y email). Apenas se completa, el primer mensaje del visitante se procesa solo, sin que lo repita. Los datos son declarados, no verificados: no identifican al visitante ni se unen a clientes existentes. Se guardan cifrados y se borran junto con la conversación vencida.",{"id":733,"title":734,"titles":735,"content":736,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#idioma-y-primer-mensaje","Idioma y primer mensaje",[73],"Sin filtro previo: el chat web responde desde el primer mensaje, sin pedir nombre y motivo ni confirmar con SÍ\u002FNO. Ese filtro existe solo en WhatsApp, Telegram e Instagram. Siguen los datos de contacto obligatorios y el límite de uso del chat.En el idioma de quien escribe: el idioma de la página es solo un punto de partida. Si el primer mensaje está claramente en otro idioma (por ejemplo «Hola, quiero saber los precios» en una página en portugués), el bot responde en ese. Un saludo corto u «ok» no lo cambia. Si elegiste el idioma a mano en la ficha del cliente, ese manda.",{"id":738,"title":739,"titles":740,"content":741,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#reglas-del-bot-por-canal","Reglas del bot por canal",[73],"En Atención → Canales → Reglas del bot por canal (Dueño y Encargado) elegís el canal (Chat web o WhatsApp) y definís: ReglaQué haceChat web (por defecto)WhatsApp (por defecto)Datos que exigeNombre, teléfono y\u002Fo email antes de conversarteléfono y emailninguno (el teléfono ya llega del canal)Cuándo los pideDesde el primer mensaje, después de unas respuestas, o nuncadesde el primer mensajenuncaTexto con el que los pideUn texto fijo personalizableel predeterminadono aplicaLímite de respuestasTope de respuestas del bot por conversación6sin topeQué ofrece al llegar al límiteContinuar por WhatsApp y\u002Fo recibir la información por emailambosningunoEstilo del bot en el canalUna preferencia de tono (hasta 500 caracteres)respuestas cortasninguna Son reglas del proyecto: las aplica el servidor antes de invocar a la IA, aunque alguien use la API pública sin el widget. Al llegar al límite el bot deja de responder y de gastar IA, manda un mensaje fijo con las opciones y la conversación queda en el Inbox como \"necesita seguimiento\", con los datos que dejó el visitante. Si no hay WhatsApp conectado, esa opción no se ofrece.",{"id":743,"title":361,"titles":744,"content":745,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#seguridad",[73],"La clave publicable solo abre conversaciones anónimas: no da acceso al panel, a la API privada ni a datos de clientes. Se puede revocar cuando quieras.El negocio sale siempre de la clave; el widget nunca envía un identificador de negocio.Solo los sitios permitidos pueden usar el chat. Sin cookies.El chequeo del origen no es autenticación: solo protege contra otros sitios en un navegador. La protección real son los límites de uso.Hay topes de mensajes por conversación, por hora y por día. Al agotarse, el chat responde que esperes y la IA no se invoca.El texto del visitante se trata como dato no confiable, y el widget lo muestra siempre como texto plano.El chat solo responde: no envía mensajes proactivos.Podés pausar el bot o todo el canal si hace falta; con el canal pausado el widget se oculta.",{"id":747,"title":184,"titles":748,"content":749,"level":263},"\u002Fdocs\u002Fchannels\u002Fwebchat#api",[73],"Gestión (dueño): GET|PUT|DELETE \u002Fv1\u002Fwebchat-site. Reglas por canal (Dueño y Encargado): GET \u002Fv1\u002Fbot\u002Fchannel-policies y PUT \u002Fv1\u002Fbot\u002Fchannel-policies\u002F{channel}. Los endpoints públicos del widget están en el contrato OpenAPI bajo \u002Fv1\u002Fpublic\u002Fwebchat. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":78,"title":77,"titles":751,"content":752,"level":257},[],"Conectá el bot de Telegram de tu negocio para que tus clientes reserven y consulten como en WhatsApp, con la misma bandeja y el mismo bot. Con Telegram, tus clientes escriben a un bot propio de tu negocio y reciben la atención del mismo asistente que en WhatsApp: mismos servicios, mismos horarios, misma bandeja. Es independiente del Telegram del equipo, que es un único bot de Fiuit para avisos internos y la Mini App \"Mi día\".",{"id":754,"title":755,"titles":756,"content":757,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#conectar-tu-bot","Conectar tu bot",[77],"En Telegram abrí @BotFather y mandá \u002Fnewbot. Elegí un nombre y un usuario que termine en bot.BotFather te da un token (algo como 123456:ABC…). Es un secreto: no lo compartas.En el panel, andá a Atención → Canales → Telegram para tus clientes.Pegá el token en Token del bot y tocá Conectar bot. Solo el dueño puede hacerlo.Cuando el estado diga Recibiendo mensajes, ya funciona. Probalo escribiéndole al bot desde tu Telegram. El token se guarda cifrado y no se vuelve a mostrar. Si lo revocás en BotFather, pegá el nuevo con Actualizar token. Un mismo bot no puede estar conectado a dos negocios. Desconectar borra el token guardado y conserva el historial. Tu plan limita cuántas conexiones podés tener en total (en Solo, 2) y un solo número de WhatsApp, salvo en Business. Mirá Límites de tu plan.",{"id":759,"title":760,"titles":761,"content":762,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#qué-hace","Qué hace",[77],"Atiende con el mismo bot: busca horarios, pre-reserva, confirma, responde con tu conocimiento y deriva a una persona.Las opciones y confirmaciones aparecen como botones dentro del chat.Acepta texto y ubicación (también la que comparten como lugar). Entiende mensajes de voz (se transcriben; hasta 2 minutos y 8 MB, dentro de la cuota mensual de audio del proyecto; si no se pueden transcribir, el bot lo avisa y pasa la conversación a una persona). Fotos y otros archivos reciben un aviso de que no se pueden leer. No procesa mensajes de grupos ni canales.No tiene ventana de respuesta como WhatsApp: podés contestar cuando quieras.",{"id":764,"title":765,"titles":766,"content":767,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#identidad-multicanal","Identidad multicanal",[77],"Cada persona que escribe por Telegram queda como una identidad del cliente, verificada por Telegram y sin teléfono. Un mismo cliente puede tener varias identidades (teléfono de WhatsApp, Telegram) y verlas todas en su ficha. Los mensajes salientes se envían por el canal de la identidad correspondiente.",{"id":769,"title":681,"titles":770,"content":771,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#ubicación-compartida",[77],"Si el cliente comparte su ubicación, queda en la conversación y el Inbox muestra un mapa. El bot puede guardarla como destino de la tarea o como dirección del cliente, con confirmación SÍ\u002FNO. Mirá Mapa y direcciones.",{"id":773,"title":696,"titles":774,"content":775,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#nombre-y-contacto-del-cliente",[77],"Cuando alguien te escribe, su ficha se completa sola con su nombre de Telegram (o su @usuario si no puso nombre) y su @usuario queda guardado para buscarlo. Si comparte su propio contacto desde Telegram, su teléfono queda en la ficha y, si ya te escribía por WhatsApp desde ese número, las dos conversaciones pasan a la misma ficha solas. Dueño y Encargado reciben el aviso «Cliente vinculado entre canales» (mismo teléfono), que lleva a la ficha; se configura en Mi cuenta → Notificaciones. La tarjeta de contacto de otra persona nunca une fichas. Si cargás el nombre a mano, Telegram nunca lo reemplaza.",{"id":777,"title":701,"titles":778,"content":779,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#foto-del-cliente",[77],"Cuando un cliente escribe por primera vez, su foto de perfil de Telegram aparece sola en la conversación, en su ficha, en sus tareas y en la agenda, y se actualiza cada tanto si vuelve a escribir. Si el cliente ocultó su foto en la privacidad de Telegram, quedan sus iniciales. Dueño y Encargado pueden cambiarla o quitarla desde la ficha; una foto elegida a mano no se reemplaza sola. La foto solo la ve tu equipo.",{"id":781,"title":782,"titles":783,"content":784,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#estado-y-pausas","Estado y pausas",[77],"En Configuración → Estado ves si el bot está recibiendo mensajes, si hubo errores de entrega y si algún cliente bloqueó al bot. Podés pausar el bot o el canal.",{"id":786,"title":528,"titles":787,"content":788,"level":263},"\u002Fdocs\u002Fchannels\u002Ftelegram#próximamente",[77],"Instagram: mirá Instagram (se habilita cuando Meta aprueba la app). El bot de clientes reserva servicios con horario; las tareas de cola las crea el equipo desde el panel o la API. Creación de entregas en cola por chat: próximamente. Solo se transcriben Ogg Opus y WAV. Un MIME declarado distinto se rechaza antes de descargar. Stickers y animaciones se ignoran. Los fallos temporales de Telegram se reintentan con el backoff del worker; si persisten hasta agotar sus cinco intentos, la conversación pasa a una persona.",{"id":82,"title":81,"titles":790,"content":791,"level":257},[],"Pausá un canal o la IA de tu proyecto en una emergencia, y mirá en Estado y en Uso de IA si tu negocio está atendiendo. Hay tres herramientas para cuando algo se complica (spam, costos inesperados, ruido en el Inbox) y dos pantallas para ver cómo está tu servicio.",{"id":793,"title":794,"titles":795,"content":796,"level":263},"\u002Fdocs\u002Fchannels\u002Fpauses-and-status#pausar-un-canal","Pausar un canal",[81],"Cada canal conectado (WhatsApp, Telegram y chat web) se puede pausar sin desconectarlo, en Atención → Canales. Solo Dueño y Encargado. Hay dos niveles: NivelQué pasaCuándo usarloPausar botLos mensajes se siguen guardando y llegan al Inbox, pero el bot no responde ni gasta IA. La conversación pasa a modo humano, marcada para atención. Opcionalmente se envía al cliente un único mensaje fijo (vos elegís el texto; por defecto \"En breve te responde una persona.\").Querés atender a mano un rato.Pausar canalTodo lo que llega por el canal se descarta: no se crean clientes, conversaciones ni mensajes, y no hay IA. Solo se cuenta cuántos se descartaron. El equipo tampoco puede enviar por ese canal. El chat web deja de mostrarse.Hay spam o abuso. Pasos: Entrá a Atención → Canales y buscá el canal.Tocá Pausar bot o Pausar canal.Escribí un motivo (opcional), decidí si querés enviar el mensaje fijo y confirmá.Para volver, tocá Reanudar. Mientras algo está en pausa, el panel muestra un aviso con quién lo pausó y desde cuándo. Todo queda en el registro de auditoría.",{"id":798,"title":799,"titles":800,"content":801,"level":263},"\u002Fdocs\u002Fchannels\u002Fpauses-and-status#pausar-la-ia-del-proyecto","Pausar la IA del proyecto",[81],"Es un interruptor de emergencia en Configuración → Plan: corta todo el consumo de IA del proyecto (bot, Wagy, conocimiento y transcripción de audios) antes de que se gaste un centavo más. El bot responde un mensaje fijo y pasa la conversación al Inbox con atención.Las importaciones de conocimiento quedan en espera, sin error, y se retoman al reanudar.Lo demás sigue funcionando: calendario, tareas, clientes y acciones manuales. Tocá Pausar IA y confirmá; para volver, Reanudar IA. Solo Dueño y Encargado.",{"id":803,"title":804,"titles":805,"content":806,"level":263},"\u002Fdocs\u002Fchannels\u002Fpauses-and-status#pausa-automática-por-spam-o-abuso","Pausa automática por spam o abuso",[81],"Activada por defecto, en Configuración → Plan. Dos protecciones, ambas sin pausar nunca el canal entero (así no se pierde ningún cliente legítimo): Silencio por contacto. Si un mismo contacto manda más de 15 mensajes en 5 minutos (o 60 en una hora), el bot deja de responderle en esa conversación durante 30 minutos. Los mensajes se siguen guardando y llegan al Inbox; solo se corta la IA y las respuestas automáticas. La conversación queda marcada para atención con el motivo \"posible spam\", te llega una notificación de spam y, desde la conversación, Reactivar bot la devuelve antes de tiempo. Al terminar el enfriamiento el bot vuelve solo.Freno de gasto de IA. Si el proyecto supera 300 llamadas a la IA en 10 minutos, la IA del proyecto se pausa sola (motivo: automática) y te avisamos. Esta pausa no se levanta sola: una ráfaga así puede ser un bucle o un ataque, y reactivar sola volvería a gastar. La ves en Estado y en Uso de IA, y la reanudás con Reanudar IA cuando revisaste qué pasó. Los mensajes de tu equipo y los del simulador no cuentan. Dueño y Encargado pueden apagarlo o cambiar los umbrales y el enfriamiento.",{"id":808,"title":809,"titles":810,"content":811,"level":263},"\u002Fdocs\u002Fchannels\u002Fpauses-and-status#estado-de-mi-servicio","Estado de mi servicio",[81],"Configuración → Estado (Dueño y Encargado) responde en lenguaje llano si tu negocio está atendiendo. Muestra un semáforo general y una tarjeta por cada parte: WhatsApp: si está conectado y recibiendo mensajes.Asistente automático: si el bot está activo.Respuestas inteligentes: si hay cuota de IA disponible este mes.Chat web y Telegram: sitios permitidos y sesiones activas, último mensaje, topes de uso alcanzados, webhook de Telegram, errores de entrega y clientes que bloquearon al bot.Los canales disponibles que todavía no conectaste, con un enlace a Canales. Cada tarjeta con un problema trae un enlace para arreglarlo. Si algo está pausado, también se indica.",{"id":813,"title":814,"titles":815,"content":816,"level":263},"\u002Fdocs\u002Fchannels\u002Fpauses-and-status#uso-de-ia","Uso de IA",[81],"Configuración → Plan muestra cuánta IA usó tu negocio este mes y cuál es el límite de tu plan, con avisos al llegar al 80 % y al límite. Al llegar al límite, las funciones con IA se pausan y las automatizaciones con IA esperan en la bandeja; todo lo demás sigue funcionando.Si no se puede confirmar el uso, aparece \"Uso incierto\" y la IA puede estar limitada.El monto es el subtotal conocido, no una factura.Con Solicitar más (dueño) le avisás al equipo de Fiuit para ampliar el límite.",{"id":818,"title":819,"titles":820,"content":821,"level":263},"\u002Fdocs\u002Fchannels\u002Fpauses-and-status#qué-rol-puede-qué","Qué rol puede qué",[81],"AcciónDueñoEncargadoEquipo y lecturaPausar o reanudar canales e IASíSíNoVer Estado y Uso de IASíSíNoSolicitar más IASíNoNoConectar Telegram o publicar el chat webSíNoNo Más sobre permisos en Roles y permisos.",{"id":86,"title":85,"titles":823,"content":824,"level":257},[],"Todas las conversaciones de todos los canales en un solo lugar: estados, resolver, archivar, eliminar, contexto del cliente y resumen con IA. El Inbox reúne las conversaciones de WhatsApp, Telegram y el chat web en una sola bandeja. El bot atiende solo; el Inbox es donde entrás vos cuando una conversación necesita una persona.",{"id":826,"title":827,"titles":828,"content":829,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#estados-de-una-conversación","Estados de una conversación",[85],"Cada conversación tiene un estado que refleja a quién se está esperando: Pendiente: todavía nadie la tomó.Esperando al cliente: respondiste y quedó a la espera de que el cliente escriba.Esperando al equipo: el cliente escribió y hay que responder.Resuelta: terminada. En la lista podés filtrar por estado, con el contador de cada uno; los filtros en cero no se muestran.",{"id":831,"title":832,"titles":833,"content":834,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#filtrar-la-lista","Filtrar la lista",[85],"Atención muestra las conversaciones que esperan a una persona y Todas, las activas de todos los canales.En el celular, Ver abre el resto: buscar por nombre o teléfono, los estados con su contador, Archivadas y Posible spam; el número sobre Ver dice cuántos filtros hay activos.Posible spam junta los contactos nuevos que parecen spam o quedaron en cuarentena, para revisarlos antes de responder.Para actualizar la lista en el celular, deslizala hacia abajo desde arriba.",{"id":836,"title":837,"titles":838,"content":839,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#más-filtros-en-ver","Más filtros en Ver",[85],"Canal muestra solo las conversaciones de WhatsApp, Instagram, Telegram o el chat web; aparecen los canales que tienen conversaciones y podés elegir varios.Último mensaje filtra por Hoy, Últimos 7 días, Últimos 30 días o un Rango entre dos fechas, en la zona horaria del negocio.Mías junta las conversaciones en las que respondiste vos.Se combinan con Atención, Todas y los estados, cada uno suma uno en el número de Ver y el panel los recuerda para vos en este navegador.En la computadora están en el ícono de Filtros, junto a la búsqueda.",{"id":841,"title":842,"titles":843,"content":844,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#resolver-archivar-y-eliminar","Resolver, archivar y eliminar",[85],"Marcar como resuelta (y Reabrir una resuelta) está en el detalle y en el menú de cada fila. Si el cliente vuelve a escribir, la conversación se reabre sola. También podés hacerlo con varias conversaciones a la vez: entrá al modo de selección, elegí las filas y aplicá la acción.Archivar saca la conversación de la lista principal. El filtro Archivadas aparece solo si hay alguna, y desde ahí la desarchivás.Eliminar (solo Dueño y Encargado) borra la conversación y todos sus mensajes y adjuntos para siempre. El cliente y sus tareas quedan; si el cliente escribe de nuevo, empieza una conversación nueva. El panel te pide confirmación y te avisa si hay envíos pendientes. Cada borrado queda en el registro de auditoría.",{"id":846,"title":847,"titles":848,"content":849,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#contexto-del-cliente","Contexto del cliente",[85],"Al abrir una conversación, un panel lateral (una hoja en el celular) muestra el contexto del cliente: sus datos, un resumen de sus visitas, sus etiquetas y notas, y sus próximas y últimas tareas, que abren el diálogo de tarea. Lo que está vacío se oculta. Nueva tarea y el acceso al contexto están en el ⋯ de la cabecera de la conversación; en el celular, el contexto se abre como hoja desde ahí. Desde ahí también podés crear una tarea con el cliente ya precargado (y el servicio de su última tarea, si sigue activo). Si ya tiene una próxima tarea parecida, el panel te ofrece abrirla antes de crear otra. El equipo ve solo el canal, el estado y las tareas que ya puede ver: nunca ve dinero. El Dueño y el Encargado leen la ficha completa.",{"id":851,"title":852,"titles":853,"content":854,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#resumir-con-ia","Resumir con IA",[85],"El botón Resumir (en el contexto de la conversación) arma con IA un resumen breve: qué pide el cliente, qué se le respondió y qué queda pendiente, en tres a cinco viñetas. Los teléfonos y emails aparecen enmascarados, y el texto es de lectura: confirmalo en la conversación antes de actuar. Se genera solo cuando hay mensajes nuevos; si nada cambió, se muestra el resumen guardado sin gastar IA de nuevo.Junto a la fecha del resumen aparece Actualizar cuando entraron mensajes nuevos.Consume la cuota de IA del plan y respeta la pausa de emergencia: con la IA pausada o sin cuota no hay botón, solo el aviso.",{"id":856,"title":857,"titles":858,"content":859,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#permisos","Permisos",[85],"AcciónDueño y EncargadoEquipoSolo lecturaVer y responderSíSolo lo suyoSí (lectura)Cambiar estado y archivarSíSíNoEliminarSíNoNoResumir con IASíSí (solo lo que ve)No Cuando una conversación queda en manos de una persona, el bot se pausa en esa conversación: ver El bot y la IA.",{"id":861,"title":862,"titles":863,"content":864,"level":263},"\u002Fdocs\u002Fchannels\u002Finbox#primer-contacto-desde-la-ficha-del-cliente","Primer contacto desde la ficha del cliente",[85],"El botón de mensaje de la ficha lleva el nombre del canal («WhatsApp», «Telegram»); con varios canales, en la computadora hay un botón por canal (hasta dos) y en el celular «Mensaje» abre una hoja para elegirlo. Abre una conversación vacía si hay un canal conectado y un destinatario enrutable. Abrir no envía nada. Telegram requiere un usuario que ya escribió al bot; el teléfono no sirve como destinatario. WhatsApp por QR: permite texto de primer contacto sin esperar que el cliente escriba primero. El panel avisa antes de abrir: el número puede ser bloqueado; evitá mensajes no solicitados. Hay un límite de aperturas nuevas por proyecto y día UTC (20 por defecto). Reabrir la misma conversación no consume cupo; al alcanzar el límite, esperá al día siguiente. Este límite no elimina el riesgo de bloqueo.Instagram: no se inicia desde la ficha: el cliente abre la ventana de 24 h al escribir. Chat web: solo responde al visitante.",{"id":90,"title":89,"titles":866,"content":867,"level":257},[],"Un formulario de tu sitio (o de Typeform, Tally…) que entra al Inbox como un canal, con URL protegida por token, antispam y respuesta por email o WhatsApp. El canal Formulario recibe los envíos de un formulario de tu propio sitio (o de una herramienta como Typeform o Tally) y los convierte en conversaciones del Inbox: llegan con nombre, email, teléfono y mensaje, y los respondés desde ahí, como cualquier conversación.",{"id":869,"title":870,"titles":871,"content":872,"level":263},"\u002Fdocs\u002Fchannels\u002Fform#activarlo-paso-a-paso","Activarlo, paso a paso",[89],"Entrá como Dueño a Atención → Canales → Formulario y tocá Activar el canal.Recibís la URL pública con un token secreto: es donde apunta tu formulario. El panel también te da un código HTML simple, sin dependencias, listo para pegar en tu sitio.Opcional — Sitios permitidos: restringí de dónde se puede enviar, un dominio por línea (con https:\u002F\u002F, sin rutas ni comodines, hasta 10). Vacío: acepta envíos de cualquier sitio.Opcional — Verificación antispam: si la plataforma tiene las claves de Cloudflare Turnstile, activá la verificación para bloquear bots del lado del servidor.Opcional — Mapeo de campos: si tu formulario usa otros nombres de campo, indicá a qué dato corresponde cada uno (nombre, email, teléfono, motivo, mensaje). El resto de los campos se guardan como datos extra del envío.",{"id":874,"title":875,"titles":876,"content":877,"level":263},"\u002Fdocs\u002Fchannels\u002Fform#cómo-se-responde","Cómo se responde",[89],"Cada envío aparece en el Inbox como una conversación nueva, en el idioma del proyecto. Se responde por email o por WhatsApp, según los canales que tengas conectados y los datos que haya dejado quien escribió: Con email o teléfono a mano, respondés directo desde el Inbox.Si no hay ninguna vía de respuesta, el envío se ve igual en el Inbox, marcado como sin respuesta disponible. Antes de publicar el formulario, podés mandar un envío de prueba desde el propio canal y verlo en el Inbox con una etiqueta de prueba.",{"id":879,"title":880,"titles":881,"content":882,"level":263},"\u002Fdocs\u002Fchannels\u002Fform#el-token","El token",[89],"La URL lleva un token que autentica los envíos. Si se filtra o querés cambiarlo, tocá Rotar token: la URL anterior deja de funcionar en el acto y hay que actualizar los formularios publicados. Apagar el canal corta los envíos nuevos; lo recibido se conserva. La página de contacto de fiuit.com es un ejemplo de este canal: lo que escribís ahí cae directo en el Inbox del equipo de Fiuit. El campo Productos permite configurar hasta 72 líneas. Los nombres, unidades y demás campos comparten 512 nodos y 16 KiB, por lo que los datos reales pueden admitir menos líneas. Las configuraciones con mínimos que no caben se rechazan. Los pedidos e importes existentes se conservan.",{"id":94,"title":93,"titles":884,"content":885,"level":257},[],"Conectá la cuenta profesional de Instagram de tu negocio para atender por mensaje directo con el mismo bot y la misma bandeja. Con Instagram, tus clientes te escriben por mensaje directo (DM) a la cuenta profesional del negocio y los atiende el mismo asistente que en WhatsApp: mismos servicios, mismos horarios, misma bandeja. Es un canal solo para clientes: el equipo no recibe avisos por Instagram. Instagram ya está disponible. Si en Atención → Canales no ves la tarjeta de Instagram, escribinos y lo revisamos.",{"id":887,"title":888,"titles":889,"content":890,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#conectar-tu-cuenta","Conectar tu cuenta",[93],"Tu cuenta de Instagram tiene que ser profesional (Empresa o Creador). No hace falta una Página de Facebook.En el panel, andá a Atención → Canales → Instagram y tocá Conectar Instagram. Solo el dueño puede hacerlo.Iniciá sesión en Instagram con la cuenta del negocio y aceptá los permisos (perfil básico y mensajes).Volvés al panel con la cuenta conectada (@tu_cuenta). Probalo mandándole un DM desde otra cuenta. Fiuit guarda el acceso cifrado y lo renueva solo antes de que venza. Si Instagram lo revoca (por ejemplo, cambiaste la contraseña o quitaste el permiso), la tarjeta pasa a Desconectado y hay que volver a conectar. Una misma cuenta no puede estar conectada a dos proyectos. Desconectar borra el acceso guardado y conserva el historial. Tu plan limita cuántas conexiones podés tener en total (en Solo, 2) y un solo número de WhatsApp, salvo en Business. Mirá Límites de tu plan.",{"id":892,"title":760,"titles":893,"content":894,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#qué-hace",[93],"Atiende con el mismo bot: busca horarios, pre-reserva, confirma, responde con tu conocimiento y deriva a una persona.Acepta texto. Si el cliente manda una foto, audio u otro adjunto, el bot le pide que lo escriba. Comentarios, menciones en historias y Messenger no entran.Las opciones y confirmaciones ofrecen respuestas rápidas: tocá una para responder. También se puede responder escribiendo. Con más de 13 opciones no aparecen botones; los títulos largos se acortan.",{"id":896,"title":897,"titles":898,"content":899,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#la-regla-de-las-24-horas","La regla de las 24 horas",[93],"Meta solo permite responder dentro de las 24 horas del último mensaje del cliente. Por eso: Las respuestas del bot y del equipo salen mientras la ventana esté abierta. Si venció, el mensaje no se envía y la conversación pasa a una persona.Los avisos automáticos (recordatorios, confirmaciones, «en camino», horario asignado) no salen por Instagram fuera de la ventana. Si el cliente también te escribió por WhatsApp o Telegram, el aviso va por ese canal, siempre dentro de sus propias reglas. Si no tiene ningún canal utilizable, el aviso no se reintenta: la tarea queda con la etiqueta no-se-pudo-avisar y aparece en Necesita tu atención de Hoy («No se pudo avisar»). Avisale por tu cuenta y quitá la etiqueta.No se puede iniciar una conversación nueva por Instagram desde la ficha del cliente: la abre el cliente al escribirte.",{"id":901,"title":696,"titles":902,"content":903,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#nombre-y-contacto-del-cliente",[93],"Cuando alguien te escribe por primera vez, su ficha se completa sola con el nombre de su perfil de Instagram y su @usuario (si no tiene nombre, queda el @usuario). Si cargás el nombre a mano, Instagram nunca lo reemplaza. Instagram no comparte el teléfono. Si en Atención → Canales → Instagram ves «Instagram no nos entrega el nombre ni la foto de quien te escribe», Meta todavía no habilitó esos datos: los clientes nuevos llegan sin nombre y podés completarlo en su ficha.",{"id":905,"title":701,"titles":906,"content":907,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#foto-del-cliente",[93],"Cuando un cliente te escribe, su foto de perfil de Instagram aparece sola en la conversación, en su ficha, en sus tareas y en la agenda; guardamos una copia porque el enlace de Instagram vence. Dueño y Encargado pueden cambiarla o quitarla desde la ficha; una foto elegida a mano no se reemplaza sola. La foto solo la ve tu equipo.",{"id":909,"title":782,"titles":910,"content":911,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#estado-y-pausas",[93],"En Atención → Canales → Instagram ves la cuenta conectada, el estado del acceso y cuándo vence. Podés pausar el bot o el canal como en los demás canales. Completá la autorización en el mismo navegador y proyecto donde empezaste. No compartas el enlace de conexión. Si al volver de Instagram ves un aviso en lugar de la cuenta conectada: Iniciá sesión en el panel y volvé a conectar: tu sesión del panel no estaba abierta en ese navegador.El enlace venció; generá uno nuevo: pasaron más de 10 minutos o ya se usó. Tocá Conectar Instagram otra vez.Este enlace lo generó otro usuario o proyecto: empezaste la conexión con otra cuenta del panel o con otro proyecto activo.Cancelaste la conexión en Instagram: no se conectó nada; podés volver a intentarlo cuando quieras. Al desconectar, la cuenta queda libre para conectarla a otro proyecto. La revocación se detecta al enviar, consultar el estado o renovar; los callbacks de desautorización y eliminación todavía están pendientes. Desconectar conserva el historial y no elimina los datos. Si la ventana vence durante el envío, se intenta otro canal utilizable del mismo cliente. La marca no-se-pudo-avisar tiene un lugar reservado además de las veinte etiquetas de negocio, sin reemplazarlas. Reconfirmaciones y pedidos de reseña conservan su conversación y no cambian de canal.",{"id":913,"title":914,"titles":915,"content":916,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#respuestas-rápidas-y-preguntas-iniciales","Respuestas rápidas y preguntas iniciales",[93],"Las respuestas rápidas aparecen en la app móvil de Instagram. En escritorio, o si Instagram rechaza los botones, el cliente puede responder con el texto o número de la opción. Confirmar sigue requiriendo una respuesta posterior al resumen; los botones no cambian las validaciones. Las preguntas iniciales («Hacer un pedido», «Ver horarios», «Hablar con alguien») requieren activación por soporte. Se adaptan al idioma y a los servicios activos; si el negocio usa reservas, se ofrece reservar. Todavía no hay un editor de estas preguntas en el panel.",{"id":918,"title":919,"titles":920,"content":921,"level":263},"\u002Fdocs\u002Fchannels\u002Finstagram#fotos-del-catálogo-por-instagram","Fotos del catálogo por Instagram",[93],"Sí, con las fotos de productos activadas: después de la pregunta y en el resumen del pedido, manda una imagen por opción. El nombre y precio quedan en el texto y se puede elegir tocando una respuesta rápida o escribiendo. Si una foto no llega, el pedido sigue igual. Se controla en Atención → Bot → Personalidad.",{"id":103,"title":102,"titles":923,"content":924,"level":257},[],"Qué hace el bot de tu negocio, qué no puede hacer, cómo configurarlo, probarlo en el simulador y cuándo pasa la conversación a una persona. El bot es el asistente que atiende a tus clientes por WhatsApp, Telegram y el chat de tu sitio. Entiende lo que escriben, ofrece horarios reales y deja la reserva armada. Todo lo que importa lo calcula el sistema: el bot no inventa horarios, precios ni direcciones, y no confirma nada por su cuenta.",{"id":926,"title":927,"titles":928,"content":929,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#qué-puede-y-qué-no-puede-hacer","Qué puede y qué no puede hacer",[102],"PuedeNo puedeEntender texto, audios, errores de tipeo y cambios de ideaInventar horarios, precios o direccionesBuscar horarios y ofrecer 2 o 3 opcionesConfirmar una reserva sin pasar por el motor de agendaRetener un horario y pedir los datos que faltanUsar herramientas de administración con un clienteResponder dudas con la base de conocimientoSeguir instrucciones escondidas en un mensaje o un archivoGuardar una ubicación compartida (con tu confirmación SÍ\u002FNO)Ver datos de otro negocioPasar la conversación a una personaResponder temas ajenos a tu negocio (tareas, código, política, charla) Fechas, horas, servicios y precios de cada mensaje salen de plantillas completadas con datos del sistema. Los audios se transcriben antes de que la IA los lea, y la transcripción se ve en el Inbox.",{"id":931,"title":932,"titles":933,"content":934,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#configurar-al-bot","Configurar al bot",[102],"Andá a Atención → Bot. Tiene cuatro pestañas: Personalidad: el nombre del bot, el tono (amigable, profesional o casual), el mensaje inicial (podés usar {name} y {business}), instrucciones sobre cómo debe comportarse e idioma predeterminado.Base de conocimiento: lo que el bot sabe de tu negocio. Ver Conocimiento del bot.Simulador: probás el bot sin enviar mensajes reales.Fuentes: páginas web, secciones de un sitio y listados que el bot lee y mantiene al día. Las instrucciones son una preferencia de estilo (\"sé breve\", \"tratá de vos\"). No cambian las reglas: el bot nunca va a poder saltarse el motor de agenda.",{"id":936,"title":937,"titles":938,"content":939,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#cómo-vendés-y-cómo-toma-los-pedidos","Cómo vendés y cómo toma los pedidos",[102],"En Atención → Bot → Personalidad, el ajuste Cómo vendés le dice al bot qué ofrecer primero: Vendo productos (con entrega o servicio): abre con tus productos y pregunta producto, cantidad y dirección. El reparto se deduce del producto: nunca le pide al cliente que elija «Reparto».Vendo servicios (que pueden llevar productos): abre con tus servicios y pregunta día y horario.Ambos: ofrece lo que el cliente pida primero. El ajuste solo cambia el orden: para tomar un pedido el bot siempre necesita lo mismo (productos y cantidades o el servicio, la dirección si hay entrega, y lo que pida el formulario del servicio). No vuelve a preguntar lo que ya sabe: el teléfono sale del canal, el nombre y las direcciones guardadas de la ficha del cliente, y lo que el cliente escribió en el mensaje. Por defecto toma el valor del modelo de negocio con el que arrancaste o, si no, el que sale de tus servicios. Cuando el bot toma un pedido (esta forma de tomar pedidos se está habilitando por etapas; ya está activa en los negocios de demostración): Entiende todo en un mensaje: «mandame 3 agüitas a Madariaga 737» queda con la cantidad, la dirección y, si hay dos aguas, pregunta solo cuál, con opciones. Entiende medidas («de 12», «12 l», «el chico») y diminutivos.La dirección que el cliente dice gana a la guardada. Si no dice ninguna, usa la guardada y la nombra en el resumen («Te lo llevo a 25 de Mayo 1530, como la otra vez»). Entiende «a casa» o «al trabajo» por la etiqueta de la dirección guardada; si no la encuentra, pregunta cuál.Sugiere, no carga: con «lo de siempre» o «lo mismo que la otra vez» muestra ese pedido y espera el SÍ. Un cliente nuevo no recibe sugerencias.Corregir no borra el pedido: con un NO pregunta qué cambiar (si la dirección era la guardada, pide la nueva directamente); «mejor 3» o «sacá la soda» se aplican y vuelve a mostrar el resumen. Solo una cancelación explícita («cancelá») lo descarta.El resumen dice siempre la dirección y el total del sistema; el pedido se crea recién con el SÍ.Fotos de los productos: si un producto tiene foto en el catálogo, el bot la manda después del texto al ofrecer productos, al preguntar «¿De cuál?» y en el resumen (en Telegram y en WhatsApp por la API oficial; en los demás canales, solo texto). Hasta 4 por mensaje, sin repetir la misma en la hora. El texto con las opciones no cambia: se elige igual por número, nombre o botón. Lo apagás con Mostrar fotos de productos en el chat, en la misma pantalla.",{"id":941,"title":942,"titles":943,"content":944,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#probarlo-en-el-simulador","Probarlo en el simulador",[102],"En la pestaña Simulador escribís como si fueras un cliente. Ves las respuestas del bot, la configuración y los elementos de conocimiento activos, y las reservas de prueba que se crean (llevan la etiqueta Prueba: no entran en las estadísticas). Reiniciar conversación empieza de cero. Al crear la sesión de prueba elegís la persona: un contacto nuevo o uno existente. Son contactos ficticios, nunca un cliente real.",{"id":946,"title":947,"titles":948,"content":949,"level":301},"\u002Fdocs\u002Fbot\u002Foverview#el-inspector","El Inspector",[102,942],"El Inspector muestra, turno por turno, cómo pensó el bot: Las herramientas que llamó, con sus argumentos y el resultado resumido.El conocimiento que usó, con su puntaje.Las reglas que decidieron.El modelo, los tokens y el costo de cada llamada.El motivo cuando deriva la conversación a una persona. Así podés ajustar la configuración viendo exactamente qué pasó, sin adivinar.",{"id":951,"title":952,"titles":953,"content":954,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#cuando-entra-una-persona","Cuando entra una persona",[102],"Todas las conversaciones se ven en el Inbox, con el estado \"IA respondiendo\", \"Pide una persona\" o \"Persona atendiendo\". Tomar el control: si escribís una respuesta, el bot se pausa en esa conversación.Devolver al bot: lo hacés a mano cuando termines.Si no hay actividad tuya durante 15 minutos, el bot retoma solo.El bot también pasa la conversación al Inbox cuando el cliente pide hablar con una persona o cuando algo falla. El cliente puede escribir «humano», «atendente» o “human”, o pedirlo con sus palabras, en cualquier momento: también en medio de un pedido o una reserva.Si le piden algo ajeno al negocio, el bot responde con cortesía qué temas atiende y cómo hablar con una persona, sin derivar la conversación. WhatsApp no permite asistentes de uso general en su API desde enero de 2026.",{"id":956,"title":957,"titles":958,"content":959,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#límites-por-canal","Límites por canal",[102],"Cada canal puede tener sus reglas. En el chat web, por ejemplo, el bot pide teléfono y email antes de conversar y deja de responder después de un número de mensajes. Está explicado en WebChat.",{"id":961,"title":962,"titles":963,"content":964,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#cuánta-ia-usa-tu-negocio","Cuánta IA usa tu negocio",[102],"En Configuración → Plan ves cuánto consumió tu negocio este mes y el límite de tu plan. Al llegar al 80 % aparece un aviso; si se alcanza el límite, las funciones con IA se pausan y el bot responde un mensaje fijo y pasa la conversación al Inbox. También podés cortar el consumo a mano con la pausa de emergencia: ver Pausas y Estado.",{"id":966,"title":324,"titles":967,"content":968,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#próximos-pasos",[102],"Conocimiento del bot: enseñale a responder con la información de tu negocio.WhatsApp y Telegram: conectá los canales. El bot de clientes reserva servicios con horario; las tareas de cola las crea el equipo desde el panel o la API. Creación de entregas en cola por chat: próximamente.",{"id":970,"title":971,"titles":972,"content":973,"level":263},"\u002Fdocs\u002Fbot\u002Foverview#el-bot-reúne-los-mensajes-seguidos","El bot reúne los mensajes seguidos",[102],"El bot puede reunir mensajes consecutivos antes de responder. El modo normal espera 3 segundos de silencio, o 5 mientras recoge datos necesarios; el modo corto espera 3 y Desactivado mantiene un turno por mensaje. La espera máxima es de 12 segundos. Los mensajes posteriores a un turno que ya empezó quedan para la próxima respuesta. Podés elegir el modo global en Bot y una excepción en WhatsApp o WebChat. Telegram e Instagram heredan el modo global. El panel muestra la espera efectiva; no depende de una señal de escritura del canal. La confirmación sigue siendo explícita: los datos enviados junto con un SÍ producen un nuevo resumen y requieren otro SÍ posterior. Cancelar o pedir una persona interrumpe la propuesta. Los audios admitidos se preparan después de cumplir las reglas de contacto; un audio excesivo no se recorta.",{"id":107,"title":106,"titles":975,"content":976,"level":257},[],"Enseñale al bot con textos, archivos, páginas web, una sección de tu sitio o listados (hojas de cálculo, CSV, JSON y RSS) que se mantienen al día. La base de conocimiento es lo que el bot consulta para contestar dudas: horarios de atención, políticas, productos, precios, novedades. Tiene dos orígenes: lo que cargás a mano y lo que importás de fuentes que se actualizan solas. Todo está en Atención → Bot, en las pestañas Base de conocimiento y Fuentes. No pongas datos personales de clientes en ninguna fuente. Lo que está en una fuente puede aparecer en las respuestas del bot. El bot cita esos datos como información, nunca los toma como órdenes.",{"id":978,"title":979,"titles":980,"content":981,"level":263},"\u002Fdocs\u002Fbot\u002Fknowledge#horario-y-dirección-salen-de-tus-datos","Horario y dirección: salen de tus datos",[106],"Cuando un cliente pregunta «¿dónde están?» o «¿a qué hora abren?», el bot contesta con los datos reales del negocio, sin inventar: Dirección: la de Mi negocio → Datos → Dirección y región.Horario: la semana de tu agenda, juntando los horarios activos de tu equipo y tus recursos (Mi negocio → Equipo y recursos), en la zona horaria del negocio. Si cambiás un horario, el bot ya dice el nuevo. Si en la base de conocimiento tenés un texto de dirección u horario, no pisa esos datos: solo suma detalles, como «estacionamiento en la esquina». Si el texto dice otra cosa, vale lo de tus datos. Sin dirección cargada o sin horarios activos, el bot contesta con lo que tenga la base o pasa con el equipo.",{"id":983,"title":984,"titles":985,"content":986,"level":263},"\u002Fdocs\u002Fbot\u002Fknowledge#cargar-conocimiento-a-mano","Cargar conocimiento a mano",[106],"En Base de conocimiento tocá Nuevo elemento y elegí el tipo: Preguntas frecuentes: una pregunta y su respuesta.Texto: un título y un contenido libre (por ejemplo, la política de cancelación).Producto\u002FServicio: nombre, descripción y precio opcional.Archivo: arrastrá un archivo (máximo 5 MB). Se procesa y se puede activar o desactivar. Cada elemento tiene un interruptor Activo: el bot solo usa los activos. Podés buscar y filtrar por tipo.",{"id":988,"title":989,"titles":990,"content":991,"level":263},"\u002Fdocs\u002Fbot\u002Fknowledge#fuentes-lo-que-se-actualiza-solo","Fuentes: lo que se actualiza solo",[106],"En Fuentes tocá Agregar fuente y elegí el tipo. El sistema la importa en pocos minutos y la refresca solo; podés cambiar la frecuencia (cada hora, 6 horas, día o semana), Actualizar ahora, Pausar y Reanudar. Cada tarjeta muestra el estado: En cola, Al día, Con error o Pausada. Una fuente que falla varias veces seguidas se pausa sola. Si la borrás, también se quitan sus ítems importados (los escritos a mano no se tocan). Reglas comunes: solo direcciones públicas http(s), hasta 2 MiB por fuente y 10 fuentes por proyecto. No se leen páginas que pidan iniciar sesión, y se respeta el robots.txt del sitio.",{"id":993,"title":994,"titles":995,"content":996,"level":301},"\u002Fdocs\u002Fbot\u002Fknowledge#una-página-web","Una página web",[106,989],"Agregar fuente → Página web, alcance Página.Escribí la URL pública (por ejemplo, tu página de precios).Se lee el texto de la página, sin ejecutar JavaScript.",{"id":998,"title":999,"titles":1000,"content":1001,"level":301},"\u002Fdocs\u002Fbot\u002Fknowledge#una-sección-de-tu-sitio","Una sección de tu sitio",[106,989],"Para que el bot aprenda varias páginas de un mismo sitio, sin cargarlas una por una: Agregar fuente → Página web, alcance Sección del sitio.Escribí el prefijo, por ejemplo https:\u002F\u002Ftusitio.com\u002Fayuda.Elegí el máximo de páginas (50 por defecto, hasta 200). El sistema lee el sitemap.xml del dominio y toma solo las páginas del mismo sitio que empiezan con ese prefijo. En cada actualización suma las páginas nuevas, actualiza las que cambiaron y archiva las que desaparecieron. La tarjeta muestra \"N páginas importadas\" y Ver páginas lista cada una con su estado (Importada o Archivada). No hay un rastreador: si el sitio no publica sitemap.xml, la fuente queda con el aviso correspondiente y tenés que importar las páginas una por una.",{"id":1003,"title":1004,"titles":1005,"content":1006,"level":301},"\u002Fdocs\u002Fbot\u002Fknowledge#un-listado-hoja-de-cálculo-csv-json-o-rss","Un listado: hoja de cálculo, CSV, JSON o RSS",[106,989],"Sirve para productos, precios o novedades que ya llevás en una planilla, una tienda o un feed. Agregar fuente y elegí Hoja de cálculo, CSV, API JSON o RSS.Pegá el enlace. Para una hoja de Google: Archivo → Compartir → Publicar en la web o dejala visible para cualquiera con el enlace; la primera fila debe tener encabezados.En Mapeo de campos escribí qué columna alimenta cada campo: Nombre (obligatorio), Descripción, Precio, Categoría, Enlace y Clave estable. En JSON se escribe la ruta, por ejemplo productos[].nombre. Con RSS no hace falta mapeo.Tocá Ver vista previa: te muestra las primeras filas válidas y cuántas se omiten.Si se ve bien, Guardar fuente. Hasta 1000 filas por fuente. Si usás Clave estable (un código que no cambia, como un SKU), renombrar un producto lo actualiza; sin clave, renombrarlo crea un ítem nuevo y desactiva el viejo. Para una API que pide credencial podés cargar un encabezado Authorization o un parámetro en la URL: se guarda cifrada y no se vuelve a mostrar.",{"id":1008,"title":1009,"titles":1010,"content":1011,"level":263},"\u002Fdocs\u002Fbot\u002Fknowledge#si-algo-sale-mal","Si algo sale mal",[106],"La tarjeta de la fuente explica la causa: MensajeQué hacerNo encontramos esa página (404)Revisá la direcciónLa página pide iniciar sesiónSolo se leen páginas públicasEl sitio no respondióSe reintenta solo más tardeEl sitio no publica sitemap.xmlImportá las páginas una por unaEl sitemap no tiene páginas bajo esa direcciónRevisá el prefijoEl sitemap no es válidoRevisá el sitemap del sitioEl sitio no permite que la leamos (robots.txt)Es una decisión del sitioUna columna del mapeo no existeRevisá los nombres de columnaNo se encontró texto para importarLa página o el listado están vacíos; lo ya importado no se desactiva Después de agregar conocimiento, probalo en el Simulador: preguntale lo que preguntaría un cliente. Para integrar fuentes por API, mirá los endpoints \u002Fknowledge en Endpoints.",{"id":116,"title":115,"titles":1013,"content":1014,"level":257},[],"Cómo se organiza el día a día en Fiuit, con Hoy, Inbox y Trabajo, y cómo funcionan las etapas y las acciones de una tarea, como tomar, soltar y cerrar. En Fiuit todo lo que hay que hacer es una tarea: un turno, una mesa, una visita, una entrega. Una conversación puede crear una; también las creás a mano con el botón Nueva tarea o desde la API. El panel te lo muestra con tres destinos principales: Hoy, Inbox y Trabajo. El resto está en Más.",{"id":1016,"title":1017,"titles":1018,"content":1019,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#hoy-inbox-y-trabajo","Hoy, Inbox y Trabajo",[115],"Hoy es tu panel del día. Muestra lo que necesita tu atención, lo que viene ahora, lo en curso, lo de más tarde y, plegado, lo completado. Quien es del equipo ve solo lo suyo (Mías); Dueño y Encargado alternan entre Mías y Todo.Inbox reúne las conversaciones que piden una persona. Ver El bot y la IA.Trabajo es el lugar donde ves todas las tareas. Se mira en dos ejes que se combinan.",{"id":1021,"title":1022,"titles":1023,"content":1024,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#trabajo-conjunto-forma","Trabajo: conjunto × forma",[115,1017],"Primero elegís qué trabajo ver (el conjunto): ConjuntoQué muestraSin asignarLo que necesita atención: sin responsable, sin horario o esperando confirmaciónHoyEl trabajo de hoy de todo el negocioPróximasLo que viene, agrupado por díaTodoTodo el trabajo, con orden y agrupación a elecciónMíasLo asignado a vos Después elegís cómo verlo (la forma): FormaCuándo apareceListaSiempreCalendarioSi hay recursos con agenda (por día, por profesional o por semana)MapaSi trabajás en lugares de tus clientes (servicios a domicilio, zonas de cobertura o tareas fuera del local). Ver Mapa y direccionesLínea de tiempoSi hay recursos activos: una fila por persona o recurso y una barra por tarea a lo largo de los días \"Si no tiene nada, no se ve\": una forma solo aparece cuando tu negocio la necesita. Todas abren el mismo detalle de la tarea. Los filtros (buscar, prioridad, etiqueta, fechas) y el orden y la agrupación valen para todas las formas. El conjunto y el estado son dos desplegables compactos con su contador; en iPad y escritorio comparten una línea con Filtros, orden y vistas en íconos. En celular, abrí Ver para elegir la vista por su ícono. El estado se quita con su × y no se repite como chip; los demás filtros aparecen debajo. Los estados disponibles salen de tus flujos, incluso sin tareas: «No entregadas» solo aparece con un recorrido de entregas, nunca por tener una cola de atención en el local.",{"id":1026,"title":1027,"titles":1028,"content":1029,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#ver-agrupar-y-ordenar","Ver: agrupar y ordenar",[115,1017],"Hoy y la Lista de Trabajo comparten el selector Ver: Agrupar por (Momento —Ahora, En curso, Más tarde y Completadas, el de Hoy—, recurso, servicio, cliente, etapa, estado, zona, etiqueta, prioridad o día) y Ordenar por (hora, vencimiento, prioridad o creación, ascendente o descendente). Solo aparecen los agrupados con sentido para tu negocio: sin zonas no hay Zona y sin etapas no hay Etapa. Lo elegido queda en el enlace y se recuerda por persona y por vista. Los grupos vacíos no se muestran y las completadas van plegadas. En el Calendario el agrupado es por recurso: con Por elegís todos, un tipo, un equipo o un recurso.",{"id":1031,"title":1032,"titles":1033,"content":1034,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#vistas-guardadas","Vistas guardadas",[115,1017],"Una vista es una combinación de Trabajo con nombre: conjunto, forma, filtros, orden y agrupación (por ejemplo, «Entregas de Palermo»). Tocá Vista junto al título y elegí Guardar vista actual…. El menú muestra Vista por defecto, Mis vistas y Del equipo (una sección sin vistas no aparece). Se guardan los criterios, no las tareas: la vista siempre muestra el trabajo actual. Personales por defecto. Dueño y Encargado pueden compartir una vista con el equipo: la ven todos los que ven Trabajo. El resto la usa y la ajusta, pero sus cambios quedan para esa persona; con Guardar como mía la copia a sus vistas.Se recuerda la última. Trabajo abre en la última vista que usaste en cada negocio (en ese dispositivo). Un enlace directo manda; si no recordás ninguna, abre la que Dueño o Encargado marcaron por defecto para el equipo al guardarla, y si no hay, la vista por defecto.Cambios sin guardar. Si tocás un filtro, el orden o la forma, la vista queda modificada hasta que elijas Guardar, Guardar como nueva o Descartar. El enlace (?view=…) incluye lo ajustado.Topes: 10 vistas personales por persona y 10 del equipo por negocio. Una vista borrada o a la que ya no tenés acceso abre la vista por defecto, sin error.",{"id":1036,"title":1037,"titles":1038,"content":1039,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#línea-de-tiempo-por-recurso","Línea de tiempo por recurso",[115,1017],"La Línea de tiempo muestra una fila por persona o recurso (cancha, vehículo, sala…) y una barra por tarea a lo largo de los días. Sirve para ver de un vistazo los huecos y los días llenos, sobre todo con trabajos largos o alquileres. Zoom: En Trabajo → Línea de tiempo, usá −\u002F+ o el deslizador para pasar de semanas a horas. Día y Semana son atajos; Ahora vuelve a hoy con un zoom cómodo. Ctrl\u002F⌘ + rueda, pellizco y teclas +\u002F− conservan el instante bajo el puntero. El zoom se recuerda y se guarda con la vista.Ocupación: cada fila muestra el porcentaje ocupado de la semana sobre su horario de atención; desde 85 % dice «casi lleno» y desde 100 %, «lleno».Mover y estirar: arrastrá una barra a otra hora, día o fila para reprogramarla o reasignarla, o estirala desde el borde derecho para cambiar la duración. También podés elegir la barra y usar los botones (o las flechas del teclado). Mover pide confirmar con «Avisar al cliente»; estirar se guarda directo. Fiuit valida el cambio con las mismas reglas de siempre: si no entra, la barra vuelve a su lugar y el aviso explica por qué. Quién puede mover es lo mismo que reprogramar: Dueño y Encargado cualquier tarea; el equipo, las suyas y solo a sus agendas. En el celular la línea de tiempo se desliza a lo ancho y se mueve con los botones.",{"id":1041,"title":1042,"titles":1043,"content":1044,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#atención-a-demanda","Atención a demanda",[115,1017],"Hoy muestra una sola alerta prioritaria: conversaciones sin respuesta, tareas sin asignar, sin zona, dirección a revisar y por agendar, en ese orden y según tus permisos. «Responder» abre Inbox en Atención. «+N más» despliega los otros motivos con enlaces a listas filtradas. Los ceros se ocultan; una tarea puede contar en varios motivos. Sin asignar abarca el proyecto y no implica horario próximo.",{"id":1046,"title":1047,"titles":1048,"content":1049,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#la-tarea-y-sus-etapas","La tarea y sus etapas",[115],"Cada tarea está en una etapa. Las etapas son el vocabulario de tu negocio: una barbería usa Confirmada → En curso → Completada; una entrega usa Sin asignar → Aceptada → En camino → Entregada. Detrás hay estados fijos (pre-reserva, confirmada, en curso, completada, cancelada, ausente, fallida), por eso los números y las estadísticas significan lo mismo en todos los rubros. El detalle de la tarea muestra el cliente, la fecha y el recurso, las notas, los datos del formulario, el origen (por ejemplo la conversación de WhatsApp de donde vino) y los comentarios y la actividad.",{"id":1051,"title":1052,"titles":1053,"content":1054,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#formularios-por-servicio","Formularios por servicio",[115,1047],"Un servicio puede pedir datos propios al crear la tarea: la dirección de entrega, el motivo de la consulta, el modelo del equipo. Esos datos se completan en la tarea y quedan guardados con ella. Se definen en el servicio (Servicios).",{"id":1056,"title":1057,"titles":1058,"content":1059,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#mensaje-al-cliente-al-entrar-en-una-etapa","Mensaje al cliente al entrar en una etapa",[115],"Cada etapa puede mandarle un mensaje al cliente cuando la tarea llega a ella. En Mi negocio → Etapas, al editar una etapa, Mensaje al cliente al entrar muestra el texto de la plantilla y te deja escribir el tuyo, por idioma del cliente (portugués, español o inglés). Datos que se completan solos: nombre, saludo, servicio, negocio, fecha y hora, monto a cobrar y link de seguimiento se tocan como botones. Fiuit pone el dato real con su formato; no se pueden cambiar ni inventar otros, y el servidor rechaza lo que no existe o está mal escrito.Vista previa con datos de ejemplo, y Volver al texto original para descartar tu texto.Si falta algo, sale el texto de siempre: un cliente cuyo idioma no escribiste, o un dato que no existe para esa tarea (cliente sin nombre, sin monto), recibe el texto de la plantilla, nunca uno con huecos.Cada tarea con su versión: el texto que ya está por enviarse es el de la versión del flujo con la que la tarea entró en la etapa. Editar después no lo cambia.Lo que se envía es siempre el texto guardado: la IA no lo escribe ni lo cambia al enviar. Wagy puede proponerte el texto: lo ves antes y después y no se guarda hasta que confirmás.Solo el dueño guarda cambios; el encargado los ve. Los avisos respetan el horario de silencio y los interruptores de avisos del proyecto.",{"id":1061,"title":1062,"titles":1063,"content":1064,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#siguiente-paso","Siguiente paso",[115],"Cada tarea muestra su siguiente paso: según la etapa, el rol y el servicio, el panel ofrece una salida principal grande (por ejemplo Iniciar o Completar), el resto en Más acciones y las herramientas de la etapa como botones secundarios. Debajo del botón principal ves lo que todavía falta para avanzar (por ejemplo Cobro o un dato del servicio); tocá cualquiera y se abre la hoja de esa salida directo en ese campo. Todo sale del servidor: solo ves lo que tu rol puede hacer en esa etapa. Al elegir una salida se abre una sola hoja con los requisitos de la etapa destino: Lo obligatorio, a la vista: los datos que pide la etapa, la evidencia del servicio (firma o foto), la persona asignada, la ubicación y el cobro cuando hay saldo.Lo opcional, plegado en Agregar más datos (una observación, una propina).Cobro: Cobrado (todo el saldo), Parcial (el resto queda debiendo) o Queda debiendo. El saldo lo calcula el servidor. Si la seña ya cubre el total, no se pide nada. Todo se envía junto, en un solo paso: si algo falla, no queda nada a medias, y reintentar no duplica el cobro ni la etapa. Si falta algo, la hoja marca qué falta. Lo mismo vale para los pasos sin hoja y para las herramientas (Volver más tarde, Compartir seguimiento…): si la conexión se corta o el servidor no responde, volver a tocar lo mismo reintenta la misma acción sin repetirla. Si cambiás el envío (otra salida, otra herramienta, otros datos u otra tarea), cancelás la hoja o llega una respuesta definitiva, el siguiente intento es una acción nueva. Es el mismo comando y la misma protección que usan la API y el MCP, sin permisos nuevos.",{"id":1066,"title":1067,"titles":1068,"content":1069,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#reglas-de-cobro","Reglas de cobro",[115,1062],"Completar exige lo obligatorio, incluido el cobro cuando la tarea tiene valor y el servicio lo pide.Una persona del equipo puede dejar deuda solo si el cliente tiene límite de crédito y el saldo entra en ese límite; si no, tiene que cobrar. El Dueño y el Encargado pueden dejarla siempre (queda auditado).No vino \u002F No estaba no genera deuda: lo debido queda en lo que ya se cobró (la seña no se devuelve ni se convierte en crédito).",{"id":1071,"title":1072,"titles":1073,"content":1074,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#herramientas-de-la-etapa","Herramientas de la etapa",[115,1062],"HerramientaQué haceTomarLa tarea queda asignada a quien la toma. Si otra persona llegó antes, avisa y no la asigna dos vecesAsignar \u002F ReasignarEl Dueño o el Encargado elige a quién se la daSoltarLa tarea vuelve a Sin asignar para que otra persona la tome (pide confirmación)Volver más tardeEn tareas sin horario, mueve el vencimiento a la fecha y hora que elijasCompartir seguimientoUn enlace para que el cliente vea el estado de su pedido. Lo comparte quien está asignado a la tarea Las herramientas nunca dan permisos extra: aparecen solo si tu rol puede usarlas. Reprogramar una tarea con horario sigue en Más acciones.",{"id":1076,"title":1077,"titles":1078,"content":1079,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#tareas-sin-asignar-y-colas","Tareas sin asignar y colas",[115,1062],"Hay trabajos que no tienen horario, como las entregas. Entran como Sin asignar, quien los puede hacer los toma y después sigue la secuencia. Una persona del equipo ve las tareas asignadas a ella y las que su equipo puede tomar, sin el teléfono ni el email del cliente hasta que la toma. Un repartidor ve primero solo la zona aproximada. Ejemplo del rubro de entregas: Llega un pedido: queda Sin asignar.Un repartidor toca Tomar: la tarea es suya. (O el encargado toca Asignar.)Si no puede, toca Soltar y vuelve a la cola.Toca En camino y, si quiere, Compartir seguimiento con el cliente.Cierra con Completar (con el cobro), o con No estaba o No quiere (más el motivo).",{"id":1081,"title":1082,"titles":1083,"content":1084,"level":301},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#cada-servicio-con-sus-etapas","Cada servicio con sus etapas",[115,1062],"Las etapas vienen de la plantilla de tu rubro y cada servicio tiene las suyas: qué salidas ofrece cada etapa, qué pide para entrar y qué herramientas tiene. Hoy se ajustan por la API o el servidor MCP: ver API y MCP.",{"id":1086,"title":1087,"titles":1088,"content":1089,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#escribirle-al-cliente-desde-la-tarea","Escribirle al cliente desde la tarea",[115],"Cada tarjeta y cada detalle de tarea trae un botón Mensaje para escribirle al cliente sin salir de lo que estás haciendo. Tocá Mensaje en la tarjeta o en el detalle de la tarea.Escribí tu texto o partí de una respuesta rápida y editala antes de enviar.Enviá. Fiuit elige el canal por vos: la conversación que ya tenés con ese cliente, o WhatsApp o email si todavía no hay ninguna. Todo queda en el Inbox, como cualquier conversación, y a mano tenés Llamar y Abrir conversación.",{"id":1091,"title":1092,"titles":1093,"content":1094,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#evidencia-de-trabajo","Evidencia de trabajo",[115],"Una acción puede pedir la ubicación del momento (por ejemplo al marcar \"Llegué\") y la tarea admite adjuntos (foto, documento, audio, nota). Son privados: solo los ve quien tiene acceso a esa tarea, los enlaces de descarga vencen a los 60 segundos y se borran pasado un plazo (30 días por defecto). El Dueño o el Encargado pueden borrar una ubicación. Cuando una etapa pide una foto de evidencia, se saca con la cámara o se elige de la galería con el mismo editor de fotos del resto del panel: no hace falta recortarla (queda entera, con el lado mayor de hasta 1600 px), se achica antes de subir y se guarda sin la ubicación del teléfono. Si se corta la conexión, Reintentar la vuelve a mandar sin duplicarla. La firma se sigue dibujando con el dedo o adjuntando como PNG.",{"id":1096,"title":1097,"titles":1098,"content":1099,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#qué-ve-cada-rol","Qué ve cada rol",[115],"RolHoyTrabajoClientesDueño y EncargadoTodo el negocioTodoSíEquipoLo suyo y lo que puede tomarLo suyo y lo que puede tomarNoLecturaSolo verSolo verNo Más detalles en Roles y permisos.",{"id":1101,"title":1102,"titles":1103,"content":1104,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#tareas-atrasadas","Tareas atrasadas",[115],"Una tarea está atrasada cuando tiene horario, pasó el fin de su ventana más una tolerancia y sigue sin cerrarse: por ejemplo, quedó en Agendado o En camino cuando ya debía haber terminado. La tolerancia es de 15 minutos por defecto y la cambiás (de 0 a 240 minutos) en Mi negocio → Datos. Las tareas sin horario, las de cola y las que esperan agendarse nunca se atrasan: Fiuit no inventa una hora.Una tarea cerrada (completada, cancelada, no se presentó o fallida) no está atrasada, aunque haya cerrado tarde.La marca se limpia sola: al avanzar de etapa o reprogramar, la tarea deja de estar atrasada. Si la reprogramás y vuelve a pasarse, es un atraso nuevo. Dónde lo ves. La insignia Atrasada en la tarjeta, en el detalle y en el calendario; el filtro Atrasadas en Trabajo → Ver; y como primer motivo en Necesita tu atención de Hoy (cada tarea cuenta una sola vez, aunque tenga varios motivos). A quién avisa. Al responsable de la tarea y a Dueño y Encargado, una vez por tarea y ventana. Llega a la campana, como push y por Telegram si vinculaste el tuyo; elegís los canales en Mi cuenta → Avisos («Tarea atrasada»). Automatizarlo. En Atención → Mensajes automáticos, el disparador una tarea se atrasa corre en ese mismo momento; sirve, por ejemplo, para escribirle al cliente «Vamos un poco demorados…». Ver Reglas.",{"id":1106,"title":1107,"titles":1108,"content":1109,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#automatizar-el-trabajo","Automatizar el trabajo",[115],"Al entrar en una etapa, la tarea puede avisar al cliente y al equipo (por email y Telegram) según lo que defina la etapa: ver Automatizaciones. Para esperas o condiciones, ver Reglas. El bot de clientes reserva servicios con horario; las tareas de cola las crea el equipo desde el panel o la API. Creación de entregas en cola por chat: próximamente.",{"id":1111,"title":1112,"titles":1113,"content":1114,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#hoy-según-tu-rol","Hoy según tu rol",[115],"Según lo que hacés, Hoy se acomoda solo. Si llevás una agenda o un recorrido, arriba ves tu tarea actual: compacta por defecto, con Ver detalle para abrir contacto, qué lleva, notas y cobro. Si la dejás abierta, la siguiente también aparece abierta hasta que la plegués. Dueño y Encargado ven además ¿Cómo vamos?: ocupación de hoy y de la semana, ventas del mes contra el mes pasado a la misma altura, por cobrar, completadas de la semana y clientes nuevos del mes; las de dinero solo con permiso de Financiero. «A la misma altura» compara días completos (el día de hoy entra entero).",{"id":1116,"title":1117,"titles":1118,"content":1119,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#reprogramar-una-tarea-con-plan","Reprogramar una tarea con plan",[115],"Al reprogramar una tarea cubierta por un paquete o club, conserva el valor acordado antes del plan. Si después quitás el plan, se cobra ese valor; también si el nuevo horario queda sin cobertura. La cobertura sigue dependiendo de la vigencia, el saldo y el cupo. Si ya habías tocado Quitar plan, la tarea nueva sigue sin plan: cambiar el horario no deshace esa decisión, aunque la reprogrames varias veces. Revisá el valor en Trabajo, sección Cobro de la tarea.",{"id":1121,"title":1122,"titles":1123,"content":1124,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#vista-rápida-en-mapa-y-calendario","Vista rápida en Mapa y Calendario",[115],"En Trabajo → Mapa, pasá el mouse o enfocá un marcador; en el celular, tocá el marcador. En Calendario, tocá una tarea para ver su resumen sin perder la vista. Usá Iniciar, En camino u otra salida disponible que no pida datos. Las otras salidas simples tienen su propio botón.Más acciones reúne reprogramar, cancelar con confirmación y compartir seguimiento, cuando tenés permiso y la tarea lo permite.Para formularios, evidencia, cobro, editar, reabrir, agendar o cambiar el pedido, elegí Abrir tarea: el detalle conserva todas las acciones. Si una salida necesita datos nuevos al ejecutarla, también se abre la tarea.La tarjeta no muestra importes; cliente y dirección respetan tus permisos. Si no hay acciones, esa sección desaparece. En el celular se abre como hoja inferior; Escape o tocar afuera la cierran y devuelven el foco al marcador o evento.",{"id":1126,"title":1127,"titles":1128,"content":1129,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#cómo-acerco-la-línea-de-tiempo-y-abro-una-tarea","¿Cómo acerco la línea de tiempo y abro una tarea?",[115],"En Trabajo → Línea de tiempo, usá −\u002F+ o el deslizador para pasar de semanas a horas. Día y Semana son atajos; Ahora vuelve a hoy con un zoom cómodo. Ctrl\u002F⌘ + rueda, pellizco y teclas +\u002F− conservan el instante bajo el puntero. El zoom se recuerda y se guarda con la vista. Cada barra muestra más información según su ancho: solo color, hora, hora y tarea, o también cliente\u002Fresponsable y estado. Tocala para abrir la vista rápida; si hay varias barras pequeñas juntas, elegí una en la lista. Arrastrar mueve de a 15 minutos de cerca, una hora a distancia intermedia o un día de lejos, conservando el horario original. En el celular mové con los botones después de cerrar la vista rápida. La lista de tareas juntas aparece junto a la zona tocada, o como hoja inferior en el celular. Al cambiar la duración, el paso es de 30 minutos de cerca y una hora al alejar. Las flechas de fecha avanzan una semana de cerca y cinco semanas de lejos. Al reprogramar, la selección del horario anterior se cierra.",{"id":1131,"title":1132,"titles":1133,"content":1134,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#lo-que-sigue-ocupando-su-lugar","Lo que sigue ocupando su lugar",[115],"En Trabajo → Calendario y Trabajo → Línea de tiempo, una tarea iniciada que no se completó en su día aparece rayada como Sigue ocupando en los días siguientes. Ocupa todo el horario de atención de cada día hasta que la completás, como mucho 7 días después de su fin, y el bloque dice hasta qué día. En un lugar con varios lugares a la vez dice cuántos ocupa, por ejemplo «1 de 3 lugares». Vale para el lugar, las canchas y los servicios de día completo, no para un turno con una persona. El bloque no se arrastra: tocalo para ver la tarea y completarla. Pasados los 7 días el lugar se libera y la tarea sigue en Atrasadas hasta que la cierres.",{"id":1136,"title":1137,"titles":1138,"content":1139,"level":263},"\u002Fdocs\u002Fwork\u002Ftasks-and-actions#turnos-fijos-reservas-que-se-repiten","Turnos fijos: reservas que se repiten",[115],"Para un cliente habitual («todos los martes a las 20:00») usá Nueva tarea → Repetir; lo ven y lo crean el dueño y el encargado. Elegí cliente, servicio y el primer horario, marcá Repetir y definí los días, cada cuántas semanas (1 a 4) y cuándo termina: en una fecha (hasta un año) o después de cierta cantidad de veces (hasta 52). Hace falta un cliente que ya exista y un servicio con horario, sin formulario propio ni duración distinta de la del servicio. Antes de crear, la vista previa muestra las próximas 8 semanas con cada fecha; las que chocan con tu agenda (cerrado, sin lugar, feriado) aparecen con su motivo y las salteás una por una. Con alguna sin resolver no se puede crear. El resto de las fechas se suma solo con el tiempo, y las que chocan más adelante no se crean y quedan marcadas en la serie. Cada fecha es una tarea normal, con su aviso, sus etapas, su cobro del día y su falta, y muestra la marca Turno fijo en Hoy, Trabajo y el calendario. Abrí la tarea para ver la regla y tocá Editar turno fijo o Cancelar turno fijo: elegís solo esta (se reprograma o cancela como cualquier tarea), esta y las siguientes (parte la serie en dos) o toda la serie. Lo que cambia o se cancela son las fechas que vienen y todavía no empezaron ni se cobraron; lo pasado, cobrado o con falta no se toca, y el cliente no recibe aviso por esas fechas: avisale vos una vez. Una falta no cancela la serie.",{"id":120,"title":119,"titles":1141,"content":1142,"level":257},[],"La vista Mapa de Trabajo, las direcciones del cliente (con etiqueta y una predeterminada), el autocompletar, la ubicación compartida y la privacidad. Si tu negocio atiende en la dirección del cliente (entregas, visitas, servicio técnico), Fiuit guarda dónde es cada tarea y te la muestra en un mapa.",{"id":1144,"title":1145,"titles":1146,"content":1147,"level":263},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#la-vista-mapa","La vista Mapa",[119],"En Trabajo, la forma Mapa aparece cuando hay al menos una tarea con ubicación. Si no la necesitás, no se ve. Cada tarea es un marcador, con color, símbolo y nombre según su estado: pendiente, confirmada, en curso, completada o con problema. El color no es lo único que las distingue.Pasá el mouse o enfocá un marcador para ver su resumen; en el celular, tocá el marcador. Abrir tarea lleva al detalle completo.La lista lateral muestra las mismas tareas (útil con teclado o lector de pantalla). Las tareas sin ubicación se listan aparte.Se ajusta solo a los resultados y muestra hasta 500 tareas; si hay más, afiná los filtros. Los filtros y el conjunto (Sin asignar, Hoy, Próximas...) valen igual que en la lista.La leyenda cuenta las tareas por estado. El mapa usa Google Maps. Si Google no está disponible, se usa un mapa de respaldo y la vista sigue funcionando.",{"id":1149,"title":1150,"titles":1151,"content":1152,"level":301},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#modo-claro-y-oscuro","Modo claro y oscuro",[119,1145],"Un selector flotante tiene tres opciones: Automático, Claro y Oscuro. Automático sigue el tema de tu panel. Se recuerda por navegador.",{"id":1154,"title":1155,"titles":1156,"content":1157,"level":263},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#dirección-con-autocompletar","Dirección con autocompletar",[119],"Al cargar la dirección de un cliente, o el destino de una tarea (Nueva tarea o la edición), aparece un buscador: Empezá a escribir calle y número (desde 3 caracteres).Elegí una sugerencia: se guardan la dirección completa (calle, número, barrio, ciudad, código postal, país) y el punto en el mapa.Se muestra un mapa chico con un pin: arrastralo o tocá el mapa para ajustar la ubicación exacta. Si preferís, cargá la dirección a mano y tocá Ubicar en el mapa: el sistema la busca y deja el pin para que lo muevas. Si el autocompletado no está disponible, avisa y lo que escribiste pasa a la carga manual: no perdés nada. Un servicio \"tiene destino\" cuando su formulario pide la dirección de entrega. Para ese servicio, el destino se carga con este mismo buscador.",{"id":1159,"title":1160,"titles":1161,"content":1162,"level":263},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#las-direcciones-del-cliente","Las direcciones del cliente",[119],"Un cliente puede tener varias direcciones, cada una con su etiqueta (casa, oficina, depósito…) y una predeterminada. Se administran desde la sección «Datos» de la ficha del cliente. Al crear o editar una tarea con destino en la dirección del cliente, el selector ofrece las direcciones guardadas con una opción Otra para cargar una nueva. Guardarla en el perfil es una decisión aparte: podés usarla solo para esa tarea.Cada tarea conserva su destino. Si después cambia la dirección del cliente o la de tu local, las tareas ya creadas siguen apuntando a donde estaban: la dirección queda registrada con la tarea.Cuando el servicio se hace en tu local, la tarea guarda una copia de la dirección del negocio de ese momento: el detalle de la tarea, la Mini App y los recordatorios muestran esa dirección, con acceso al mapa, aunque la cambies después.Cuando el servicio es a distancia, la tarea no lleva dirección: ni la del negocio ni la del cliente, y no aparece en el mapa. Su ficha muestra A distancia y, si cargaste el enlace de la reunión en el servicio, un botón para abrirla.El bot ofrece solo las direcciones autorizadas y confirma cuál usar antes de reservar.Cada dirección tiene su zona. Si usás zonas, la ficha la muestra al lado («Casa · Zona Norte»): se calcula sola con el área de tus zonas, o la elegís a mano en Editar → Zona (Dueño y Encargado). Una tarea nueva con esa dirección usa esa zona sin volver a calcularla. Cuando creás o cambiás una zona, las direcciones con zona automática se recalculan; las elegidas a mano no cambian.",{"id":1164,"title":1165,"titles":1166,"content":1167,"level":263},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#ubicación-compartida-por-el-cliente","Ubicación compartida por el cliente",[119],"Un cliente puede mandar su ubicación por WhatsApp o Telegram (o desde el chat web, con consentimiento explícito). En el Inbox el mensaje se ve con un mapa chico, el nombre o dirección si el canal los trajo y un enlace Abrir en el mapa.Si el servicio pide destino, el bot puede guardar esa ubicación como destino de la tarea o como dirección del cliente. Antes te pregunta con SÍ\u002FNO en la conversación.En el chat web, el widget ofrece \"Usar mi ubicación\" solo cuando el bot la pidió, y el visitante tiene que aceptar de forma explícita.",{"id":1169,"title":1170,"titles":1171,"content":1172,"level":263},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#privacidad","Privacidad",[119],"La dirección y la ubicación son datos personales: no van a registros ni a la URL del panel.Un repartidor ve de una tarea sin tomar solo la zona aproximada. La dirección exacta aparece cuando la toma. Ver Trabajo y acciones.Google recibe lo que su mapa necesita para dibujarse. En la vista Mapa no recibe direcciones ni coordenadas de tus tareas. El autocompletado y \"Ubicar en el mapa\" sí le envían el texto de la dirección que buscás. Si tus clientes tienen requisitos especiales, mencionalo en tu aviso de privacidad.",{"id":1174,"title":1175,"titles":1176,"content":1177,"level":263},"\u002Fdocs\u002Fwork\u002Fmap-and-addresses#para-quien-administra-la-cuenta","Para quien administra la cuenta",[119],"El mapa de Google necesita una clave de navegador y tres APIs de Google Maps Platform habilitadas (Maps JavaScript, Places y Geocoding). Es una configuración de la plataforma, no del negocio: si el mapa o el autocompletado no aparecen, consultá con soporte.",{"id":124,"title":123,"titles":1179,"content":1180,"level":257},[],"Qué hacer automáticamente cuando pasa algo en tu negocio, con esperas, condiciones y avisos. Cómo cargar ejemplos, activarlas, pausarlas y ver su historial. Una regla es lo que el sistema hace solo cuando pasa algo: cuando ocurre un evento, esperar un tiempo, mirar una condición y hacer algo (avisar al equipo, mandar un mensaje, ejecutar una acción). Es el paso siguiente a las recordatorios simples. Las reglas están en Atención → Mensajes automáticos.",{"id":1182,"title":1183,"titles":1184,"content":1185,"level":263},"\u002Fdocs\u002Fwork\u002Fflows#las-piezas","Las piezas",[123],"Disparador: cuándo empieza. Algunos de los eventos disponibles: se crea, se asigna, se modifica, se completa o se cancela una tarea; cambia su estado; una tarea se atrasa (pasó su horario más la tolerancia y sigue sin cerrarse);se ejecuta una acción (por ejemplo, alguien marca \"No estaba\");empieza, se resuelve o llega un mensaje a una conversación;se crea un cliente o queda inactivo;se agrega un adjunto o se registra una ubicación. Pasos: qué hace. PasoQué haceEsperarUna duración (por ejemplo 2 horas), hasta una fecha, hasta una hora del día, un tiempo antes o después del inicio o fin de la tarea, o hasta que ocurra un evento con un máximo de espera. Hasta 90 díasCondición\"Si se cumple esta condición\": sigue por la rama Si se cumple o Si no se cumple. Ver CondicionesAvisar al equipoUn aviso interno sobre una tarea, por Telegram, WhatsApp o email según cómo reciba avisos cada personaEnviar un mensaje al clienteUn mensaje en su conversaciónEjecutar una acciónUsa una acción de la tarea (por ejemplo Soltar entrega), con las mismas reglas que el panelDejar un comentarioUna nota en la tareaCrear, actualizar o asignar una tareaOperaciones sobre tareasCalcular datosPrepara valores para usar en pasos siguientes Una regla tiene hasta 32 pasos, sin ciclos. Las reglas no saltan ningún permiso: cada paso lo vuelve a validar el sistema, con el rol del Dueño o Encargado que creó la regla. Una espera se cancela sola si la tarea se cancela.",{"id":1187,"title":1188,"titles":1189,"content":1190,"level":263},"\u002Fdocs\u002Fwork\u002Fflows#empezar-con-ejemplos","Empezar con ejemplos",[123],"Tu plantilla de rubro trae reglas de ejemplo. En Reglas tocá Cargar ejemplos (solo el Dueño). Quedan inactivas hasta que las actives, y volver a cargar no las duplica. RubroEjemploEntregasEntrega sin tomar por 2 h: cuando se crea una entrega, esperar 2 horas y, si sigue sin asignar, avisar al equipoEntregasEntrega aceptada que no sale en 30 min: si alguien acepta y no sale, la entrega vuelve a Sin asignarBarberíaTercera ausencia del cliente: al marcar una ausencia, si es la tercera, avisar para pedir seña la próxima vez",{"id":1192,"title":1193,"titles":1194,"content":1195,"level":263},"\u002Fdocs\u002Fwork\u002Fflows#ver-activar-y-pausar","Ver, activar y pausar",[123],"Cada regla muestra su estado (Activa, Pausada o Borrador) y su última ejecución. Al abrirla ves Qué hace en lenguaje simple: el disparador y los pasos, con las ramas. Tocá Activar y confirmá. Desde ese momento actúa solo cada vez que se cumple el disparador.Pausar deja de empezar ejecuciones nuevas; las que ya están en curso terminan su camino.En Historial de ejecuciones ves cada corrida con su estado (Completada, En curso, Esperando, Falló, Cancelada...), hasta cuándo espera y qué rama tomó. Una regla en Borrador permite editar la condición: Editar condición, Probar esta condición y Guardar como versión nueva. Para cambiar una regla activa o una más compleja, pedíselo a Wagy, el asistente (Primeros pasos), o usá la API. Antes de activar una regla con condición, probala con Probar esta condición sobre una tarea real. No cambia nada: solo te dice si da verdadero o falso.",{"id":1197,"title":1198,"titles":1199,"content":1200,"level":263},"\u002Fdocs\u002Fwork\u002Fflows#reglas-y-recordatorios","Reglas y recordatorios",[123],"Los recordatorios y confirmaciones simples (la otra pestaña de Atención, llamada Mensajes automáticos) siguen siendo la forma más simple de mandar un recordatorio o una confirmación. Una regla que viene de una regla clásica se administra allí. Las reglas de esta página son para lo que necesita esperar, decidir o actuar sobre las tareas.",{"id":1202,"title":1203,"titles":1204,"content":1205,"level":263},"\u002Fdocs\u002Fwork\u002Fflows#para-desarrolladores","Para desarrolladores",[123],"Las reglas se gestionan por API (\u002Fv1\u002Fautomation-flows, solo Dueño o Encargado con sesión del panel). Ver Endpoints. Los eventos que los disparan son los mismos que reciben tus webhooks.",{"id":128,"title":127,"titles":1207,"content":1208,"level":257},[],"Cómo escribir una condición en una regla, qué datos puede mirar, ejemplos listos por rubro y cómo probarla antes de activarla. Una condición decide por qué rama sigue una regla. Se escribe como una frase corta que da verdadero o falso, por ejemplo \"el servicio cuesta más de 100 y el cliente es VIP\". Una condición solo mira datos: no cambia nada.",{"id":1210,"title":1211,"titles":1212,"content":1213,"level":263},"\u002Fdocs\u002Fwork\u002Fconditions#cómo-se-escribe","Cómo se escribe",[127],"QuéEjemploComparar== (igual), !=, \u003C, \u003C=, >, >=Combinar&& (y), || (o), ! (no)Texto\"entrega\" entre comillasEstá en una lista\"vip\" in customer.tagsContieneservice.name.contains(\"Corte\")Empieza portrigger.subject.startsWith(\"Partner\")Si \u002F entoncesworkItem.priority == \"urgent\" ? now.hour \u003C 22 : now.hour \u003C 18Un campocustomer.no_show_count, con punto Eso es todo el lenguaje: no hay bucles ni funciones propias. Las condiciones se validan al guardar la regla y de nuevo al activarla.",{"id":1215,"title":1216,"titles":1217,"content":1218,"level":263},"\u002Fdocs\u002Fwork\u002Fconditions#qué-datos-puede-mirar","Qué datos puede mirar",[127],"ObjetoQué traetriggerEl evento que empezó la regla. Con una acción ejecutada: action_key (la acción), from_stage, to_stageworkItemLa tarea: status, stage, priority, tags, party_size, start_at, due_at, age_minutes (minutos desde que se creó), assigned (si tiene responsable)customername, locale (idioma), tags, no_show_count (ausencias reales)servicename, price_cents (el precio en centavos: 100,00 es 10000), deposit_cents, duration_minresourcename, kindnowLa hora de tu negocio: hour, minute, weekday (0 = lunes ... 6 = domingo)variablesValores que calculó un paso anterior Por privacidad, una condición no ve teléfonos, emails, documentos, direcciones ni notas del cliente. Si el evento no trae una tarea, workItem, customer y service llegan vacíos y la condición falla con un mensaje claro, no responde \"falso\" en silencio.",{"id":1220,"title":1221,"titles":1222,"content":1223,"level":263},"\u002Fdocs\u002Fwork\u002Fconditions#ejemplos","Ejemplos",[127],"VIP con un servicio caro: avisar al encargado service.price_cents > 10000 && \"vip\" in customer.tags \"No estaba\" antes de las 18 h (disparador: se ejecuta una acción) trigger.action_key == \"nao_estava\" && now.hour \u003C 18 Tercera ausencia: pedir seña la próxima vez trigger.action_key == \"ausencia\" && customer.no_show_count >= 3 Tarea sin tomar hace más de 2 horas (después de un paso Esperar de 2 h) !workItem.assigned && workItem.age_minutes > 120 Fuera del horario comercial (sábado, domingo o fuera de 9 a 18) now.weekday >= 5 || now.hour \u003C 9 || now.hour >= 18 Tarea urgente workItem.priority == \"urgent\" || \"urgente\" in workItem.tags Cliente que habla portugués customer.locale == \"pt\" Seña pendiente hace más de una hora workItem.stage == \"aguardando_sinal\" && workItem.age_minutes >= 60 Servicio largo de corte service.name.contains(\"Corte\") && service.duration_min >= 45 Las claves de acción y de etapa (ausencia, nao_estava, aguardando_sinal) son las de tu plantilla de rubro. Si cambiaste los nombres, usá los tuyos.",{"id":1225,"title":1226,"titles":1227,"content":1228,"level":263},"\u002Fdocs\u002Fwork\u002Fconditions#probar-una-condición","Probar una condición",[127],"En el detalle de una regla, tocá Probar esta condición (o Probar condición): Escribí la condición.Elegí una tarea real de tu proyecto con el buscador.Si mira trigger.action_key, escribí la clave de la acción en Simular la acción.Tocá Probar. Te muestra Verdadero o Falso y, debajo, Lo que vio la condición: exactamente los datos con los que decidió. No se ejecuta nada.",{"id":1230,"title":1231,"titles":1232,"content":1233,"level":263},"\u002Fdocs\u002Fwork\u002Fconditions#errores-comunes","Errores comunes",[127],"Al guardar, el mensaje dice qué paso falló y por qué: ProblemaQué significaEl campo no existeUsaste un dato que no está disponible (por ejemplo customer.email)Tipos que no combinanComparaste texto con un número (customer.name > 5)No da verdadero o falsoLa condición tiene que ser una pregunta de sí o noFunción no permitidaSolo se admiten contains y startsWithObjeto desconocidoSolo se pueden usar los objetos de la tabla de arribaDemasiado larga o costosaDividila en dos condiciones con otro paso en medio Una condición admite hasta 1024 caracteres y se evalúa en una fracción de segundo.",{"id":132,"title":131,"titles":1235,"content":1236,"level":257},[],"Agrupá a tu equipo por zona, con su área, sus días y horas de atención y un tope por franja, y dejá que cada tarea tome su zona sola. Una zona es un grupo de personas con un área y unos días y horas de atención. Sirve para entregas, visitas técnicas, rutas o cualquier trabajo que se hace en la dirección del cliente: por ejemplo, la Zona Norte atiende martes y jueves y la Zona Sur, miércoles y viernes.",{"id":1238,"title":1239,"titles":1240,"content":1241,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#crear-una-zona","Crear una zona",[131],"En Mi negocio → Equipo y recursos, tocá Agregar y elegí Zona. Cada zona tiene: Nombre.Área: texto y\u002Fo un área dibujada en el mapa, como se explica abajo.Personas: las que atienden la zona. Una persona puede estar en varias zonas.Días y horas: por ejemplo martes y jueves de 9 a 18. Si lo dejás vacío, la zona no restringe los días.Tope por franja (opcional): cuántas tareas como máximo entran en cada franja horaria de la zona. También podés pedírselo a Wagy: \"Zona Norte, martes y jueves, Camila y Diego\". Wagy arma el plan, vos revisás el cambio y lo confirmás.",{"id":1243,"title":1244,"titles":1245,"content":1246,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#definir-el-área","Definir el área",[131],"Podés combinar dos formas de definir el área de una zona: Por texto: agregá barrios, ciudades, provincias o estados, países o códigos postales como etiquetas. Un código postal coincide por prefijo: 20 cubre todos los que empiezan con 20.En el mapa: dibujá un polígono o elegí un punto y un radio alrededor, por ejemplo 3 km. Cada forma es opcional, pero necesitás al menos una. Una zona sin texto ni área dibujada nunca puede recibir tareas, por eso no se puede guardar.",{"id":1248,"title":1249,"titles":1250,"content":1251,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#cómo-se-asigna-la-zona","Cómo se asigna la zona",[131],"Cada tarea con dirección busca su zona sola, en este orden: Por el mapa: si la dirección tiene coordenadas y hay zonas con área dibujada, busca cuál contiene ese punto. Si varias lo contienen, gana la de menor área.Por texto: si no hay coincidencia en el mapa o faltan coordenadas o áreas dibujadas, busca primero por código postal, después por barrio y después por ciudad, sin tener en cuenta tildes ni mayúsculas.Sin coincidencias: la tarea queda sin zona y aparece en Hoy → Necesita tu atención. Al corregir la dirección, vuelve a buscar su zona automáticamente. Si el código postal viene escrito dentro de la dirección (por ejemplo «25 de Mayo 1530, W3230AIZ Corrientes» o «Rua A, 1 - 20520-000»), también cuenta; la altura de la calle nunca se toma como código postal. En Argentina, una zona con W3230 o con 3230 cubre W3230AIZ. Un número suelto de 4 o 5 cifras solo cuenta si va marcado, como «CP 3230». Al crear una zona, cambiar su área o desactivarla, las tareas abiertas (también las atrasadas) vuelven a buscar su zona y el aviso al guardar dice cuántas quedaron con zona. No se mueven horarios: si una tarea queda en una zona que no atiende ese día, conserva su horario y la reprogramás vos si hace falta. Una tarea que ya estaba en otra zona solo cambia si la zona que guardaste le queda mejor. En Trabajo podés filtrar por zona o ver solo lo que está sin zona, y en el mapa cada tarea muestra su zona.",{"id":1253,"title":1254,"titles":1255,"content":1256,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#para-negocios-de-entregas","Para negocios de entregas",[131],"Dibujá el área y conservá algunos códigos postales o barrios como respaldo. Si una dirección mal escrita, como «eso 5», no se pudo ubicar en el mapa pero tiene un código postal o barrio que coincide, la tarea igual toma su zona por texto.",{"id":1258,"title":1221,"titles":1259,"content":1260,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#ejemplos",[131],"Un punto dentro de dos áreas: la dirección cae en Zona Norte y Zona Centro. Como el área de Zona Centro es más pequeña, la tarea toma Zona Centro.Sin coordenadas, con código postal: la dirección tiene el código 20040-020 y Zona Norte tiene la etiqueta 20. La tarea toma Zona Norte por el prefijo.Sin coordenadas ni texto que coincida: la dirección dice «eso 5», sin código postal, barrio ni ciudad. La tarea queda sin zona, en Hoy → Necesita tu atención.",{"id":1262,"title":1263,"titles":1264,"content":1265,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#cobertura","Cobertura",[131],"Tu cobertura es la suma de todas tus zonas activas: lo que cae dentro de alguna zona, lo atendés; lo que cae fuera de todas queda fuera de cobertura. Si todavía no creaste zonas, no hay límite (solo el país del negocio), como hasta ahora. Además de barrios, ciudades y códigos postales, el área de una zona puede ser una provincia o estado o un país entero.",{"id":1267,"title":1268,"titles":1269,"content":1270,"level":301},"\u002Fdocs\u002Fwork\u002Fzones#qué-pasa-con-un-pedido-fuera-de-cobertura","Qué pasa con un pedido fuera de cobertura",[131,1263],"En Zonas, la tarjeta Cobertura de arriba te deja elegir: Tomar igual y avisarme (la opción por defecto): la tarea se crea con la etiqueta fuera-de-cobertura y aparece en Hoy → Necesita tu atención, para que decidas vos.No tomar: el bot le contesta al cliente «Por ahora no llegamos a esa zona» y no crea nada.",{"id":1272,"title":1273,"titles":1274,"content":1275,"level":301},"\u002Fdocs\u002Fwork\u002Fzones#entregas-que-llegan-a-ciertas-zonas","Entregas que llegan a ciertas zonas",[131,1263],"Cada servicio de entrega tiene Llega a: todas las zonas (por defecto) o estas zonas. Una entrega que no llega a la zona del cliente sigue el mismo ajuste de Cobertura: con Tomar igual y avisarme, el bot la ofrece y toma el pedido, y la tarea lleva la etiqueta fuera-de-cobertura, igual que una dirección fuera de todas tus zonas;con No tomar, cuando ya se conoce la dirección del cliente el bot no la ofrece, y si el cliente la pide igual le contesta «Por ahora esa entrega no llega a tu zona» sin crear nada. Si falta un dato para saber la zona, el bot no rechaza ni oculta nada.",{"id":1277,"title":1278,"titles":1279,"content":1280,"level":301},"\u002Fdocs\u002Fwork\u002Fzones#cómo-el-bot-ubica-la-dirección","Cómo el bot ubica la dirección",[131,1263],"El bot busca la dirección del cliente dentro de tu cobertura, así que no confunde una calle con otra homónima de otra ciudad. Cada barrio o ciudad que escribiste en el área se ubica una sola vez, al guardar la zona. Un solo resultado dentro de la cobertura y con el número de la casa: se acepta.Se encontró la calle pero no el número: el bot le pide el número o que comparta su ubicación; no guarda un punto aproximado.El cliente nombra otra ciudad («…, Santo Tomé»): el bot busca en esa ciudad y, si queda fuera, aplica lo que elegiste para el fuera de cobertura.Varios resultados posibles: el bot ofrece hasta 3 opciones numeradas dentro de tu cobertura, más «ninguna», que deja la dirección tal como la escribió, sin ubicación en el mapa. Ya no pregunta «¿en qué ciudad queda?». Cuando la dirección es precisa, la confirmación incluye un enlace a Google Maps, en cualquier canal.",{"id":1282,"title":1283,"titles":1284,"content":1285,"level":301},"\u002Fdocs\u002Fwork\u002Fzones#para-integraciones-y-asistentes","Para integraciones y asistentes",[131,1263],"API: GET \u002Fv1\u002Fzones\u002Fcoverage (lectura, clave con config:read) y PUT \u002Fv1\u002Fzones\u002Fcoverage con {\"out_of_coverage\": \"take\" | \"reject\"} (Dueño y Encargado, config:write). El tipo del área acepta también state y country, y un servicio tiene reach_zone_ids (vacío = todas las zonas) que se cambia con PATCH \u002Fv1\u002Fservices\u002F{id}.MCP: las herramientas get_coverage y set_coverage. Ver MCP.Wagy puede proponerte zonas con estos tipos y explicarte tu cobertura.",{"id":1287,"title":1288,"titles":1289,"content":1290,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#horarios-y-bot","Horarios y bot",[131],"Cuando una entrega o visita tiene horario, solo se ofrecen los días y horas de la zona, cruzados con la disponibilidad de sus personas y con el tope por franja. El bot le pide al cliente su dirección y le dice, por ejemplo: \"Para tu zona (Zona Norte) atendemos martes o jueves\".",{"id":1292,"title":1293,"titles":1294,"content":1295,"level":263},"\u002Fdocs\u002Fwork\u002Fzones#tareas-sin-tomar","Tareas sin tomar",[131],"Una tarea sin Dueño de una zona se avisa, y se ofrece para Tomar, solo a las personas de esa zona. Quien administra (Dueño y Encargado) las ve todas y puede asignarlas a cualquiera. Antes la \"zona\" era un recurso con capacidad. Esos recursos siguen funcionando; el comando de migración los convierte en zonas sin perder ninguna tarea. En Equipos de trabajo, cada equipo muestra las zonas que atienden sus integrantes y quién cubre cada una. La relación se obtiene de las personas compartidas por el equipo y la zona. Las zonas sin integrantes de un equipo también se gestionan en esta sección.",{"id":136,"title":135,"titles":1297,"content":1298,"level":257},[],"Cómo compartir un enlace privado donde cada cliente ve sus pedidos abiertos con la marca de tu negocio, qué ve y cómo revocarlo. El portal de seguimiento es una página pública, sin cuenta y de solo lectura, con el logo, el nombre y los colores de tu negocio. Tu cliente ve ahí sus pedidos abiertos y cómo van. Lo compartís vos (Dueño o Encargado) con el botón Compartir.",{"id":1300,"title":1301,"titles":1302,"content":1303,"level":263},"\u002Fdocs\u002Fwork\u002Ftracking-portal#el-bot-lo-manda-solo","El bot lo manda solo",[135],"Cuando el bot confirma un pedido, o el cliente pregunta cómo va, el mensaje termina con el enlace del cliente y abre directo ese pedido. Es el mismo enlace de Compartir: si el cliente no tenía uno, el bot lo crea (sin saldo, por 90 días); si ya tenía, lo reusa y lo deja vigente 30 días más, hasta 90 días desde que se creó; después manda uno nuevo y el anterior deja de abrir. Si lo revocaste, el bot no crea otro: el mensaje sale sin enlace hasta que lo vuelvas a compartir. En el chat de tu sitio (WebChat) el bot todavía no manda el enlace. En WhatsApp, «Confirmar», «Reprogramar», «Cancelar» y «Repetir pedido» abren el chat con el mensaje escrito. En Telegram, Instagram o el chat de tu sitio, la página copia el mensaje y el cliente lo pega. Cancelar nunca se bloquea.",{"id":1305,"title":1306,"titles":1307,"content":1308,"level":263},"\u002Fdocs\u002Fwork\u002Ftracking-portal#compartir-el-enlace","Compartir el enlace",[135],"Abrí una tarea y tocá Compartir, o en la ficha del cliente abrí Más › Compartir seguimiento.Si el cliente no tiene enlace, Crear enlace. Hay un enlace por cliente: sirve para todos sus pedidos, también los que se creen después.Copiar enlace o Compartir… (la hoja del celular) y mandáselo por el chat del cliente.Opciones: Mostrar saldo (viene apagado) y Vigencia (7, 30, 90 o 180 días). Cambiarlas no cambia el enlace.Generar enlace nuevo deja inválido el anterior al instante; Revocar enlace lo corta sin crear otro. Las dos piden confirmación y quedan en la auditoría. Solo Dueño y Encargado comparten y revocan; Equipo y Lectura no ven el botón.",{"id":1310,"title":1311,"titles":1312,"content":1313,"level":263},"\u002Fdocs\u002Fwork\u002Ftracking-portal#qué-ve-el-cliente","Qué ve el cliente",[135],"QuéDetalleMarcaLogo (o la inicial), nombre y paleta de tu negocio, en claro u oscuro.PedidosServicio, estado en lenguaje claro (Recibido, Agendado, En curso) y horario o «Horario todavía sin definir».HistorialPedidos terminados o cancelados en los últimos 30 días.Detalle del pedidoCódigo del pedido, productos con cantidad e importe, total, dirección de entrega (solo mientras está abierto) y el día con la franja o la hora exacta. El mapa aparece solo mientras el pedido está en camino.Acciones del pedidoAgregar al calendario (Google Calendar o archivo .ics), Confirmar (solo si le pediste que reconfirme la asistencia y todavía no respondió; va por el mismo chat), Reprogramar (si tiene horario), Cancelar y Repetir pedido (abren tu chat con el mensaje listo). Lo que no aplica no se muestra.Contacto (una vez, arriba)Tu dirección (la de Configuración), Llamar si cargaste tu teléfono y Enviar mensaje (tu primer canal conectado; si no hay, WhatsApp a tu teléfono). Sin ninguno de esos datos, el bloque no aparece.SaldoSolo si activaste Mostrar saldo: lo que falta pagar en total y por pedido, calculado por el servidor con tus cobros. Nunca muestra teléfono ni correo (del cliente o de tu equipo), la dirección de pedidos ya cerrados, notas, comentarios ni actividad del equipo, repartidor, costos ni datos de otros clientes.",{"id":1315,"title":1316,"titles":1317,"content":1318,"level":263},"\u002Fdocs\u002Fwork\u002Ftracking-portal#seguridad-y-privacidad","Seguridad y privacidad",[135],"El enlace es un token largo y aleatorio: no se puede adivinar. Un enlace inexistente, vencido o revocado muestra el mismo mensaje.La página no se indexa, no usa cookies ni scripts de terceros y no escribe nada.Quien tiene el enlace ve lo mismo que el cliente: mandalo solo por su chat y revocalo si se reenvía.Si publicás el saldo, mencionalo en tu aviso de privacidad.",{"id":140,"title":139,"titles":1320,"content":1321,"level":257},[],"Conectá la cuenta de Mercado Pago del negocio, revisá qué medios de pago están disponibles y definí la seña de cada servicio. Los pagos se configuran en Finanzas → Cobros. Solo el Dueño y el Encargado ven esta pestaña; el resto del equipo no.",{"id":1323,"title":1324,"titles":1325,"content":1326,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#conectar-la-cuenta","Conectar la cuenta",[139],"Brasil y Argentina: tocá Conectar Mercado Pago y autorizá a Fiuit en Mercado Pago. Volvés solo a la pestaña con la cuenta conectada.Otros países admitidos (Chile, Uruguay, Colombia, México y Perú): si Fiuit lo habilitó para tu país, pegás el token de la cuenta y Fiuit lo valida. Fiuit nunca muestra el token. Mientras no esté habilitado, la tarjeta avisa que todavía no está disponible y los cobros se registran a mano; una cuenta conectada antes sigue a la vista y se puede desconectar, pero no se vuelve a pegar el token.Paraguay y las monedas sin Mercado Pago no tienen esta opción: los cobros se registran a mano. La pestaña muestra el estado de la conexión, el número de cuenta, el país, la moneda, si es una cuenta de prueba o de producción y cuándo vence la autorización. Si vence o da error, aparece Reautorizar: se reautoriza sin desconectar y sin perder los cobros. Desconectar pide confirmación. Antes de cancelar los cobros abiertos, Fiuit consulta su estado en Mercado Pago, y conserva la credencial cifrada 30 días para conciliar pagos tardíos.",{"id":1328,"title":1329,"titles":1330,"content":1331,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#país-y-moneda","País y moneda",[139],"La cuenta tiene que cobrar en el mismo país y la misma moneda que el proyecto. Si no coinciden (por ejemplo, el proyecto usa reales y la cuenta es de Argentina), la pestaña lo explica y Fiuit no crea links de pago: los cobros siguen siendo manuales hasta que conectes la cuenta correcta o corrijas la moneda en Mi negocio → Datos.",{"id":1333,"title":1334,"titles":1335,"content":1336,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#medios-de-pago","Medios de pago",[139],"Los medios no se prenden a mano: dependen de la cuenta. Cada uno dice si está disponible o qué falta. Link de pago: con una cuenta de producción de Brasil o Argentina conectada. En Brasil el cliente puede pagar con Pix dentro del mismo link.Una cuenta de prueba no cobra a clientes reales.QR en el local y tarjeta en el panel todavía no están disponibles.",{"id":1338,"title":1339,"titles":1340,"content":1341,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#seña","Seña",[139],"La seña se define en cada servicio y se edita desde la sección Seña de la pestaña: monto y, si querés, Devolver la seña si cancela con anticipación (entre 1 y 2160 horas). Cuando un cliente reserva un servicio con seña, el lugar queda guardado unos minutos mientras paga. El link vence un poco antes para que Fiuit pueda confirmar el pago; si no paga a tiempo, el lugar se libera.Por defecto la seña se retiene si el cliente cancela. Con la devolución activada, Fiuit pide la devolución a Mercado Pago cuando el cliente cancela con al menos esas horas de anticipación.Sin cuenta conectada, la seña se marca como pagada a mano en la tarea.",{"id":1343,"title":1344,"titles":1345,"content":1346,"level":301},"\u002Fdocs\u002Fwork\u002Fpayments#cobro-al-reservar-nada-seña-o-el-total","Cobro al reservar: nada, seña o el total",[139,1339],"En la ficha de cada servicio con turno (Servicios), Cobro al reservar elige qué se cobra al confirmar: No cobrar, Seña o Total. Con Total, el cliente paga el valor completo de la tarea (precio, formulario o productos, según cómo cobre el servicio) con el mismo flujo de la seña: el turno queda esperando el pago, se confirma cuando se acredita, el lugar se libera si no paga a tiempo y se devuelve según la ventana de cancelación. Una cancha, por ejemplo, se paga entera al reservar. En Finanzas → Cobros ves qué cobra cada servicio. Sin Mercado Pago conectado, lo cobrás a mano desde la tarea.",{"id":1348,"title":1349,"titles":1350,"content":1351,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#cobrar-con-link","Cobrar con link",[139],"En la sección Cobro de una tarea con saldo aparece Cobrar con link; también en las tareas vinculadas de una conversación, en el Inbox. Enviar por la conversación: Fiuit crea un link de Mercado Pago por lo que falta pagar y se lo manda al cliente por su conversación (WhatsApp, chat web o Telegram), con un mensaje fijo que incluye el monto y el vencimiento.Copiar link: lo copia para que lo compartas por otro medio.El monto lo calcula Fiuit (el saldo de la tarea: precio menos lo ya cobrado, seña incluida). Para cobrar solo una parte, usá Cobrar una parte; para cambiar el total, ajustá el valor a cobrar.Si ya hay un link abierto por el mismo monto, se reutiliza: no se crean dos links para lo mismo. Con un link abierto por otro monto, esperá a que venza o registrá el cobro a mano.El link vence a las 48 horas. En el historial de la tarea ves si está pendiente, pagado o vencido, y podés copiarlo o reenviarlo. Cuando el cliente paga, el cobro aparece solo y el saldo baja.Lo usan el Dueño y el Encargado; el equipo también, en sus tareas, si está encendido El repartidor puede cobrar. Solo se muestra con una cuenta de producción de Brasil o Argentina conectada.",{"id":1353,"title":1354,"titles":1355,"content":1356,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#cobrar-con-qr","Cobrar con QR",[139],"Para cobrar en el momento, en la puerta o en el mostrador, la sección Cobro de una tarea con saldo muestra Cobrar con QR. Se abre un QR de Mercado Pago a pantalla completa con el monto grande. El cliente lo escanea con la app de Mercado Pago o de su banco y, cuando paga, la pantalla muestra ¡Cobrado! y el cobro queda en la tarea.El monto lo calcula Fiuit, igual que en el link: el saldo de la tarea.El QR vence a los 15 minutos. Podés cancelarlo o generar otro; si lo cerrás sin cobrar y lo volvés a abrir, aparece el mismo.Nunca hay dos formas de pago abiertas a la vez: si había un link abierto, pedir el QR lo anula, y con un QR abierto no se crea un link.Además de la cuenta de producción de Brasil o Argentina, Mercado Pago pide la dirección del negocio con su ubicación en el mapa (se carga en Mi negocio → Datos). Sin eso, Finanzas → Cobros muestra el QR como no disponible y explica por qué.Lo usan las mismas personas que el link.",{"id":1358,"title":1359,"titles":1360,"content":1361,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#cobrar-con-point","Cobrar con Point",[139],"Si el negocio tiene una terminal Point Smart de Mercado Pago, puede cobrar desde la tarea sin escribir el monto en la terminal. Vinculá la terminal en Finanzas → Cobros → Terminal Point: aparecen las terminales de tu cuenta de Mercado Pago; elegí una y tocá Usar esta terminal. Mercado Pago la pone en modo integración para recibir los cobros de Fiuit.En la sección Cobro de una tarea con saldo aparece Cobrar con Point. Fiuit manda a la terminal lo que falta pagar y el cliente paga ahí con tarjeta, QR o Pix.La pantalla muestra el estado y dice ¡Cobrado! solo cuando Mercado Pago confirma el pago; ahí el cobro queda en la tarea.El cobro vence a los 15 minutos. Si la tarjeta se rechaza, podés volver a enviarlo; también podés cancelarlo. Si el cliente ya estaba pagando y el pago llega igual, queda a revisar por el equipo.Nunca hay dos formas de pago abiertas a la vez: cobrar con Point anula el link o el QR abiertos de esa tarea, y al revés.Mientras haya un cobro abierto en la terminal, no se puede cambiar ni desvincular. Lo usan las mismas personas que el link; vincular la terminal es del Propietario y el Gerente. Disponible con una cuenta de producción de Brasil o Argentina.",{"id":1363,"title":1364,"titles":1365,"content":1366,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#cobrar-una-parte","Cobrar una parte",[139],"Para dividir un cobro (una cancha que pagan cuatro jugadores, alguien que paga con dos tarjetas), la sección Cobro de una tarea con saldo tiene Cobrar una parte. Escribí el monto de la parte y elegí el medio de siempre: link, QR, Point o a mano. Repetilo las veces que haga falta: cada parte es un cobro propio, con su monto fijo, y un link de parte se copia o se manda por separado.Pueden quedar varias partes abiertas a la vez, pero entre todos los cobros abiertos nunca se pasa del saldo. Si una parte no entra, el panel te dice cuánto queda por cubrir y cuánto ya está en partes abiertas.Cobrar con link, QR o Point sin monto cobran solo lo que queda sin parte. Las partes no se anulan entre sí, ni con el link que manda el bot, ni con un QR o Point por el resto.En el historial de la tarea cada parte lleva la etiqueta Parte, con su monto, medio y estado; cualquier cobro abierto (una parte o el link, QR o Point por el saldo) se puede anular y los demás siguen. Si un link por todo el saldo está abierto, Cobrar una parte lo explica y ofrece anularlo ahí mismo.Cuando entra la última parte, la tarea queda pagada y las etapas que esperan el pago avanzan como siempre. Si el total baja y una parte abierta ya no entra, esa parte se anula y queda el aviso en la tarea. Si alguien paga de más (dos personas pagan la misma parte), el excedente queda a favor del cliente. El cliente que reservó sigue siendo el responsable: lo que no se pague queda como su deuda.Lo usan las mismas personas que el link. Cobrar con tarjeta también cobra solo lo que queda sin parte y no anula las partes.",{"id":1368,"title":1369,"titles":1370,"content":1371,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#últimos-cobros","Últimos cobros",[139],"La lista muestra los últimos cobros de Mercado Pago (seña, monto, estado y fecha), el más nuevo primero. Tocá Abrir para ver la tarea: desde ahí se devuelve o se revisa un cobro. Si no hay cuenta ni cobros, la lista no aparece.",{"id":1373,"title":1374,"titles":1375,"content":1376,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#cobrar-con-tarjeta","Cobrar con tarjeta",[139],"Cuando el cliente está en el local o al teléfono y no puede escanear un QR ni abrir un link, el Dueño y el Encargado pueden tocar Tarjeta en la sección Cobro de una tarea con saldo. Es un cobro asistido: el panel lo recuerda cada vez. Se abre el formulario seguro de Mercado Pago por lo que falta pagar. Cargá los datos tal como te los dicta el cliente y no los anotes: los campos son de Mercado Pago y Fiuit no recibe ni guarda los datos de la tarjeta.Mercado Pago aprueba o rechaza en el momento. Si rechaza, ves el motivo y podés probar con otra tarjeta. Si no responde, el cobro queda verificando y no se puede cobrar de nuevo hasta saber el resultado.El monto lo calcula Fiuit (el saldo de la tarea). Si el saldo cambió mientras se cargaba la tarjeta, no se cobra: volvé a abrirlo.Cobrar con tarjeta anula el link o el QR abierto de esa tarea. Un mismo envío nunca cobra dos veces.Con una cuenta de prueba de Mercado Pago sirve para probar con tarjetas de prueba; esos cobros no cuentan en el saldo.No lo usa el equipo, y no hay API key, MCP ni Wagy para cobrar con tarjeta: necesita el panel abierto en un navegador.",{"id":1378,"title":1379,"titles":1380,"content":1381,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#con-wagy-la-api-y-el-mcp","Con Wagy, la API y el MCP",[139],"Wagy puede contarte el estado de la cuenta, qué medios están disponibles y por qué, y los últimos cobros; no conecta cuentas ni pide tokens. Por API y MCP, una clave con el permiso payments:read lee lo mismo (GET \u002Fv1\u002Fpayments\u002Faccounts\u002Fmercadopago y GET \u002Fv1\u002Fpayments\u002Faccounts\u002Fmercadopago\u002Fcharges).",{"id":1383,"title":1384,"titles":1385,"content":1386,"level":263},"\u002Fdocs\u002Fwork\u002Fpayments#datos-para-pagar-sin-mercado-pago","Datos para pagar sin Mercado Pago",[139],"En Finanzas → Cobros → Cobro por chat, el Dueño o el Encargado cargan sus datos para pagar (alias, CBU\u002FCVU, Pix o instrucciones), un texto por idioma. Si el cobro por chat está en «Preguntar la forma de pago» y Mercado Pago no está listo, el bot le muestra al cliente esos datos tal cual con el total del pedido y le ofrece «Ya pagué» o «Al recibir». «Ya pagué» solo avisa al equipo («Cliente avisó que pagó», una vez por pedido): revisás que haya entrado el dinero y registrás el cobro en la tarea. Nunca se registra un cobro solo. Wagy los cambia con un plan que confirmás; por MCP, configure_pay_info con el permiso settings:write.",{"id":144,"title":143,"titles":1388,"content":1389,"level":257},[],"El recorrido de cada tarea: etapas, datos, botones y avisos. Cómo armar un flujo, compartirlo entre servicios y que el bot pida lo que falta. Un flujo es el recorrido de una tarea: sus etapas (por ejemplo Apartado → En la silla → Listo), los datos que se completan en cada una, los botones que la mueven y los avisos al cliente o al equipo. Lo que vendés vive en el catálogo (servicios, productos y planes); cada servicio elige un flujo, y varios servicios pueden compartir el mismo. Cada tarea copia el flujo de su servicio al nacer y avanza por sus etapas. No confundir con las Reglas, que hacen cosas solas cuando pasa algo. Cada servicio, producto o plan muestra Etapas: Flujo de … · Cambiar: ahí ves qué flujo siguen sus tareas, lo cambiás y lo editás. La lista completa está en Mi negocio → Etapas. Los ve el Dueño y el Encargado; editarlos es del Dueño.",{"id":1391,"title":1392,"titles":1393,"content":1394,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#armar-un-flujo","Armar un flujo",[143],"En Mi negocio → Etapas, tocá Nuevo flujo (parte del flujo de sistema del modo que elijas, o de tu copia si lo editaste) o abrí uno y tocá Duplicar: la copia es independiente.Agregá o renombrá etapas con + Agregar etapa. El Momento dice dónde cae cada una: Antes de la atención, En atención o Final.En cada etapa, + Agregar dato (texto, número, sí\u002Fno, opciones, fecha, foto, firma, checklist…) y elegí Lo ve: Equipo, Cliente o Ambos.Con Agregar botón a otra etapa definís cómo se avanza: el destino, quién lo toca y qué datos exige.Probalo con ▶ Probar flujo (ver Probar un flujo) y tocá Guardar.",{"id":1396,"title":1397,"titles":1398,"content":1399,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#editar-el-flujo-de-sistema","Editar el flujo de sistema",[143],"Fiuit trae tres flujos de sistema: Flujo de servicio, Flujo de pedido y Flujo de suscripción. Para cambiar uno, tocá Editar etapas en el servicio (o Editar en el flujo): editás la copia de tu negocio, que pasan a usar todos los servicios que usaban el original y los nuevos de ese modo. Volver al original devuelve esos servicios al flujo de sistema. Las tareas abiertas no se mueven: terminan con las etapas que tenían. Tu copia no se borra: queda como «(anterior)», con la etiqueta Sin uso, por si la querés volver a usar.Un flujo que ningún servicio usa aparece como Sin uso en Etapas y se puede Borrar si nunca tuvo tareas; si tuvo, desactivalo.",{"id":1401,"title":1402,"titles":1403,"content":1404,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#responsable-de-cada-etapa","Responsable de cada etapa",[143],"Cada etapa puede tener un responsable: en + Agregar → Automático → Responsable de la etapa elegís una persona o un equipo. Sin responsable, la etapa sigue con el mismo de antes (así quedan todos los flujos que ya tenías). Por ejemplo, en un taller: Recepción → equipo «Mostrador»; Diagnóstico y Reparación → equipo «Mecánicos»; Listo para retirar → «Mostrador». Persona: al entrar a la etapa, la tarea pasa a esa persona.Equipo: se asigna con la forma de repartir del equipo (rotativo, el menos ocupado o fijo); si quien la tenía ya es del equipo, la conserva. En las tareas sin horario, un equipo que reparte con «quien la tome» la deja para el equipo hasta que alguien la tome.Turnos con horario: el horario nunca se mueve. Si el nuevo responsable no tiene lugar en su agenda, la tarea sigue con quien la tenía y el dueño y los encargados reciben el aviso Revisar asignación. Lo mismo si el equipo o la persona ya no existen o están inactivos: la tarea nunca queda trabada.Avisos y vistas: el nuevo responsable recibe el aviso de tarea asignada por su canal (panel, Telegram o WhatsApp de equipo) y la ve en «Mis tareas», en sus vistas asignadas y en Focus. No hay permisos nuevos: el equipo ve lo que veía y el dueño y los encargados ven todo.Historial: la tarea lo cuenta («Pasó a Mecánicos al entrar a Diagnóstico»).▶ Probar flujo muestra en «Qué pasaría» a quién se asigna en cada etapa.",{"id":1406,"title":1407,"titles":1408,"content":1409,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#un-flujo-para-varios-servicios","Un flujo para varios servicios",[143],"En el servicio, Editar → Etapas → Cambiar muestra el flujo que usa y te deja elegir otro del mismo modo. Si los cortes y el corte con barba se atienden igual, asignales el mismo flujo: lo armás una vez y cambia para todos. Elegir otro flujo en un servicio cambia solo las tareas nuevas; las abiertas siguen con el suyo.Guardar un flujo compartido publica una versión nueva para todos sus servicios. Antes de confirmar ves qué servicios lo usan y cuántas tareas abiertas se mueven en cada uno.",{"id":1411,"title":1412,"titles":1413,"content":1414,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#el-bot-le-pide-al-cliente-lo-que-falta","El bot le pide al cliente lo que falta",[143],"Si la etapa de una tarea tiene datos o botones que ve el Cliente, y la tarea nació en el chat, el bot se los pide en la misma conversación, uno por uno, y mueve la tarea cuando están completos. Por ejemplo, una etapa «Foto de referencia»: el cliente reserva un corte, el bot le pide la foto, la guarda en la tarea y la pasa a la etapa siguiente. El equipo la ve en Hoy y la cobra como siempre. Si el cliente pregunta otra cosa en el medio, el bot la contesta y después vuelve: «¿Seguimos con tu …?».El bot nunca toca botones del equipo, no cobra ni pone montos, y no cancela sin un SÍ del cliente.Pasadas 24 horas desde que la tarea entró a la etapa, el bot deja de pedirlo y lo sigue el equipo.En un dato de texto que contesta el cliente podés activar Guardar el audio del cliente: si contesta con una nota de voz por WhatsApp o Telegram, el audio queda en la tarea (con un reproductor y lo que dijo debajo) y se borra con la tarea o cuando se borra al cliente. Si no lo activás, el audio se transcribe y se descarta.La foto se pide por WhatsApp, Instagram y Telegram. Por el chat web, el bot avisa que ese dato se completa con el equipo. La firma siempre se completa con el equipo.",{"id":1416,"title":1417,"titles":1418,"content":1419,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#wagy-y-los-flujos","Wagy y los flujos",[143],"Preguntale a Wagy «¿qué flujo usa el corte?» o «¿qué pasos tiene el flujo de color?»: te muestra las etapas y qué servicios lo usan. También puede asignar un flujo a uno o varios servicios, renombrar un flujo propio, agregar, quitar o mover etapas y elegir el responsable de una etapa («que Diagnóstico lo tome el equipo Mecánicos»), siempre con un plan que confirmás. Crear flujos y editar datos, botones o avisos se hace en el panel.",{"id":1421,"title":1203,"titles":1422,"content":1423,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#para-desarrolladores",[143],"Los flujos se leen y se publican por API (\u002Fv1\u002Fflows) y MCP (list_flows, get_flow); el flujo de un servicio es su flow_id. El responsable de cada etapa es on_enter.route (resource o group). También se puede escribir como assignee en la etapa ({\"resource\": id}, {\"group\": id} o null). Ver Endpoints.",{"id":1425,"title":1426,"titles":1427,"content":1428,"level":263},"\u002Fdocs\u002Fwork\u002Fservice-flows#cierres-por-motivo","Cierres por motivo",[143],"Configurá los motivos en Mi negocio → Etapas. Al cerrar elegí uno u Otro con una explicación. Cancelar permite omitirlo. En Resultados ves la cantidad por flujo, salida y motivo. El reporte cuenta cierres registrados, excluye pruebas y no muestra texto libre.",{"id":148,"title":147,"titles":1430,"content":1431,"level":257},[],"Cargá un gasto en tres toques desde Finanzas, mirá entradas y salidas en una sola lista y aprobá lo que carga tu equipo. Los gastos y la lista de Movimientos están en Finanzas. Lo que cargás suma a lo que salió del período; lo que cobrás, a lo que entró.",{"id":1433,"title":1434,"titles":1435,"content":1436,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#las-cuatro-pestañas-de-finanzas","Las cuatro pestañas de Finanzas",[147],"Inicio: arriba, Quedó en grande y debajo Entró y Salió del período; elegís Hoy, Semana o Mes. El gráfico muestra los dos períodos anteriores, el actual (hasta hoy) y el siguiente. Cada período tiene lo ya hecho, lo seguro que falta (los gastos fijos que vencen) y lo previsto (el saldo todavía sin pagar, la comisión del equipo estimada y los gastos por aprobar). Tocá un período y cambian las cifras de arriba. Lo previsto es solo una suma de cosas con fecha: no estima ventas nuevas ni promete nada. Si no hay nada agendado para el período siguiente, no aparece. Abajo van Por cobrar y En atraso (más de 30 días), que se ocultan cuando valen cero.Movimientos: una sola tabla con entradas y salidas, con los totales Entró, Salió y Quedó del filtro. En el celular es una lista compacta.Caja: la caja de efectivo de cada persona del equipo, con lo que cobró en efectivo, lo que rindió y su cierre del día. Es el mismo reporte Caja de Reportes, a un toque.Reportes: un selector con todos los reportes: Estado de resultados, Flujo de caja, Ventas por mes, Comisiones del equipo, Cobros, Caja, Por cobrar, los reportes por cliente, hora, zona y canal, Atención y saturación y el Paquete para el contador. Cada reporte tiene su propio enlace y su botón Exportar.",{"id":1438,"title":1439,"titles":1440,"content":1441,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#cargar-un-gasto","Cargar un gasto",[147],"En cualquier pantalla de Finanzas tocá + Gasto: Escribí el monto (el teclado numérico se abre solo). En guaraníes y pesos chilenos va sin decimales.Si querés, escribí una o varias etiquetas (por ejemplo «moto» o «local centro»). Una etiqueta que ya usaste completa sola la categoría.Tocá una categoría (si la etiqueta no la completó, o para cambiarla): arriba aparecen las 4 que más usás y la última que elegiste; el resto está en Otras.Tocá Guardar. Opcional: Foto del comprobante (foto o PDF). En Más datos elegís la fecha (hoy por defecto; nunca una futura), el recurso (sin recurso queda como General), el servicio, cómo se pagó, a quién y una nota. Después de guardar podés tocar Repetir cada mes (el mismo gasto se carga solo el mismo día de cada mes, desde el mes que viene) o Cargar otro, que deja elegidas la última categoría y el último recurso. Sin conexión lo que escribís queda como borrador en ese dispositivo y lo recuperás al volver a abrir + Gasto; se carga recién cuando hay conexión y tocás Guardar. Un mismo borrador nunca se carga dos veces.",{"id":1443,"title":1444,"titles":1445,"content":1446,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#etiquetas","Etiquetas",[147],"Las categorías son fijas (no se renombran): de ellas salen el Estado de resultados y el Flujo de caja. Para ordenar tus gastos a tu manera usá etiquetas: Las escribís al cargar o al corregir un gasto; las nuevas se crean ahí mismo, sin otra pantalla. Un gasto puede tener varias.Cada etiqueta recuerda la última categoría con la que la usaste y la completa sola la próxima vez (la podés cambiar).En Movimientos, tocá la etiqueta de un gasto (o elegila en Ver → Etiqueta) para ver solo esos gastos y su total, «gastos con esta etiqueta». Como un gasto puede tener varias, esos totales no se suman entre sí.En Movimientos → Gastos → Etiquetas, el Dueño y el Encargado renombran, unen dos en una o borran etiquetas. Borrar una etiqueta la saca de los gastos; los gastos no se borran.",{"id":1448,"title":1449,"titles":1450,"content":1451,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#quién-carga-y-quién-aprueba","Quién carga y quién aprueba",[147],"Dueño y Encargado cargan gastos que suman en el momento.Equipo carga sus gastos y quedan pendientes de aprobación: no suman hasta que el Dueño o un Encargado los aprueben. Cada persona del equipo ve solo los suyos y los puede corregir mientras siguen pendientes.Arriba de Movimientos, el Dueño y el Encargado ven Gastos por aprobar con la cantidad y la suma. Tocá Aprobar o Rechazar (con un motivo). Nadie aprueba lo que cargó.",{"id":1453,"title":1454,"titles":1455,"content":1456,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#movimientos","Movimientos",[147],"Finanzas → Movimientos muestra entradas y salidas del período en una sola lista, cada una con su signo: + entra, − sale. Los chips de arriba filtran con un toque: Todo: cobros, gastos y comisiones, sin los gastos rechazados ni anulados (esos se ven solo en Gastos).Cobros: cobros, anulaciones, devoluciones y la caja.Gastos: los gastos cargados. Los pendientes, rechazados o anulados se ven marcados y no suman.Comisiones: lo que cobra Mercado Pago y Fiuit en cada cobro, y el total calculado de las comisiones del equipo, con el enlace a Comisiones. La búsqueda encuentra también a quién se pagó y la nota del gasto. Tocá Detalle en un gasto para ver el comprobante, Corregir (cada cambio queda en el historial: quién, cuándo, antes y después) o Anular con un motivo. Un gasto nunca se borra y no hay cierre de mes.",{"id":1458,"title":1459,"titles":1460,"content":1461,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#desde-el-bot-del-equipo-en-telegram","Desde el bot del equipo en Telegram",[147],"Tu equipo también carga gastos desde el Telegram del equipo: «gasté 5000 en insumos», \u002Fgasto o la foto del ticket, que queda como comprobante. El bot pregunta lo que falta, muestra el monto y se confirma con un botón; un monto alto pide una segunda confirmación. Lo del Equipo queda pendiente de aprobación, igual que desde el panel.",{"id":1463,"title":1379,"titles":1464,"content":1465,"level":263},"\u002Fdocs\u002Fwork\u002Fexpenses#con-wagy-la-api-y-el-mcp",[147],"Wagy carga un gasto conversando: decile «gasté 5000 en insumos» (o «ayer pagué 80 de nafta») y te muestra el gasto con categoría, monto, día y método para que lo confirmes una vez. Si no dijiste el monto o la categoría, te pregunta; nunca los inventa. Si el monto es alto para tu negocio (desde el doble de lo que pagás por mes de tu plan) o ya cargaste uno igual ese día, antes te pide confirmarlo con un botón. Con el alquiler o los servicios te pregunta si lo repite todos los meses. También anula uno («anulá el gasto de 5000 de hoy, estaba repetido») y responde «¿cuánto gasté este mes en publicidad?». También entiende etiquetas: «gasté 3000 en la moto» usa la etiqueta «moto» y su categoría, «¿cuánto gasté en la moto este mes?» filtra por ella y «uní moto con motos» te propone unirlas antes de hacerlo. Aprobar los gastos del equipo se hace en Movimientos. Por API y MCP, GET \u002Fv1\u002Fpayments\u002Ffinance\u002Fmovements lista lo mismo con group (collections, expenses o commissions) y GET \u002Fv1\u002Fpayments\u002Fexpenses\u002F{id} (expense_get) trae un gasto; cargar es expense_record, aprobar expense_approve y anular expense_void, siempre con confirmación.",{"id":157,"title":156,"titles":1467,"content":1468,"level":257},[],"Recibí avisos de trabajo en Telegram, tomá tareas con un toque y abrí tu jornada en la Mini App \"Mi día\". Telegram del equipo es la forma más rápida de que cada persona del negocio se entere de lo que le toca: una tarea asignada, un trabajo sin tomar, un recordatorio o el resumen del día. Se usa desde el celular, sin instalar nada más que Telegram. Hay un solo bot de Fiuit para todos los equipos. No es el bot de tu negocio: ese es el que conversa con tus clientes (Telegram de clientes). Los dos son independientes y no se mezclan.",{"id":1470,"title":1471,"titles":1472,"content":1473,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#vincular-tu-telegram","Vincular tu Telegram",[156],"El vínculo es por persona, no por negocio: lo hacés una vez y vale para todos los negocios a los que tenés acceso. En el panel, abrí Mi cuenta (tu nombre, al pie del menú) y tocá Vincular Telegram.Tocá Abrir Telegram y, en el bot, Iniciar. El bot confirma que quedó vinculado.Para desvincular, escribí \u002Fsalir al bot o desvinculalo desde Mi cuenta. El enlace de vínculo es de un solo uso y vence a los 15 minutos. Si venció, generá otro. Si no ves la opción Vincular Telegram, el bot del equipo todavía no está activado en tu entorno: avisanos.",{"id":1475,"title":1476,"titles":1477,"content":1478,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#sumar-a-alguien-nuevo-por-telegram","Sumar a alguien nuevo por Telegram",[156],"Si la persona no está en el equipo y no tenés su número, invitala por Telegram: en Mi negocio → Equipo y recursos → Agregar → Invitar, elegí Canal: Telegram, escribí su nombre y guardá. Te mostramos un enlace una sola vez para copiar o compartir: al abrirlo en Telegram y tocar Iniciar, se suma al equipo y queda vinculada. Sirve una vez y vence a las 48 horas. Solo para el rol Equipo; los demás roles se invitan por email. WhatsApp sigue siendo el canal por defecto. El enlace lo usa la primera cuenta de Telegram que lo abre, así que compartilo solo con esa persona. Cuando alguien lo usa, te avisamos con el nombre de su cuenta de Telegram, que también ves en su fila de Personas y en su ficha; si no era quien esperabas, desactivala. Si el enlace se compartió de más antes de usarse, anulalo: en Invitaciones pendientes, Anular invitación.",{"id":1480,"title":1481,"titles":1482,"content":1483,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#qué-avisos-recibís","Qué avisos recibís",[156],"AvisoCuándo llegaTarea asignadaAlguien te asignó una tareaTrabajo sin tomarHay una tarea de cola que tu equipo puede tomarRecordatorioFalta poco para un turno (aviso previo del equipo)Reporte diarioResumen de tu jornadaCambiosUna tarea tuya se canceló o cambióGasto por aprobarSolo Dueño y Encargado: alguien del equipo cargó un gasto que espera tu aprobación (monto y categoría; nunca la nota) Los avisos traen botones para actuar sin abrir el panel: Abrir abre la Mini App directamente en esa tarea. En un gasto por aprobar, abre Finanzas → Movimientos, donde está Gastos por aprobar.Tomar y Completar ejecutan la acción con tus permisos, igual que en el panel. Si otra persona tomó el trabajo antes, te avisa que ya está tomado.Los avisos nunca incluyen datos de otro negocio. Los recordatorios, el reporte diario y el aviso al equipo salen de tus recordatorios y reglas. Si activás uno, el equipo lo recibe por este canal.",{"id":1485,"title":1486,"titles":1487,"content":1488,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#elegí-cómo-recibirlos","Elegí cómo recibirlos",[156],"En Mi cuenta → Preferencias de avisos definís: Canal preferido: automático, Telegram, WhatsApp o email. En automático, Telegram si lo tenés vinculado; si no, WhatsApp (con tu vínculo verificado) y, si tampoco, email.Qué silenciar: asignadas, sin tomar, recordatorios, reporte diario, cambios o (Dueño y Encargado) gastos por aprobar. Si Telegram no puede entregar un aviso (por ejemplo, bloqueaste el bot), el aviso cae al siguiente canal.",{"id":1490,"title":1491,"titles":1492,"content":1493,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#comandos","Comandos",[156],"ComandoQué hace\u002FstartVincula tu cuenta (con el enlace de Mi cuenta)\u002FnextTu siguiente tarea con todo el detalle: cliente, pedido, dirección, Google Maps y Waze, y los botones de su etapa. Al completarla te muestra la siguiente\u002Fnext5Tus próximas 5 tareas, con Iniciar o Ver para elegir el orden\u002FlibresTareas sin asignar que podés tomar, con Tomar\u002FhoyTe muestra tu día, por negocio\u002FgastoCarga un gasto: escribilo («gasté 5000 en insumos») o mandá la foto del ticket\u002FsalirDesvincula tu Telegram\u002FayudaTe recuerda cómo tomar una tarea, avanzar de etapa, compartir tu ubicación en tiempo real y los comandos",{"id":1495,"title":1496,"titles":1497,"content":1498,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#tu-siguiente-tarea-con-next","Tu siguiente tarea con \u002Fnext",[156],"\u002Fnext te muestra una sola tarea: la que ya tenés en curso o, si no hay, la próxima por horario de hoy (lo atrasado primero; lo que no tiene horario, al final). Tocás Iniciar, En camino o Completar (los nombres son los de las etapas de tu negocio) y el bot te manda sola la siguiente, hasta que no queden. Si para avanzar faltan datos (una foto, un campo obligatorio, el cobro o tu ubicación), la tarjeta te dice qué falta y Abrir te lleva a la tarea en la Mini App. Cancelar o marcar que el cliente no estaba también se hace desde la Mini App. Los botones solo hacen lo que tu rol permite, y un botón viejo de una tarea que ya cambió no la avanza: te muestra cómo está ahora.",{"id":1500,"title":1439,"titles":1501,"content":1502,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#cargar-un-gasto",[156],"Escribile al bot «gasté 5000 en insumos» (o «pagué 80 de nafta ayer», o simplemente «gasto 5000 nafta»), usá \u002Fgasto o mandá la foto del ticket, con o sin texto. La foto queda como comprobante del gasto; el bot no lee el ticket, así que si no escribiste el monto te pregunta cuánto fue. Si no se entiende el monto (por ejemplo, dos números o decimales en guaraníes), te pregunta cuánto fue en total. Siempre en la moneda de tu negocio, sin conversión.Si no reconoce la categoría, elegís una con un botón. Si trabajás en varios negocios, primero elegís en cuál.Te muestra el gasto con el monto, la categoría y el día, y lo confirmás con Confirmar (o Cambiar la categoría o Cancelar).Si el monto es alto para tu negocio (desde el doble de lo que paga por mes su plan), te pide una segunda confirmación. Si ya hay un gasto igual ese día, la tarjeta te avisa para que no lo cargues dos veces. Tocar Confirmar dos veces no carga dos gastos. Lo que carga el Equipo queda pendiente de aprobación hasta que lo apruebe el Dueño o un Encargado (les llega el aviso Gasto por aprobar); lo del Dueño y el Encargado suma en el momento. Los roles que no cargan gastos reciben un aviso y no se carga nada.",{"id":1504,"title":1505,"titles":1506,"content":1507,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#mini-app-mi-día","Mini App \"Mi día\"",[156],"El botón de menú del bot (a la izquierda del campo de texto) abre Mi día: el panel en formato compacto dentro de Telegram, sin pedirte contraseña. Muestra lo mismo que verías en el panel según tu rol: Hoy y Trabajo (con \"Mías\" por defecto para el personal) y un selector de negocio si tenés varios. La sesión dura 60 minutos y solo toca Hoy, Trabajo y las tareas. No da acceso a claves de API, equipo, canales ni webhooks.Se corta sola si desvinculás Telegram o si te dan de baja del negocio.",{"id":1509,"title":1510,"titles":1511,"content":1512,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#grupo-del-equipo","Grupo del equipo",[156],"Además de los avisos personales, el negocio puede tener un grupo de Telegram del equipo donde se publican las tareas sin asignar con el botón Tomar. Gana el primero que toca: si dos tocan a la vez, una sola persona queda asignada y la otra ve que ya la tomaron. Un Dueño o Encargado con su Telegram ya vinculado agrega al bot del equipo al grupo.En el grupo escribe \u002Fvincular y toca Confirmar (si administra varios negocios, elige cuál). Solo quien lo pidió puede confirmar.Opcional, en un grupo con temas: dentro de un tema, \u002Ftema y elegí la zona o el equipo de trabajo cuyas tareas van ahí. Las demás van al tema general. Comando del grupoQué hace\u002FvincularVincula el grupo al negocio (con confirmación)\u002FtemaElige qué zona o equipo publica en este tema\u002FdesvincularDeja de publicar tareas en el grupo Solo pueden Tomar las personas del negocio con su Telegram vinculado y permiso para tomar tareas (y, si son del personal, dentro de su equipo y zona). Al resto el bot no le responde.La publicación muestra solo el servicio, el horario y la zona: nunca el cliente, la dirección ni el teléfono. Cuando alguien la toma, el mensaje dice quién y pierde el botón.Hay un grupo por negocio y un negocio por grupo. Se ve y se desvincula en Mi negocio → Equipo y recursos → ficha de la persona; también se corta si sacás al bot del grupo.El bot publica como máximo 20 mensajes por minuto en el grupo; lo demás espera en cola.Al reemplazar el grupo o migrarlo a supergrupo, las tareas sin asignar se publican de nuevo en el grupo vinculado. Los botones de mensajes anteriores responden «Este grupo ya no está vinculado» y no asignan la tarea.",{"id":1514,"title":1515,"titles":1516,"content":1517,"level":263},"\u002Fdocs\u002Fteam\u002Ftelegram-team#límites-y-seguridad","Límites y seguridad",[156],"En privado, el bot solo habla con una persona; en el grupo del equipo solo lee sus comandos y botones.Telegram admite 1 mensaje por segundo por chat; si hay muchos avisos juntos, los siguientes esperan en cola y llegan igual.El vínculo y la Mini App se validan siempre en el servidor. Un enlace usado, vencido o de otra cuenta responde con el mismo mensaje neutro. Para qué ve y qué puede hacer cada persona, mirá Roles y permisos. Para desarrolladores: los endpoints GET\u002FDELETE \u002Fme\u002Ftelegram, POST \u002Fme\u002Ftelegram\u002Flink y GET\u002FPUT \u002Fme\u002Fnotification-preferences son de la cuenta del usuario (sesión de panel) y no se usan con claves de API.",{"id":161,"title":160,"titles":1519,"content":1520,"level":257},[],"Qué puede ver y hacer cada rol (Dueño, Encargado, Equipo, Lectura y Colaborador), cómo invitar al equipo y cómo trabajar con varios proyectos. Cada persona entra a un negocio (un proyecto) con un rol. El rol decide qué pantallas ve y qué puede cambiar. Lo controla el servidor: ocultar un botón en el panel no es la única barrera.",{"id":1522,"title":1523,"titles":1524,"content":1525,"level":263},"\u002Fdocs\u002Fteam\u002Froles#los-roles","Los roles",[160],"RolPara quiénQué haceDueño (owner)Quien administra la cuentaTodo, incluidas las claves de API, el equipo y los canalesEncargado (manager)Quien opera el negocioOpera el negocio: catálogo, equipo, clientes, bot, reglas, canales y webhooks. No administra las claves de APIEquipo (staff)Quien atiende o reparteVe y trabaja lo suyo: sus tareas y lo que su equipo puede tomarLectura (viewer)Socios, contadoresMira Hoy, Trabajo y conversaciones; no modifica nadaColaborador (collaborator)El partner de Fiuit que armó tu proyectoConfigura y opera como un Encargado, pero no ve dinero (cobros, saldos, Finanzas, pagos, Mercado Pago, plan y uso) ni administra el equipo. Nadie lo invita: queda así cuando el Dueño acepta el proyecto. Ver Partners",{"id":1527,"title":1528,"titles":1529,"content":1530,"level":263},"\u002Fdocs\u002Fteam\u002Froles#qué-ve-cada-uno-en-el-panel","Qué ve cada uno en el panel",[160],"SecciónDueñoEncargadoEquipoLecturaHoy y TrabajoSíSíLo suyoSí (lectura)ConversacionesSíSíSolo las suyasSí (lectura)Catálogo, Personas, ClientesSíSíNoNoBot y ReglasSíSíNoNoConfiguración, Canales, IA y usoSíSíNoNoWebhooksSíSíNoNoClaves de API (Desarrolladores)SíNoNoNo El personal busca clientes con una vista mínima: nombre, teléfono parcialmente oculto, etiquetas y ausencias, con un mínimo de caracteres y un tope de resultados. Un repartidor ve el destino exacto de una entrega solo después de tomarla; antes ve una zona aproximada.",{"id":1532,"title":1533,"titles":1534,"content":1535,"level":263},"\u002Fdocs\u002Fteam\u002Froles#invitar-al-equipo","Invitar al equipo",[160],"En Personas podés invitar de dos maneras: Por mensaje (WhatsApp): solo para el rol Equipo, sin contraseña. Indicás nombre y número (con código de país) y le llega la invitación por el chat; al aceptarla, ese número queda vinculado. Mientras no acepte, aparece como Invitación pendiente (vence en 48 horas) y del número solo se ve el final.Por email: para Dueño, Encargado o Lectura. La persona acepta la invitación y crea su contraseña. A una persona del personal la asociás a uno o más recursos (su agenda, su vehículo): eso define qué tareas ve y cuáles puede tomar. Podés cambiar el rol o dar de baja a alguien cuando quieras; sus sesiones y su Telegram dejan de funcionar al instante.",{"id":1537,"title":1538,"titles":1539,"content":1540,"level":301},"\u002Fdocs\u002Fteam\u002Froles#límites-por-plan","Límites por plan",[160,1533],"Cuentan como operadores las personas con acceso al panel y las invitaciones pendientes. Las personas que se agendan pero no tienen cuenta (recursos) no cuentan. Solo: 2 operadores: vos y una persona con el rol Equipo. No incluye Encargado ni otros roles.Negocio: 5. Pro: 20. Business: a medida. En Personas ves el contador («Personas con acceso: 1 de 2»). Al llegar al tope, Invitar queda desactivado con un texto corto y un enlace a Configuración → Plan para pasar de plan. Para bajar de plan hay que quitar primero lo que supere el límite del plan nuevo; nada se borra solo.",{"id":1542,"title":1543,"titles":1544,"content":1545,"level":301},"\u002Fdocs\u002Fteam\u002Froles#enlaces-de-agenda-del-personal","Enlaces de agenda del personal",[160,1533],"Cada persona de personal con recursos tiene un enlace de agenda para abrir «Mi día» sin iniciar sesión. En Mi negocio → Equipo y recursos → ficha de la persona ves si hay uno activo, hasta cuándo vale y cuándo se usó por última vez. Desde ahí podés: Reenviar el de hoy: le llega por su chat el enlace vigente (si había otro, deja de valer). Va por su WhatsApp verificado o, si no lo tiene, por el bot de equipo de Telegram al que está vinculada; hace falta que el canal esté conectado. Si acaba de recibir uno, esperá un minuto.Revocar y cerrar sesiones: el enlace y las sesiones abiertas con él dejan de funcionar al instante. Desde «Mi día» con enlace, la persona puede avanzar sus tareas aunque la etapa pida un formulario, su ubicación o una confirmación, y leer y agregar comentarios internos (el cliente nunca los recibe). El cobro, la asignación y las fotos o firmas se completan desde el panel o por el chat. El enlace es de un solo uso y vale el día de la agenda; si ya se abrió en otro dispositivo, venció o lo revocaste, la persona ve un aviso claro y pide uno nuevo escribiendo «mi agenda» al chat del negocio. Wagy puede proponer la invitación por mensaje (nombre y WhatsApp) con el mismo flujo de confirmación.",{"id":1547,"title":1548,"titles":1549,"content":1550,"level":263},"\u002Fdocs\u002Fteam\u002Froles#varios-proyectos","Varios proyectos",[160],"Una cuenta puede tener varios proyectos (negocios o sedes), cada uno con su equipo, su agenda, sus canales y sus datos, completamente aislados. El número de proyectos depende del plan. Con más de un proyecto, el selector de proyecto del panel te deja cambiar de uno a otro.Solo el Dueño de la cuenta puede crear un proyecto nuevo, a partir de un modelo por rubro (barbería, estética, clínica, restaurante o entregas).Tu rol puede ser distinto en cada proyecto.",{"id":1552,"title":1553,"titles":1554,"content":1555,"level":263},"\u002Fdocs\u002Fteam\u002Froles#soporte-de-plataforma","Soporte de plataforma",[160],"Cuando necesitás ayuda, el equipo de Fiuit puede entrar a tu proyecto de forma temporal: Siempre con un motivo escrito y por un máximo de 60 minutos.En modo lectura (ve lo que vería un Encargado, sin cambiar nada) o asistencia (puede ajustar catálogo, horarios y configuración del negocio).Nunca puede ver ni cambiar claves de API, contraseñas, secretos de canales, facturación ni el equipo, ni enviar mensajes a tus clientes.Cada entrada y salida queda registrada y el Dueño las ve en la actividad del negocio, con quién, en qué modo y por qué.",{"id":1557,"title":1558,"titles":1559,"content":1560,"level":263},"\u002Fdocs\u002Fteam\u002Froles#claves-de-api-y-permisos","Claves de API y permisos",[160],"Las claves de API no tienen rol: tienen scopes (permisos acotados, como slots:read o bookings:write) y las crea solo el Dueño. Mirá Autenticación.",{"id":1562,"title":1563,"titles":1564,"content":1565,"level":263},"\u002Fdocs\u002Fteam\u002Froles#dar-de-baja-la-suscripción","Dar de baja la suscripción",[160],"Solo el Dueño puede dar de baja la suscripción de Fiuit del proyecto: en Configuración → Plan, tocá Dar de baja y confirmá. Sin llamadas ni formularios. El plan no se renueva y sigue hasta el fin del período ya pagado; mientras el proyecto no esté cerrado podés tocar Deshacer la baja. Dar de baja no borra datos. Más detalle en ¿Qué pasa si…? Suscripción y baja.",{"id":1567,"title":1568,"titles":1569,"content":1570,"level":263},"\u002Fdocs\u002Fteam\u002Froles#dónde-organizo-personas-recursos-y-catálogo","¿Dónde organizo personas, recursos y catálogo?",[160],"En Mi negocio tenés Datos, Catálogo, Equipo y recursos y Etapas. Equipo y recursos reúne en una sola pantalla Personas, Equipos, Zonas y lugares y equipamiento, cada uno en su pestaña. Equipos de trabajo reúne personas y recursos, con sus servicios y zonas; el rol Equipo se refiere al acceso al panel. Crear una persona desde Recursos no exige cuenta ni invitación. «Invitar al panel» es opcional, desde su ficha. El rol y el acceso al panel se editan en la ficha de cada persona; los planes reúnen sus suscriptores.",{"id":1572,"title":1573,"titles":1574,"content":1575,"level":263},"\u002Fdocs\u002Fteam\u002Froles#hacer-que-una-persona-reciba-tareas","Hacer que una persona reciba tareas",[160],"En Mi negocio → Equipo y recursos, abrí su ficha y activá Recibe tareas. Elegí los grupos donde atiende (aparecen los servicios de cada grupo) y revisá el horario: por defecto usa el del negocio, o podés indicar uno propio. Confirmá para crear su agenda ya vinculada, con su nombre y foto. Su rol no cambia. Personas y el recurso muestran la misma ficha: el acceso y la agenda pertenecen a la misma persona. Si ya recibe tareas, el interruptor está activo. Desvincular queda visible junto al interruptor solo para corregir una identidad o un duplicado; no hace falta en el uso normal. Una capacidad compartida o un vehículo no son «la misma persona». También podés decirle a Wagy «Sebastián también recibe tareas» y confirmar su propuesta.",{"id":165,"title":164,"titles":1577,"content":1578,"level":257},[],"La campana del panel (con las Novedades de Fiuit), el push en el celular, qué avisos recibís y por dónde, el silencio y las reglas del proyecto. Las notificaciones te avisan de lo que necesita atención sin que tengas que mirar el panel todo el tiempo. Coinciden con lo que ves en Requiere atención del Inbox y en Hoy.",{"id":1580,"title":1581,"titles":1582,"content":1583,"level":263},"\u002Fdocs\u002Fteam\u002Fnotifications#la-campana","La campana",[164],"En el panel, la campana reúne en un solo lugar tus notificaciones y las Novedades de Fiuit (lo que va saliendo, en tu idioma), con un contador combinado de pendientes que se actualiza solo, sin recargar. Si no hay nada pendiente, ves la campana sola, sin número. Tocá la campana para ver la lista: cada aviso te lleva a lo que pide atención (la conversación, la tarea, el canal o la IA) y cada entrada de Novedades abre su detalle.En el celular, la campana abre como una hoja clara que se cierra con Escape o deslizando; las sugerencias de Wagy quedan al costado, sin tapar tus tarjetas.Con Marcar todas como leídas la dejás en cero. Las leídas se borran a los 14 días y todas a los 60. El historial completo de Novedades está en fiuit.com\u002Fnovedades.",{"id":1585,"title":1586,"titles":1587,"content":1588,"level":263},"\u002Fdocs\u002Fteam\u002Fnotifications#qué-avisos-hay","Qué avisos hay",[164],"AvisoCuándo llegaUna conversación necesita atenciónEl bot derivó o falló y nadie respondió todavíaTarea asignada a míAlguien te asignó una tareaTarea sin responsableHay una tarea que tu equipo o zona puede tomarCanal caído o con errorUn canal de mensajes se desconectóIA pausada o cuota agotadaSe pausó la IA del proyecto o se acabó la cuota del mesPosible spamUn canal pausado descartó muchos mensajes en un díaTarea atrasadaUna tarea con horario pasó su fin más la tolerancia y sigue sin cerrarse (responsable, Dueño y Encargado)Sugerencia de WagyWagy tiene algo que proponerte",{"id":1590,"title":1591,"titles":1592,"content":1593,"level":263},"\u002Fdocs\u002Fteam\u002Fnotifications#elegir-qué-recibís-y-por-dónde","Elegir qué recibís y por dónde",[164],"En Mi cuenta → Notificaciones elegís, para cada aviso, si lo querés en el panel, como push, por Telegram o por email. Ahí también definís: Horario de silencio: dentro de la franja no sale nada fuera del panel (ni push, ni Telegram, ni email). Las notificaciones siguen en la campana.Resumen diario por email: un email al día con lo que quedó sin leer. Viene apagado. Si tu entorno todavía no tiene el envío de email configurado, el resumen no sale hasta que lo tenga.",{"id":1595,"title":1596,"titles":1597,"content":1598,"level":263},"\u002Fdocs\u002Fteam\u002Fnotifications#push-en-el-celular-y-en-el-navegador","Push en el celular y en el navegador",[164],"En Mi cuenta → Notificaciones → Push en este dispositivo tocá Activar push y aceptá el permiso del navegador. Cada dispositivo se activa por separado. Si tu proyecto todavía no tiene el push disponible, la pantalla lo dice. En iPhone y iPad el push solo funciona si agregás el panel a la pantalla de inicio: abrilo en Safari, tocá Compartir → Agregar a pantalla de inicio, abrí Fiuit desde el ícono nuevo y activá el push desde ahí.",{"id":1600,"title":1601,"titles":1602,"content":1603,"level":263},"\u002Fdocs\u002Fteam\u002Fnotifications#reglas-del-proyecto-dueño","Reglas del proyecto (Dueño)",[164],"En Configuración → Notificaciones el Dueño decide quién recibe las alertas de canal caído y de spam (solo el Dueño, Dueño y Encargado, o todo el equipo) y qué avisos están activos para todo el proyecto. Lo personal, como los canales y el silencio, lo elige cada persona en Mi cuenta.",{"id":169,"title":168,"titles":1605,"content":1606,"level":257},[],"Reglas de comisión por persona y por servicio o producto, propinas y reporte por período en CSV, calculado al vuelo. En Finanzas > Reportes > Comisiones del equipo ves lo que le corresponde a cada persona del equipo. Fiuit lo calcula solo, con los cobros reales que registrás (efectivo, transferencia, Pix, tarjeta, link de pago): nunca sobre lo vendido ni con números que se escriben a mano en el navegador.",{"id":1608,"title":1609,"titles":1610,"content":1611,"level":263},"\u002Fdocs\u002Fteam\u002Fcommissions#cómo-se-calcula","Cómo se calcula",[168],"Sobre lo cobrado. Si una tarea vale 100 y te pagan 60, la comisión es sobre 60. Cuando llega el resto, se suma la comisión del resto. Una tarea con deuda no genera comisión hasta que se cobra.Señas y descuentos. Una seña cobrada cuenta el día que se cobra (si la tarea se reprogramó, cuenta para quien hace la tarea vigente). Un descuento baja lo que se cobra y, por lo tanto, la comisión.Anulaciones y devoluciones restan el día en que ocurren (el día del cobro no cambia) y se valoran con la regla del cobro original: terminar o cambiar una regla después no deja comisión de un cobro anulado.De quién es la comisión: todo lo cobrado por una tarea es de quien hizo el trabajo, es decir, de quien tenía la tarea asignada (activo y con el recurso) al completarla, aunque otra persona haya registrado el cobro. Mientras la tarea siga abierta, se atribuye a quien la tiene asignada hoy. Si después esa persona deja el equipo o el recurso pasa a otra, la tarea sigue siendo suya; las anulaciones y devoluciones posteriores también le restan a ella.Seña retenida sin trabajo realizado: si la tarea termina en ausencia, cancelación o fallo (no_show, cancelled, failed), sus cobros no generan comisión ni aparecen como «sin persona asignada»: quedan como ingreso del negocio en Finanzas y Caja. Una baja o reasignación posterior no cambia esa regla.Devolución parcial electrónica: por ahora la comisión sigue sobre el total hasta que la devolución es total.Varias personas en una tarea: lo cobrado se reparte en partes iguales.Propinas: van aparte, por medio de pago, y no generan comisión.Tareas sin persona asignada: lo cobrado se muestra aparte (solo Dueño y Encargado) y no genera comisión.",{"id":1613,"title":123,"titles":1614,"content":1615,"level":263},"\u002Fdocs\u002Fteam\u002Fcommissions#reglas",[168],"Una regla es un porcentaje de lo cobrado o un monto fijo (por tarea, o por unidad si es un producto). Se puede aplicar a todo el equipo o a una persona, a todo lo cobrado o a un servicio o producto, y descontar o no la comisión del medio de pago (por ejemplo, la tarifa de Mercado Pago). Cada regla tiene vigencia desde una fecha. Gana la regla más específica: persona + servicio o producto, después servicio o producto, después persona, después la general. Una regla no se edita: para cambiar una tasa, la terminás y creás otra. Dueño y Encargado configuran las reglas; cada persona del equipo ve las que le aplican.",{"id":1617,"title":1618,"titles":1619,"content":1620,"level":263},"\u002Fdocs\u002Fteam\u002Fcommissions#el-día-de-cada-persona","El día de cada persona",[168],"Para cada persona ves lo cobrado por medio de pago, las propinas, la comisión, los ajustes y, si cobró en efectivo, la diferencia de caja del día. Dueño y Encargado pueden ajustar la comisión de un día, con signo y motivo (queda en la auditoría). No hay cierre diario: los números se calculan al vuelo a partir de los cobros. Como cada tarea completada queda de quien la tenía al completarla, dar de baja a alguien o cambiarle los recursos no cambia el pasado.",{"id":1622,"title":1623,"titles":1624,"content":1625,"level":263},"\u002Fdocs\u002Fteam\u002Fcommissions#reporte-por-período","Reporte por período",[168],"En Período elegís las fechas y ves el total por persona, calculado al vuelo (cada tarea cuenta una vez). Exportar CSV baja una fila por persona y día, con importes en la unidad menor de la moneda: sirve de base para liquidar al equipo.",{"id":1627,"title":1628,"titles":1629,"content":1630,"level":263},"\u002Fdocs\u002Fteam\u002Fcommissions#liquidar-el-período","Liquidar el período",[168],"En Período, Dueño y Encargado tocan Liquidar en la tarjeta de una persona. Se abre una hoja con el período, los montos que se congelan (comisión, ajustes y ajustes automáticos de períodos ya liquidados; las propinas no entran), las devoluciones de cobros de otro período si las hay y el motivo, que queda registrado. Al confirmar, ese período queda congelado: los números ya no cambian, tampoco en el resultado. Una sola vez. Liquidar dos veces el mismo período no congela dos veces, y dos períodos liquidados de la misma persona no se pueden superponer. Solo se liquidan días que ya pasaron.Montos actualizados. Si cambian antes de confirmar, la liquidación espera: el panel te muestra los nuevos montos para revisarlos y confirmar otra vez. Con Wagy, pedile una propuesta nueva.Correcciones posteriores. Si después se anula o devuelve un cobro, o cambia una regla hacia atrás, el período liquidado no cambia: la diferencia aparece como ajuste automático en el primer día sin liquidar, con referencia al período liquidado, y entra en la próxima liquidación.No es un pago. Liquidar cierra el período; el pago a la persona lo hacés por fuera de Fiuit. También podés pedírselo a Wagy: «liquidá las comisiones de Ana del mes pasado». Wagy busca a la persona, te muestra los montos que se congelan y te pide confirmar.",{"id":1632,"title":551,"titles":1633,"content":1634,"level":263},"\u002Fdocs\u002Fteam\u002Fcommissions#quién-ve-qué",[168],"RolVePuedeDueño y EncargadoTodo el equipoReglas, ajustes, propinas, CSV, liquidarEquipoSolo lo suyoRegistrar sus propinas (si el negocio le permite cobrar) y bajar su CSVLecturaNada de dinero— Wagy puede leerte las comisiones de un día o de un período y liquidar el período de una persona (con tu confirmación); las reglas, los ajustes y las propinas se hacen en el panel. Por API y MCP están las mismas lecturas (scope commissions:read) y la liquidación (scope commissions:settle).",{"id":173,"title":172,"titles":1636,"content":1637,"level":257},[],"Cómo un partner de Fiuit crea proyectos para sus clientes, los entrega al dueño y queda como colaborador sin acceso al dinero. Un partner de Fiuit (un implementador local, una agencia o un creator) puede armar el proyecto de un negocio y entregárselo listo a su dueño. Fiuit le da al partner un código propio y lo vincula a su cuenta.",{"id":1639,"title":1640,"titles":1641,"content":1642,"level":263},"\u002Fdocs\u002Fteam\u002Fpartners#mis-proyectos-para-partners","Mis proyectos (para partners)",[172],"Si tu cuenta es de un partner, en el menú aparece Mis proyectos. Ahí ves los proyectos de tus clientes: los que creaste y los que Fiuit te asignó, con su plan, su estado y la fecha de alta. Solo ves los tuyos, nunca los de otro partner. Tocá Crear proyecto para un cliente y poné el nombre del negocio (y el rubro, si querés arrancar con un modelo).Configuralo como cualquier proyecto: servicios, equipo, horarios, canales y bot. También podés hacerlo conversando con Wagy.Invitá al dueño real desde Personas con el rol Dueño. La cantidad de proyectos que podés crear depende del plan de tu cuenta; si llegás al tope, escribile a Fiuit.",{"id":1644,"title":1645,"titles":1646,"content":1647,"level":263},"\u002Fdocs\u002Fteam\u002Fpartners#cuando-el-dueño-acepta","Cuando el dueño acepta",[172],"El dueño queda como Dueño del proyecto y vos pasás a Colaborador: Seguís configurando y operando como un Encargado: catálogo, recursos, horarios, bot, reglas, clientes, conversaciones y tareas.No ves nada de dinero: ni cobros, ni saldos, ni la sección Finanzas, ni los pagos de la configuración, ni Mercado Pago, ni el plan y uso de Fiuit.No administrás el equipo ni los webhooks.",{"id":1649,"title":1650,"titles":1651,"content":1652,"level":263},"\u002Fdocs\u002Fteam\u002Fpartners#para-el-dueño","Para el dueño",[172],"Ves al colaborador en Personas y lo podés quitar cuando quieras: pierde el acceso al instante. Todo lo que hace queda registrado a su nombre en la actividad del negocio.",{"id":177,"title":176,"titles":1654,"content":1655,"level":257},[],"Cómo el equipo hace sus tareas a pantalla completa, de a una o varias, sin bloquear el trabajo. Focus muestra tus tareas abiertas a pantalla completa, en el orden de la lista de Hoy. Pensado para el celular y para la tablet en el mostrador o la cocina.",{"id":1657,"title":1658,"titles":1659,"content":1660,"level":263},"\u002Fdocs\u002Fteam\u002Ffocus#cómo-entrar","Cómo entrar",[176],"En Hoy, tocá el botón ▶ Focus (en el celular, junto a Ver). Aparece cuando tenés tareas abiertas y permiso para hacerlas. Salís con la ✕, con Esc o con «atrás», sin cambiar nada.",{"id":1662,"title":1663,"titles":1664,"content":1665,"level":263},"\u002Fdocs\u002Fteam\u002Ffocus#una-tarea-y-lo-que-sigue","Una tarea y «Lo que sigue»",[176],"Ves la tarea actual con el botón de la acción de su etapa. Al cerrarla entra la siguiente.Debajo, Lo que sigue: las próximas, una línea cada una.Cada etapa dice quién la hizo y cuándo.Si hay destino, ves la dirección con Ir y un mapa; si hay saldo, los cobros quedan a la vista.",{"id":1667,"title":1668,"titles":1669,"content":1670,"level":301},"\u002Fdocs\u002Fteam\u002Ffocus#gestos","Gestos",[176,1663],"Con el selector Una a una | Lista: Derecha: Listo (5 segundos para Deshacer).Izquierda: Después (va al final de la fila).Abajo: la lista del día. La tarjeta suma Llamar, WhatsApp y «Tengo un problema». El selector lo ves arriba: Una a una muestra la tarjeta única y Lista, varias tarjetas a la vez. Se recuerda por persona.",{"id":1672,"title":1673,"titles":1674,"content":1675,"level":263},"\u002Fdocs\u002Fteam\u002Ffocus#hacer-cualquier-tarea-sin-bloquear","Hacer cualquier tarea sin bloquear",[176],"Tocá cualquiera de Lo que sigue para hacerla ahora: la otra vuelve a la lista. Si el orden no se puede cumplir, no quedás trabado.",{"id":1677,"title":1678,"titles":1679,"content":1680,"level":263},"\u002Fdocs\u002Fteam\u002Ffocus#el-silbido","El silbido",[176],"Una tarea nueva entra en Lo que sigue, sin interrumpir la actual, con el aviso «Entró una tarea nueva» y vibración si el dispositivo la admite.Suena un silbido corto «fiuít» donde el teléfono respeta el modo silencio (hoy, iPhone).El interruptor de sonido (la campana) silba una vez al encenderse, para probarlo. Al apagarlo no suena.Con el iPhone en mudo no suena: queda el aviso, que se ilumina un instante.Si aparece «Tocá para activar el sonido», tocá dentro de Focus.",{"id":1682,"title":1683,"titles":1684,"content":1685,"level":263},"\u002Fdocs\u002Fteam\u002Ffocus#reprogramar-desde-focus","Reprogramar desde Focus",[176],"Reprogramar ofrece +1 h, +3 h, Mañana y +3 días con la disponibilidad real; si el horario está ocupado, muestra el siguiente libre. La tarea sale de la cola con un aviso y Deshacer.",{"id":1687,"title":1688,"titles":1689,"content":1690,"level":263},"\u002Fdocs\u002Fteam\u002Ffocus#focus-en-la-mini-app-de-telegram","Focus en la Mini App de Telegram",[176],"Funciona igual desde la Mini App de Telegram. Si la etapa tiene Ubicación en vivo (por ejemplo «En camino»), Focus pide permiso y comparte tu posición con el aviso «Compartiendo tu ubicación» y Pausar. Se corta al salir de la etapa o cerrar Focus; si bloqueás el teléfono también, así que para un recorrido completo usá la ubicación en tiempo real de Telegram. La pantalla queda encendida mientras usás Focus y se libera tras 15 minutos sin tocarla (salvo en Lista en tablet o computadora, donde queda siempre encendida).",{"id":181,"title":180,"titles":1692,"content":1693,"level":257},[],"Creá tu primera reserva por API en cinco minutos con una clave de un negocio de prueba: servicios, horarios, pre-reserva y confirmación. Esta guía crea una reserva real, así que usá una clave de producción (wg_live_...) de un negocio que armaste para probar. Las claves wg_test_ son de solo lectura: permiten listar y leer, no crear ni modificar nada. Un sandbox para escrituras es Próximamente. Para probar el bot sin WhatsApp, usá el simulador del panel. URL base: https:\u002F\u002Fapi.fiuit.com\u002Fv1. Cada request necesita Authorization: Bearer \u003Cclave>.",{"id":1695,"title":1696,"titles":1697,"content":1698,"level":263},"\u002Fdocs\u002Fquickstart#_1-generá-una-clave","1. Generá una clave",[180],"En el panel, andá a Configuración → Desarrolladores, creá una clave de Producción y marcá los scopes slots:read, bookings:write y config:read. La clave se muestra una sola vez. export WAGEND_KEY=\"wg_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxx\"",{"id":1700,"title":1701,"titles":1702,"content":1703,"level":263},"\u002Fdocs\u002Fquickstart#_2-verificá-quién-sos","2. Verificá quién sos",[180],"curl https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fme -H \"Authorization: Bearer $WAGEND_KEY\" {\n  \"workspace\": { \"id\": \"ws_9f2c\", \"name\": \"Barbería Centro\", \"timezone\": \"America\u002FSao_Paulo\", \"locale\": \"es\", \"currency\": \"BRL\" },\n  \"scopes\": [\"slots:read\", \"bookings:write\", \"config:read\"],\n  \"mode\": \"live\"\n} El workspace siempre sale de la clave. Nunca enviás un id de workspace.",{"id":1705,"title":1706,"titles":1707,"content":1708,"level":263},"\u002Fdocs\u002Fquickstart#_3-listá-los-servicios","3. Listá los servicios",[180],"curl https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fservices -H \"Authorization: Bearer $WAGEND_KEY\" {\n  \"data\": [\n    { \"id\": \"svc_corte\", \"name\": \"Corte\", \"duration_min\": 30, \"price_cents\": 5000, \"currency\": \"BRL\",\n      \"requirements\": [{ \"resource_group_id\": \"grp_barbers\", \"units\": 1 }] }\n  ]\n}",{"id":1710,"title":1711,"titles":1712,"content":1713,"level":263},"\u002Fdocs\u002Fquickstart#_4-buscá-horarios-disponibles","4. Buscá horarios disponibles",[180],"curl \"https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fslots?service_id=svc_corte&from=2026-10-15T08:00:00-03:00&to=2026-10-15T13:00:00-03:00\" \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" {\n  \"data\": [\n    { \"start\": \"2026-10-15T09:00:00-03:00\", \"end\": \"2026-10-15T09:30:00-03:00\", \"resource_ids\": [\"res_juan\"] },\n    { \"start\": \"2026-10-15T09:45:00-03:00\", \"end\": \"2026-10-15T10:15:00-03:00\", \"resource_ids\": [\"res_juan\"] }\n  ],\n  \"unavailable_reason\": null\n}",{"id":1715,"title":1716,"titles":1717,"content":1718,"level":263},"\u002Fdocs\u002Fquickstart#_5-pre-reservá-el-horario","5. Pre-reservá el horario",[180],"La pre-reserva (hold) guarda el horario por 10 minutos mientras juntás los datos del cliente. Enviá siempre un Idempotency-Key para que los reintentos sean seguros. curl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fholds \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Idempotency-Key: $(uuidgen)\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"service_id\": \"svc_corte\", \"start\": \"2026-10-15T09:45:00-03:00\", \"resource_ids\": [\"res_juan\"] }' { \"id\": \"bkg_7Qx1\", \"status\": \"held\", \"expires_at\": \"2026-10-14T15:30:00-03:00\", \"start\": \"2026-10-15T09:45:00-03:00\" }",{"id":1720,"title":1721,"titles":1722,"content":1723,"level":263},"\u002Fdocs\u002Fquickstart#_6-confirmá","6. Confirmá",[180],"curl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fholds\u002Fbkg_7Qx1\u002Fconfirm \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Idempotency-Key: $(uuidgen)\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"customer\": { \"name\": \"Carlos\", \"phone\": \"+5491155550000\", \"locale\": \"es\" } }' { \"id\": \"bkg_7Qx1\", \"status\": \"confirmed\", \"start\": \"2026-10-15T09:45:00-03:00\", \"source\": \"api\" } Si el servicio pide seña, el estado queda en pending_payment. El cobro en línea de la seña es próximamente.",{"id":1725,"title":1726,"titles":1727,"content":1728,"level":263},"\u002Fdocs\u002Fquickstart#el-mismo-flujo-en-javascript","El mismo flujo en JavaScript",[180],"const api = (path: string, init: RequestInit = {}) =>\n  fetch(`https:\u002F\u002Fapi.fiuit.com\u002Fv1${path}`, {\n    ...init,\n    headers: { Authorization: `Bearer ${process.env.WAGEND_KEY}`, 'Content-Type': 'application\u002Fjson', ...init.headers },\n  }).then((r) => r.json())\n\nconst { data: slots } = await api(`\u002Fslots?service_id=svc_corte&from=${from}&to=${to}`)\nconst hold = await api('\u002Fholds', {\n  method: 'POST',\n  headers: { 'Idempotency-Key': crypto.randomUUID() },\n  body: JSON.stringify({ service_id: 'svc_corte', start: slots[0].start }),\n})\nconst booking = await api(`\u002Fholds\u002F${hold.id}\u002Fconfirm`, {\n  method: 'POST',\n  headers: { 'Idempotency-Key': crypto.randomUUID() },\n  body: JSON.stringify({ customer: { name: 'Carlos', phone: '+5491155550000' } }),\n})",{"id":1730,"title":1731,"titles":1732,"content":1733,"level":263},"\u002Fdocs\u002Fquickstart#siguientes-pasos","Siguientes pasos",[180],"Preferís no armar el cliente a mano: usá los SDK de TypeScript y Python.Reaccioná a las reservas con webhooks.Mirá todos los endpoints en la referencia y más ejemplos en las recetas.Conectá un agente de IA con el servidor MCP. html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":190,"title":189,"titles":1735,"content":1736,"level":257},[],"Claves de API, scopes y qué rutas se pueden usar con una clave y cuáles son solo del panel.",{"id":1738,"title":1739,"titles":1740,"content":1741,"level":263},"\u002Fdocs\u002Fapi\u002Fauthentication#claves-de-api","Claves de API",[189],"Las claves las crea el Dueño en Configuración → Desarrolladores. Se muestran una sola vez. Enviá tu clave como bearer token: GET \u002Fv1\u002Fme HTTP\u002F1.1\nHost: api.fiuit.com\nAuthorization: Bearer wg_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxx PrefijoModowg_live_Datos de producción y mensajes realeswg_test_Solo lectura: permite listar y leer, no crear ni modificar nada. Un sandbox para escrituras es Próximamente Las claves pertenecen a un proyecto (workspace). El proyecto siempre se toma de la clave: no hay id de workspace en paths ni en bodies. Las claves se guardan hasheadas.",{"id":1743,"title":1744,"titles":1745,"content":1746,"level":263},"\u002Fdocs\u002Fapi\u002Fauthentication#scopes","Scopes",[189],"ScopePermiteslots:readGET \u002Fslotsbookings:readLeer reservas y tareas (\u002Fbookings, \u002Fwork-items), historial de etapas, adjuntos, estadísticas del equipobookings:writePre-reservas, confirmar, cancelar, reprogramar, check-in, ausencia, completar, ejecutar acciones y editar prioridad, etiquetas y vencimiento de una tareacustomers:readLeer y buscar clientes, su historial, resumen y comentarioscustomers:writeCrear y editar clientesmessages:readLeer conversaciones y mensajesmessages:writeEnviar mensajes, cambiar el modo (bot o persona), resolver, marcar como leídoconfig:read \u002F config:writeServicios, recursos, equipos, horarios, automatizaciones por regla, conocimiento y botsettings:writeReemplazar y revertir etapas, acciones y formularios (\u002Fservices\u002F{id}\u002Fstages)webhooks:manageEndpoints de webhooks salientesproducts:read \u002F products:writeLeer y gestionar el catálogo de productospayments:read, payments:read_balanceLeer cobros y saldos de tareaspayments:record, payments:link, payments:void, payments:adjust, payments:refund, payments:fiscalRegistrar cobros, generar enlaces, anular, ajustar, devolver y marcar datos fiscalesexpenses:read, expenses:record, expenses:void, expenses:approveLeer, registrar, anular y aprobar gastoscommissions:read, commissions:configure, commissions:adjust, commissions:settle, commissions:exportLeer, configurar, ajustar, liquidar y exportar comisionescash:read, cash:remit, cash:close, cash:configureLeer caja, rendir, cerrar y configurarfinance:analyze, finance:exportConsultar y exportar reportes de Dinerocustomer_balance:read, customer_account:readLeer el saldo y la cuenta corriente del clienteprepaid:read, prepaid:manage, prepaid:sell, prepaid:benefitsLeer, administrar y vender paquetes y clubes, y gestionar beneficiospartner:readLeer el panel del partner que emitió la clave Un request sin el scope necesario devuelve 403 con code: \"insufficient_scope\". Las fuentes de conocimiento (\u002Fknowledge\u002Fsources) y la política del bot por canal aceptan config:read \u002F config:write. GET \u002Fconnection\u002Fprojects permite listar los proyectos de la credencial; administrarlos sigue siendo solo del panel.",{"id":1748,"title":1749,"titles":1750,"content":1751,"level":263},"\u002Fdocs\u002Fapi\u002Fauthentication#qué-es-solo-del-panel","Qué es solo del panel",[189],"Estas áreas no aceptan claves de API: usan la sesión de una persona del equipo (con su rol) y están protegidas con CSRF. Si las llamás con una clave, la API responde que no están disponibles para ese tipo de credencial. Canales, pausas de canales y de la IA, estado del servicio.Reglas de automatización (\u002Fautomation-flows), asistente Wagy y su plan.Equipo, invitaciones, claves de API, proyectos y soporte de plataforma.Telegram del equipo y preferencias de avisos. El listado de endpoints marca cuáles son cuáles.",{"id":1753,"title":1754,"titles":1755,"content":1756,"level":263},"\u002Fdocs\u002Fapi\u002Fauthentication#rotación","Rotación",[189],"Creá una clave nueva, desplegala y después revocá la vieja en Configuración → Desarrolladores. Las claves revocadas devuelven 401 al instante. html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":194,"title":193,"titles":1758,"content":1759,"level":257},[],"Formatos, idempotencia, paginación, errores y límites de uso de la API v1.",{"id":1761,"title":1762,"titles":1763,"content":1764,"level":263},"\u002Fdocs\u002Fapi\u002Fconventions#lo-básico","Lo básico",[193],"URL base https:\u002F\u002Fapi.fiuit.com\u002Fv1. Los cambios incompatibles salen como una nueva versión; los cambios aditivos (campos nuevos) pueden llegar en cualquier momento, así que ignorá los campos que no conozcas.JSON de entrada y de salida (Content-Type: application\u002Fjson).Fechas en ISO 8601 con offset (2026-10-15T09:45:00-03:00). Se guardan en UTC.Montos en centavos enteros más currency (BRL, ARS, PYG, USD).Los IDs son strings opacos. Los campos sin valor llegan como null explícito.El contrato legible por máquina es packages\u002Fopenapi\u002Fopenapi.yaml (OpenAPI 3.1) y el historial de cambios resume lo nuevo.",{"id":1766,"title":1767,"titles":1768,"content":1769,"level":263},"\u002Fdocs\u002Fapi\u002Fconventions#idempotencia","Idempotencia",[193],"POST \u002Fholds, POST \u002Fholds\u002F{id}\u002Fconfirm, POST \u002Fbookings, POST \u002Fbookings\u002F{id}\u002Freschedule y POST \u002Fbookings\u002F{id}\u002Factions\u002F{key} llevan el header Idempotency-Key (por ejemplo un UUID). Repetir un request con la misma clave dentro de 24 horas devuelve la respuesta original. Reusar la clave con otro body devuelve 422 con code: \"idempotency_conflict\". POST \u002Fcustomers acepta Idempotency-Key de forma opcional. POST \u002Fwebhook-endpoints no lo admite, porque su respuesta contiene el secreto.",{"id":1771,"title":1772,"titles":1773,"content":1774,"level":263},"\u002Fdocs\u002Fapi\u002Fconventions#paginación","Paginación",[193],"Los endpoints de listado usan cursores: curl \"https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fbookings?limit=50\" -H \"Authorization: Bearer $WAGEND_KEY\"\n# → { \"data\": [...], \"next_cursor\": \"eyJpZCI6...\" }\ncurl \"https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fbookings?limit=50&cursor=eyJpZCI6...\" -H \"Authorization: Bearer $WAGEND_KEY\" Cuando next_cursor es null, no hay más páginas.",{"id":1776,"title":1777,"titles":1778,"content":1779,"level":263},"\u002Fdocs\u002Fapi\u002Fconventions#errores","Errores",[193],"Los errores siguen la RFC 9457 (application\u002Fproblem+json): {\n  \"type\": \"https:\u002F\u002Ffiuit.com\u002Fdocs\u002Fapi\u002Fconventions#errors\",\n  \"title\": \"Slot no longer available\",\n  \"status\": 409,\n  \"code\": \"slot_taken\",\n  \"alternatives\": [{ \"start\": \"2026-10-15T10:15:00-03:00\", \"end\": \"2026-10-15T10:45:00-03:00\" }]\n} codeEstadoCuándovalidation_error422Falló la validación del body o de los parámetrosinvalid_api_key401Clave ausente, inválida o revocadaidempotency_key_required400Falta el header Idempotency-Key en una operación que lo exigeversion_conflict409Alguien editó antes el mismo recurso (versión desactualizada)insufficient_scope403La clave no tiene el scopenot_found404Id desconocido (o de otro proyecto)slot_taken409Otra persona tomó el horarioteam_policy_missing409Un equipo del servicio todavía no tiene definido cómo atiende: configuralo para tomar reservasalready_claimed409Otra persona del equipo tomó antes la tarea de colacustomer_exists409Ya hay un cliente con ese teléfonoinvalid_transition409Por ejemplo confirmar una reserva canceladahold_expired410La pre-reserva venció antes de confirmaridempotency_conflict422Misma clave, distinto bodyrate_limited429Demasiados requests Cada respuesta de error trae code: usalo para decidir qué hacer, no el texto del title.",{"id":1781,"title":1782,"titles":1783,"content":1784,"level":263},"\u002Fdocs\u002Fapi\u002Fconventions#límites-de-uso","Límites de uso",[193],"Los límites aplican por clave y por proyecto (un cubo con ráfaga de 120 requests y recarga de 2 por segundo). Cada respuesta trae RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset. Ante un 429, esperá Retry-After segundos. html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":198,"title":197,"titles":1786,"content":1787,"level":257},[],"Los endpoints de la API v1 agrupados por tema, con el scope que pide cada uno, y qué áreas son solo del panel. El contrato legible por máquina está en el repositorio, en packages\u002Fopenapi\u002Fopenapi.yaml (OpenAPI 3.1). Esta página resume lo que podés usar con una clave de API. Las áreas marcadas como \"solo panel\" usan la sesión de una persona del equipo (ver Autenticación).",{"id":1789,"title":1790,"titles":1791,"content":1792,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#agenda-horarios-y-reservas","Agenda: horarios y reservas",[197],"MétodoPathScopeDescripciónGET\u002Fslotsslots:readHorarios disponibles para un servicioPOST\u002Fholdsbookings:writeCrear pre-reserva de 10 minutosPOST\u002Fholds\u002F{id}\u002Fconfirmbookings:writeConfirmar (o pending_payment si pide seña)DELETE\u002Fholds\u002F{id}bookings:writeLiberar pre-reservaPOST\u002Fbookingsbookings:writePre-reserva y confirmación en una llamadaGET\u002Fbookingsbookings:readListar (from, to, status, resource_id, customer_id)GET \u002F PATCH\u002Fbookings\u002F{id}bookings:read \u002F writeLeer, actualizar notas o datos de ingresoPOST\u002Fbookings\u002F{id}\u002Fcancel, \u002Freschedule, \u002Fcheck-in, \u002Fno-show, \u002Fcomplete, \u002Ffailbookings:writeCambiar el estado",{"id":1794,"title":1795,"titles":1796,"content":1797,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#trabajo-tareas-y-acciones","Trabajo: tareas y acciones",[197],"Una reserva es una tarea con etapas. Las tareas sin horario (por ejemplo entregas) viven en la cola de un equipo hasta que alguien las toma. Ver Trabajo y acciones. MétodoPathScopeDescripciónGET\u002Fwork-itemsbookings:readConsulta unificada: filtros por view (inbox, today, upcoming), status, stage, unassigned, priority, tag, origin, q, rango de fechas y caja geográficaPATCH\u002Fwork-items\u002F{id}bookings:writeCambiar prioridad, etiquetas o vencimiento (con expected_version opcional)POST\u002Fbookings\u002F{id}\u002Factions\u002F{key}bookings:writeEjecutar una acción de la etapa (tomar, soltar, completar, \"no estaba\"…) con Idempotency-KeyGET\u002Fbookings\u002F{id}\u002Fstage-historybookings:readHistorial de etapasGET\u002Fbookings\u002F{id}\u002Fcomments, \u002Ftimelinebookings:readComentarios y línea de tiempoGET\u002Fbookings\u002F{id}\u002Fattachments, \u002Flocation-eventsbookings:readEvidencia de trabajoGET\u002Fconversations\u002F{id}\u002Fwork-itemsbookings:readTareas creadas desde una conversaciónGET\u002Fteam\u002Foverview, \u002Fresources\u002F{id}\u002Fstatsbookings:readOcupación y estadísticas del equipo",{"id":1799,"title":1800,"titles":1801,"content":1802,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#catálogo-y-etapas","Catálogo y etapas",[197],"MétodoPathScopeGET \u002F POST\u002Fservices, \u002Fresources, \u002Fresource-groups, \u002Fschedulesconfig:read \u002F config:writeGET \u002F PATCH \u002F DELETE\u002Fservices\u002F{id}, \u002Fresources\u002F{id}, \u002Fresource-groups\u002F{id}, \u002Fschedules\u002F{id}config:read \u002F config:writePOST \u002F DELETE\u002Fschedules\u002F{id}\u002Foverrides, \u002Fschedules\u002F{id}\u002Foverrides\u002F{date}config:writeGET\u002Fschedule-overridesconfig:readGET\u002Fflows, \u002Fflows\u002F{id}, \u002Fflows\u002F{id}\u002Fversions, \u002Fflows\u002F{id}\u002Fversions\u002F{version}config:readGET\u002Fflow-message-catalogconfig:readPOST\u002Fflowssettings:writePATCH\u002Fflows\u002F{id}settings:writePOST\u002Fflows\u002F{id}\u002Fvalidate, \u002Fflows\u002F{id}\u002Fcopy, \u002Fflows\u002F{id}\u002Fversions\u002F{version}\u002Frevertsettings:writeGET\u002Fflow-examples, \u002Fbase-statesconfig:read",{"id":1804,"title":1805,"titles":1806,"content":1807,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#clientes","Clientes",[197],"MétodoPathScopeDescripciónGET\u002Fcustomerscustomers:readListar y buscar (q: nombre, email, empresa, etiqueta o teléfono; phone, tag)POST\u002Fcustomerscustomers:writeAlta manual. El teléfono es único: si ya existe, 409 customer_existsGET \u002F PATCH\u002Fcustomers\u002F{id}customers:read \u002F writeLeer o editar (incluye dirección con formatted, lat y lng)GET\u002Fcustomers\u002F{id}\u002Fbookings, \u002Fsummary, \u002Ftimeline, \u002Fcommentscustomers:readHistorial, resumen en vivo, línea de tiempo y comentarios Un cliente puede tener varias identidades (WhatsApp, Telegram, WebChat) en identities[].",{"id":1809,"title":1810,"titles":1811,"content":1812,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#conversaciones","Conversaciones",[197],"MétodoPathScopeGET\u002Fconversations, \u002Fconversations\u002F{id}, \u002Fconversations\u002F{id}\u002Fmessagesmessages:readPOST\u002Fconversations\u002F{id}\u002Fmessagesmessages:write (responde 409 channel_paused si el canal está pausado)POST\u002Fconversations\u002F{id}\u002Fmode, \u002Fread, \u002Fresolvemessages:write",{"id":1814,"title":97,"titles":1815,"content":1816,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#bot-y-conocimiento",[197],"MétodoPathScopeGET \u002F PUT\u002Fbotconfig:read \u002F config:writeGET \u002F POST\u002Fknowledge, \u002Fknowledge\u002Ffilesconfig:read \u002F config:writePOST\u002Fknowledge\u002Fsearchconfig:readPATCH \u002F DELETE\u002Fknowledge\u002F{id}config:writeGET \u002F POST \u002F PATCH\u002Fautomations, \u002Fautomations\u002F{id}config:read \u002F config:write",{"id":1818,"title":1819,"titles":1820,"content":1821,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#webhooks-salientes","Webhooks salientes",[197],"MétodoPathScopeGET \u002F POST\u002Fwebhook-endpointswebhooks:manageGET \u002F PATCH \u002F DELETE\u002Fwebhook-endpoints\u002F{id}webhooks:managePOST\u002Fwebhook-endpoints\u002F{id}\u002Frotate-secret, \u002Fping, \u002Fdeliveries\u002F{delivery_id}\u002Fresendwebhooks:manageGET\u002Fwebhook-endpoints\u002F{id}\u002Fdeliverieswebhooks:manage Detalle en Webhooks.",{"id":1823,"title":1824,"titles":1825,"content":1826,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#plataforma","Plataforma",[197],"MétodoPathScopeGET\u002Fmecualquiera",{"id":1828,"title":1829,"titles":1830,"content":1831,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#solo-panel-no-aceptan-claves-de-api","Solo panel (no aceptan claves de API)",[197],"ÁreaRutasCanales y pausas\u002Fchannels, \u002Fchannels\u002Fwhatsapp, \u002Fchannels\u002Ftelegram, \u002Fchannels\u002Fservice-status, \u002Fchannels\u002Fpauses, \u002Fchannels\u002F{channel}\u002Fpause y \u002Fresume; ver Pausas y EstadoPolítica del bot por canal\u002Fbot\u002Fchannel-policies (ver WebChat)Fuentes de conocimiento\u002Fknowledge\u002Fsources (ver Conocimiento)Reglas\u002Fautomation-flows (ver Reglas)IA del proyecto\u002Fai\u002Fusage, \u002Fai\u002Fpause, \u002Fai\u002Fresume, \u002Fai\u002Fspam-guard, \u002Fai\u002FnoticesWagy\u002Fassistant\u002F*, el asistente de configuración del panelEquipo y cuenta\u002Fteam\u002F*, \u002Fapi-keys, \u002Fworkspaces, \u002Fme\u002Ftelegram, \u002Fme\u002Fnotification-preferencesWebChat\u002Fwebchat-site (gestión) y \u002Fpublic\u002Fwebchat\u002F* (públicos, con la clave publicable del widget)",{"id":1833,"title":1834,"titles":1835,"content":1836,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#ejemplo-slots","Ejemplo: slots",[197],"GET \u002Fv1\u002Fslots?service_id=svc_laser&from=2026-10-20T09:00:00-03:00&to=2026-10-20T20:00:00-03:00&around=2026-10-20T18:00:00-03:00 {\n  \"data\": [\n    { \"start\": \"2026-10-20T17:45:00-03:00\", \"end\": \"2026-10-20T18:30:00-03:00\", \"resource_ids\": [\"res_ana\", \"res_laser1\", \"res_room2\"] },\n    { \"start\": \"2026-10-20T18:45:00-03:00\", \"end\": \"2026-10-20T19:30:00-03:00\", \"resource_ids\": [\"res_carla\", \"res_laser1\", \"res_room1\"] }\n  ],\n  \"unavailable_reason\": null\n}",{"id":1838,"title":1839,"titles":1840,"content":1841,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#ejemplo-objeto-de-reserva","Ejemplo: objeto de reserva",[197],"{\n  \"id\": \"bkg_7Qx1\",\n  \"status\": \"confirmed\",\n  \"stage\": \"confirmed\",\n  \"service_id\": \"svc_laser\",\n  \"start\": \"2026-10-20T17:45:00-03:00\",\n  \"end\": \"2026-10-20T18:30:00-03:00\",\n  \"party_size\": 1,\n  \"customer\": { \"id\": \"cus_31\", \"name\": \"Marina\", \"phone\": \"+5521988887777\", \"locale\": \"pt\" },\n  \"allocations\": [\n    { \"resource_id\": \"res_ana\", \"start\": \"2026-10-20T17:45:00-03:00\", \"end\": \"2026-10-20T18:40:00-03:00\" },\n    { \"resource_id\": \"res_laser1\", \"start\": \"2026-10-20T17:45:00-03:00\", \"end\": \"2026-10-20T18:40:00-03:00\" },\n    { \"resource_id\": \"res_room2\", \"start\": \"2026-10-20T17:45:00-03:00\", \"end\": \"2026-10-20T18:40:00-03:00\" }\n  ],\n  \"priority\": \"normal\",\n  \"tags\": [],\n  \"source\": \"whatsapp\",\n  \"created_at\": \"2026-10-19T11:02:13-03:00\"\n} Las asignaciones incluyen el buffer (acá, 10 minutos después del servicio). En las tareas con cola, start y end vienen en null hasta que alguien las toma.",{"id":1843,"title":1844,"titles":1845,"content":1846,"level":263},"\u002Fdocs\u002Fapi\u002Fendpoints#cambios-recientes","Cambios recientes",[197],"Estas son las novedades de la API, todas aditivas. El historial completo vive en el repositorio (docs\u002Fapi\u002FCHANGELOG.md). Clientes: alta manual, datos ampliados, dirección con formatted, lat y lng, e identities[] multicanal.Tareas y acciones: consulta unificada GET \u002Fwork-items, ejecutor de acciones con efectos (tomar, soltar, resultados) y 409 already_claimed.Mensajes con ubicación: WhatsApp, Telegram y WebChat guardan la ubicación compartida en la conversación.Pausas: al pausar un canal, enviar un mensaje responde 409 channel_paused.Conocimiento: fuentes de tipo sitio con max_pages y errores por causa. Las confirmaciones conservan título y cuerpo en los tres idiomas. La API admite hasta 42 etapas para preservar las identidades anteriores y las canónicas del sistema. Las canónicas aisladas no añaden acciones ni permisos; las salidas configuradas conservan la validación del grafo. Validar, guardar y restaurar aceptan esas configuraciones migradas. html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"id":202,"title":201,"titles":1848,"content":1849,"level":257},[],"Avisos firmados de lo que pasa con tus reservas, con reintentos automáticos, log de entregas y ejemplos para verificar la firma.",{"id":1851,"title":1852,"titles":1853,"content":1854,"level":263},"\u002Fdocs\u002Fapi\u002Fwebhooks#eventos","Eventos",[201],"Se pueden suscribir estos eventos: EventoCuándobooking.createdSe creó una pre-reserva o reservabooking.confirmedSe confirmó una reservabooking.cancelledReserva cancelada o pre-reserva liberadabooking.rescheduledSe movió de horario (el payload trae el id viejo y el nuevo)booking.no_showMarcada como ausenciabooking.completedAtención completadabooking.scheduledHorario fijado en la misma tareabooking.unscheduledHorario quitado de la tareabooking.reassignedCambió el conjunto de co-responsables; data.booking.resource_ids trae todos los recursos posteriores y previous_resource_ids los anteriores.workitem.reopenedSe reabrió una tareaworkitem.stage_enteredLa tarea entró a una etapaworkitem.stage_movedLa tarea se movió de etapaworkitem.tool_usedSe usó una acción o herramienta de la etapapayment.paidProveedor actualizó el cobro a pagadopayment.recordedCobro manual registradopayment.voidedCobro manual anuladomessage.receivedMensaje entrante persistido (IDs y tipo, sin texto)conversation.handoffConversación pasada a modo humano booking.reassigned: Solo se emite si había al menos un recurso asignado y el conjunto cambia. Incluye soltar la asignación (conjunto nuevo vacío); excluye la asignación inicial y repetir el mismo recurso. Se deduplica por reserva y secuencia persistida de cambios reales de recursos, independiente de la versión: A→B→A→B emite tres eventos. Reintentar el mismo PATCH o repetir el conjunto actual no agrega eventos ni incrementa la secuencia. Los tipos inexistentes responden 422 (invalid_webhook) con unsupported_events y la lista supported_events. webhook.ping es solo una prueba, no un tipo de suscripción. booking.cancelled no incluye el vencimiento automático de holds (booking.expired, evento interno). Creá endpoints desde Configuración → Webhooks en el panel o con POST \u002Fv1\u002Fwebhook-endpoints (url y events). El secreto de firma (whsec_…) se muestra una sola vez. curl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fwebhook-endpoints \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"url\": \"https:\u002F\u002Fexample.com\u002Fwagend\", \"events\": [\"booking.confirmed\", \"booking.cancelled\"] }'",{"id":1856,"title":1857,"titles":1858,"content":1859,"level":263},"\u002Fdocs\u002Fapi\u002Fwebhooks#payload","Payload",[201],"El sobre conserva data.booking para reservas; los cobros usan data.payment (ID del cobro), mensajes data.message (ID del mensaje), derivaciones data.conversation (ID de conversación) y eventos de tarea (workitem.*) data.workitem (con etapa y estado; el identificador es id para workitem.reopened y workitem_id para los demás eventos de tarea). No se incluye el texto del mensaje. {\n  \"id\": \"evt_3f6c1d9e0b7a4c2f8e5d1a9b7c3e6f20\",\n  \"type\": \"booking.confirmed\",\n  \"created_at\": \"2026-10-14T15:21:07-03:00\",\n  \"workspace_id\": \"b3a6c8e2-5f1d-4c7a-9e0b-2d8f4a1c6e53\",\n  \"data\": { \"booking\": { \"id\": \"6d1f0c4a-7b2e-4a58-9c3d-0e5f8a2b1c47\", \"status\": \"confirmed\", \"start_at\": \"2026-10-15T12:45:00+00:00\" } }\n} La entrega es al menos una vez: usá el id para ignorar duplicados.",{"id":1861,"title":1862,"titles":1863,"content":1864,"level":263},"\u002Fdocs\u002Fapi\u002Fwebhooks#verificar-la-firma","Verificar la firma",[201],"Cada request trae el header: Wagend-Signature: t=1791040867,v1=5c2b9f...e81 v1 es HMAC-SHA256(secreto, t + \".\" + body_crudo) en hexadecimal. Rechazá requests de más de 5 minutos y calculá la firma sobre el cuerpo crudo, sin volver a serializar el JSON. import crypto from 'node:crypto'\n\nexport function verifyWagend(rawBody: string, header: string, secret: string) {\n  const parts = Object.fromEntries(header.split(',').map((p) => p.split('=') as [string, string]))\n  const age = Math.abs(Date.now() \u002F 1000 - Number(parts.t))\n  if (!parts.t || !parts.v1 || age > 300) return false\n  const expected = crypto.createHmac('sha256', secret).update(`${parts.t}.${rawBody}`).digest('hex')\n  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1))\n} import hashlib, hmac, time\n\ndef verify_wagend(raw_body: bytes, header: str, secret: str) -> bool:\n    parts = dict(p.split(\"=\", 1) for p in header.split(\",\"))\n    if abs(time.time() - int(parts.get(\"t\", \"0\"))) > 300:\n        return False\n    signed = f\"{parts['t']}.\".encode() + raw_body\n    expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()\n    return hmac.compare_digest(expected, parts.get(\"v1\", \"\"))",{"id":1866,"title":1867,"titles":1868,"content":1869,"level":263},"\u002Fdocs\u002Fapi\u002Fwebhooks#reintentos","Reintentos",[201],"Respondé con cualquier 2xx en menos de 10 segundos. Si no, reintentamos a los 1 min, 5 min, 30 min, 2 h y 12 h. Cada intento se ve en el log de entregas, donde también podés reenviar a mano.",{"id":1871,"title":1872,"titles":1873,"content":1874,"level":263},"\u002Fdocs\u002Fapi\u002Fwebhooks#seguridad-y-límites","Seguridad y límites",[201],"La URL debe ser https y resolver a una dirección pública: rechazamos localhost, redes privadas, link-local y direcciones de metadatos de nube (al registrar y en cada entrega). No seguimos redirecciones (un 3xx cuenta como fallo).Headers extra: Wagend-Event (tipo) y Wagend-Delivery (id de la entrega). Cada intento se firma con un timestamp nuevo.Hasta 10 endpoints por workspace. Tras 10 fallos consecutivos el endpoint se desactiva (reactivalo con PATCH \u002Fv1\u002Fwebhook-endpoints\u002F{id} y {\"active\": true}).POST \u002Fv1\u002Fwebhook-endpoints\u002F{id}\u002Fping envía un evento de prueba webhook.ping; POST \u002Fv1\u002Fwebhook-endpoints\u002F{id}\u002Frotate-secret genera un secreto nuevo (se muestra una sola vez; el anterior deja de valer al instante).Con API key usá el scope webhooks:manage. El log está en GET \u002Fv1\u002Fwebhook-endpoints\u002F{id}\u002Fdeliveries y el reenvío en POST …\u002Fdeliveries\u002F{delivery_id}\u002Fresend. html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":206,"title":205,"titles":1876,"content":1877,"level":257},[],"Clientes tipados generados desde el contrato OpenAPI: cómo usarlos hoy desde el repositorio, con ejemplos de reserva, errores, paginación e idempotencia. Fiuit tiene dos SDK que se generan a partir del contrato packages\u002Fopenapi\u002Fopenapi.yaml, así que sus tipos siempre siguen la API. Los SDK todavía no están publicados en npm ni en PyPI (Próximamente). Hoy se usan desde el repositorio, como se explica abajo. Si preferís no depender de ellos, la API REST funciona con cualquier cliente HTTP.",{"id":1879,"title":1880,"titles":1881,"content":1882,"level":263},"\u002Fdocs\u002Fapi\u002Fsdks#typescript","TypeScript",[205],"El cliente (packages\u002Fsdk-ts) es un envoltorio liviano sobre fetch con tipos de todas las rutas.",{"id":1884,"title":1885,"titles":1886,"content":1887,"level":301},"\u002Fdocs\u002Fapi\u002Fsdks#instalar-desde-el-repositorio","Instalar desde el repositorio",[205,1880],"cd packages\u002Fsdk-ts\nnpm ci\nnpm run build          # genera dist\u002F En tu proyecto, instalalo desde esa carpeta: npm install \u002Fruta\u002Fa\u002Fwagendapp\u002Fpackages\u002Fsdk-ts",{"id":1889,"title":1890,"titles":1891,"content":1892,"level":301},"\u002Fdocs\u002Fapi\u002Fsdks#reservar-un-horario","Reservar un horario",[205,1880],"import { createWagendClient, WagendError } from \"@wagend\u002Fsdk\";\n\nconst api = createWagendClient({\n  baseUrl: \"https:\u002F\u002Fapi.fiuit.com\u002Fv1\",\n  apiKey: process.env.WAGEND_API_KEY!, \u002F\u002F wg_live_xxx\n});\n\ntry {\n  const { data: services } = await api.GET(\"\u002Fservices\");\n  const serviceId = services!.data![0].id!;\n\n  const { data: slots } = await api.GET(\"\u002Fslots\", {\n    params: { query: { service_id: serviceId, from: \"2026-10-15T08:00:00-03:00\", to: \"2026-10-15T13:00:00-03:00\" } },\n  });\n  const slot = slots!.data[0];\n\n  \u002F\u002F Pre-reserva de 10 minutos\n  const { data: hold } = await api.POST(\"\u002Fholds\", {\n    params: { header: { \"Idempotency-Key\": crypto.randomUUID() } },\n    body: { service_id: serviceId, start: slot.start, party_size: 1, resource_ids: slot.resource_ids },\n  });\n\n  \u002F\u002F Confirmación con los datos del cliente\n  const { data: booking } = await api.POST(\"\u002Fholds\u002F{id}\u002Fconfirm\", {\n    params: { path: { id: hold!.id! }, header: { \"Idempotency-Key\": crypto.randomUUID() } },\n    body: { customer: { name: \"Carlos\", phone: \"+5491155550000\", locale: \"es\" } },\n  });\n  console.log(booking!.status); \u002F\u002F \"confirmed\"\n} catch (err) {\n  if (err instanceof WagendError) {\n    console.error(err.status, err.code, err.retryAfter);\n  } else {\n    throw err;\n  }\n} Autenticación: el cliente agrega Authorization: Bearer solo.Idempotencia: en toda escritura agrega una Idempotency-Key si no pasás una. Para reintentar una operación, pasá vos la misma clave en los dos intentos (vale 24 horas). El tipo de TypeScript la declara en params.header para las rutas que la exigen.Errores: toda respuesta que no sea 2xx lanza WagendError con .status, .code, .problem (RFC 9457) y .retryAfter (segundos, en 429).",{"id":1894,"title":1772,"titles":1895,"content":1896,"level":301},"\u002Fdocs\u002Fapi\u002Fsdks#paginación",[205,1880],"let cursor: string | undefined;\ndo {\n  const { data: page } = await api.GET(\"\u002Fbookings\", { params: { query: { limit: 50, cursor } } });\n  for (const booking of page?.data ?? []) console.log(booking.id);\n  cursor = page?.next_cursor ?? undefined;\n} while (cursor);",{"id":1898,"title":1899,"titles":1900,"content":1901,"level":301},"\u002Fdocs\u002Fapi\u002Fsdks#clientes-y-acciones","Clientes y acciones",[205,1880],"\u002F\u002F Buscar y crear clientes (scopes customers:read y customers:write)\nconst { data: found } = await api.GET(\"\u002Fcustomers\", { params: { query: { q: \"carlos\" } } });\nawait api.POST(\"\u002Fcustomers\", { body: { name: \"Ana\", phone: \"+5491155551111\", tags: [\"vip\"] } });\n\n\u002F\u002F Ejecutar una acción de la etapa, por ejemplo asignar una entrega a un repartidor (scope bookings:write).\n\u002F\u002F \"atribuir\" es la clave de esa acción en el modelo de entregas.\nawait api.POST(\"\u002Fbookings\u002F{id}\u002Factions\u002F{key}\", {\n  params: { path: { id: taskId, key: \"atribuir\" }, header: { \"Idempotency-Key\": crypto.randomUUID() } },\n  body: { data: {}, resource_id: courierResourceId },\n}); Las claves de acción (key) las define la configuración de etapas de tu negocio: consultalas con available_actions.",{"id":1903,"title":1904,"titles":1905,"content":1906,"level":263},"\u002Fdocs\u002Fapi\u002Fsdks#python","Python",[205],"El cliente (packages\u002Fsdk-py) usa httpx y modelos Pydantic v2 generados.",{"id":1908,"title":1885,"titles":1909,"content":1910,"level":301},"\u002Fdocs\u002Fapi\u002Fsdks#instalar-desde-el-repositorio-1",[205,1904],"pip install \u002Fruta\u002Fa\u002Fwagendapp\u002Fpackages\u002Fsdk-py\n# o, con uv:\nuv pip install \u002Fruta\u002Fa\u002Fwagendapp\u002Fpackages\u002Fsdk-py",{"id":1912,"title":1890,"titles":1913,"content":1914,"level":301},"\u002Fdocs\u002Fapi\u002Fsdks#reservar-un-horario-1",[205,1904],"from datetime import UTC, datetime\nfrom wagend import Fiuit, WagendError\n\nwith Fiuit(\"https:\u002F\u002Fapi.fiuit.com\u002Fv1\", \"wg_live_xxx\") as api:\n    try:\n        service = api.list_services()[0]\n        slots = api.list_slots(\n            str(service.id), datetime(2026, 10, 15, 8, tzinfo=UTC), datetime(2026, 10, 15, 13, tzinfo=UTC)\n        )\n\n        hold = api.request(\n            \"POST\", \"\u002Fholds\",\n            json={\"service_id\": str(service.id), \"start\": slots[0].start.isoformat(), \"party_size\": 1},\n            idempotency_key=\"reserva-carlos-2026-10-15\",\n        )\n        booking = api.request(\n            \"POST\", f\"\u002Fholds\u002F{hold['id']}\u002Fconfirm\",\n            json={\"customer\": {\"name\": \"Carlos\", \"phone\": \"+5491155550000\"}},\n        )\n        print(booking[\"status\"])\n    except WagendError as err:\n        print(err.status, err.code, err.retry_after) list_services() y list_slots() devuelven modelos tipados. Para el resto de las rutas usá api.request(método, ruta, params=…, json=…); podés validar la respuesta con wagend.models.Idempotencia: las escrituras llevan Idempotency-Key (se genera una si no pasás idempotency_key). Reintentá con la misma clave.Errores: WagendError con .status, .code, .problem y .retry_after (en 429).Paginación: api.paginate(\"\u002Fbookings\", params={\"limit\": 50}) recorre todas las páginas. for booking in api.paginate(\"\u002Fbookings\", params={\"limit\": 50}):\n    print(booking[\"id\"])",{"id":1916,"title":1782,"titles":1917,"content":1918,"level":263},"\u002Fdocs\u002Fapi\u002Fsdks#límites-de-uso",[205],"El límite es por clave y por proyecto. Ante un 429, esperá retry_after \u002F retryAfter segundos antes de reintentar. Ver Convenciones.",{"id":1920,"title":1921,"titles":1922,"content":1923,"level":263},"\u002Fdocs\u002Fapi\u002Fsdks#regenerar-los-sdk","Regenerar los SDK",[205],"Si cambia el contrato, make sdk regenera los dos desde openapi.yaml y make sdk-check falla si quedaron desactualizados. html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":210,"title":209,"titles":1925,"content":1926,"level":257},[],"Todas las operaciones de la API v1 que aceptan una clave, generadas desde el contrato OpenAPI en el build del sitio. Esta página se genera en cada build desde packages\u002Fopenapi\u002Fopenapi.yaml (OpenAPI 3.1): no se escribe a mano. Incluye las operaciones que aceptan una clave de API, agrupadas por los temas del contrato. Las rutas que sólo aceptan la sesión del panel quedan fuera de esta referencia. Los nombres, resúmenes y descripciones de cada operación salen del contrato.",{"id":1928,"title":1929,"titles":1930,"content":1931,"level":263},"\u002Fdocs\u002Fapi\u002Freference#temas","Temas",[209],"TemasOperacionesslots1holds3bookings31booking-series6catalog37products19zones8payments79stats8customers22search1flows18comments8conversations14simulator7automations14platform25auth1knowledge19tenancy9site4notifications8prepaid13attachments4bot8feedback4help1",{"id":1933,"title":1934,"titles":1935,"content":1936,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fslots","API · slots",[],"Operaciones de slots del contrato OpenAPI que aceptan una clave de API.",{"id":1938,"title":1939,"titles":1940,"content":1941,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fslots#get-slots","GET \u002Fslots",[1934],"Horarios disponibles para un servicio Cruza todos los requisitos del servicio (profesional, máquina, sala…). Requiere slots:read. Un servicio desactivado responde 409 service_inactive y un resource_id desactivado 409 resource_inactive (no 404: existen, solo que no se pueden reservar). Usá day o from + to (uno u otro; si no, 422 invalid_slot_query). day es el día de apertura en la zona del negocio (F3-503): incluye los horarios de la noche que sigue después de las 00:00 (20:00 – 03:00 (+1)) y no la madrugada de ese día, que pertenece a la noche anterior. Un turno puede cruzar las 00:00 sin cortarse. Autenticación: Clave de API o sesión del panelScopes: slots:read Parámetros NombreEnObligatorioTipoDescripciónservice_idquerySístringdayqueryNostring (date)Día de apertura local (YYYY-MM-DD); sin from\u002Fto.fromqueryNostring (date-time)Con to; sin day.toqueryNostring (date-time)party_sizequeryNointeger default 1resource_idqueryNostringPreferencia (ej. un barbero)resource_idsqueryNoarrayCo-responsables activos elegibles; todos quedan ocupados aunque superen el mínimo del requisito. Intersección antes del límite de horarios. No combinar con resource_id (422). Tenant de la credencial y RLS.booking_idqueryNostring (uuid)Tarea visible del mismo tenant y servicio; excluye su propia ocupación (también pooled). Conserva la zona de la tarea; zone_id explícito diferente responde 422 invalid_slot_query. Si no se envían recursos conserva todos los actuales. Una tarea ajena responde 404.duration_minqueryNointegerDuración propia de la tarea en minutos (5–1440); reemplaza la del servicio en los requisitos sin duración propia. La agenda del panel la usa para pintar los huecos de un turno estirado o achicado.aroundqueryNostring (date-time)Hora preferida para ordenarlimitqueryNointeger default 20zone_idqueryNostringZona (F1-38): solo sus días y horas, cruzados con la disponibilidad de sus miembros y su tope por franja. Si está desactivada, consulta general como al reagendar; una zona inexistente o ajena devuelve 422 invalid_slot_queryintake_dataqueryNostringObjeto JSON codificado con el destino del formulario (dirección, CEP, barrio, coordenadas). Resuelve la zona con la misma regla de POST \u002Fholds y POST \u002Fbookings. No combinar con zone_id (422 intake_invalid). Sin contexto de destino\u002Fzone_id, consulta general del servicio. Mantiene slots:read y tenant de la credencial. Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":1943,"title":1944,"titles":1945,"content":1946,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fholds","API · holds",[],"Operaciones de holds del contrato OpenAPI que aceptan una clave de API.",{"id":1948,"title":1949,"titles":1950,"content":1951,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fholds#post-holds","POST \u002Fholds",[1944],"Crear una pre-reserva (hold) de 10 minutos La misma Idempotency-Key conserva el conjunto pedido, también en replays concurrentes del core. Otro conjunto responde 422 idempotency_conflict; el orden de recursos no altera el payload. 409 membership_blocked si el cliente tiene la membresía que cubre ese servicio bloqueada por impago (plan en el cuerpo; se libera al pagar la cuota). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: HoldCreate Respuestas EstadoDescripción201Creado (Booking)409Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":1953,"title":1954,"titles":1955,"content":1956,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fholds#delete-holdsid","DELETE \u002Fholds\u002F{id}",[1944],"Liberar un hold Cancelar nunca se bloquea (F3-181, decisión del dueño 2026-10-09). Con etapas v2, liberar una tarea held\u002Fpending_payment no exige los datos de la etapa cancelada ni de la salida «cancelar». Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204LiberadodefaultError (RFC 9457) (Problem)",{"id":1958,"title":1959,"titles":1960,"content":1961,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fholds#post-holdsidconfirm","POST \u002Fholds\u002F{id}\u002Fconfirm",[1944],"Confirmar un hold (o pasarlo a pending_payment si requiere seña) Serializa la confirmación con reinicios de configuración. Un hold pendiente cuyo servicio está inactivo responde 409 service_inactive; una confirmación ya comprometida conserva su replay idempotente. Confirmar para otro cliente (customer_id) cuya membresía que cubre ese servicio está bloqueada por impago responde 409 membership_blocked. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: HoldConfirm Respuestas EstadoDescripción200OK (Booking)409Error (RFC 9457) (Problem)410Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":1963,"title":1964,"titles":1965,"content":1966,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings","API · bookings",[],"Operaciones de bookings del contrato OpenAPI que aceptan una clave de API.",{"id":1968,"title":1969,"titles":1970,"content":1971,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-bookings","GET \u002Fbookings",[1964],"Listar reservas Por defecto from\u002Fto filtran por el inicio de la reserva (from \u003C= inicio \u003C to). Con overlap=true devuelven toda reserva que ocupa parte del rango (inicio \u003C to y fin > from): una tarea que empezó antes y sigue dentro también entra. El orden y el cursor siguen siendo por inicio. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónfromqueryNostring (date-time)toqueryNostring (date-time)overlapqueryNoboolean default falsetrue: from\u002Fto filtran por solapamiento (inicio \u003C to y fin > from) en vez de por inicio. Por defecto false.include_carriedqueryNoboolean default falseF3-573 (arrastre): con from\u002Fto, suma las tareas iniciadas que pasaron su fin y siguen ocupando su lugar en el rango (servicio de día completo o que no pide una persona, hasta 7 días después de su fin), aunque hayan empezado antes. Vienen con carried_over=true. Misma regla que GET \u002Fslots. Las reglas de visibilidad (staff) no cambian. Por defecto false: el listado no cambia.feesqueryNostring all, due default allFIU-510 · Tareas-cuota de las suscripciones. all (por defecto) las lista todas. due deja solo las por cobrar vencidas o dentro de su aviso (notice_days del plan) y saca las pagadas, las perdonadas y las de cobro automático al día (vuelven si el cobro falla o no llega). Es la vista de Hoy y Trabajo del panel, de Wagy y del MCP (list_tasks). Solo filtra: no cambia montos ni estados.scheduling_statequeryNopending, scheduled, queuestatusqueryNoBookingStatusresource_idqueryNostringcustomer_idqueryNostringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (BookingPage)defaultError (RFC 9457) (Problem)",{"id":1973,"title":1974,"titles":1975,"content":1976,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-bookings","POST \u002Fbookings",[1964],"Crear una tarea programada, de cola o pendiente de horario schedule_later=true sólo para servicios scheduled: owner\u002Fmanager o API key bookings:write. Crea pending_schedule sin allocations, vencimiento ni cobro; resource_ids son asignaciones operativas. false mantiene el alta legacy: scheduled requiere start, queue permite ventana opcional. Tenant desde credencial; misma clave y cuerpo devuelve el mismo ID aun tras programarlo; cuerpo distinto devuelve 422 idempotency_conflict. 409 membership_blocked si el cliente tiene la membresía que cubre ese servicio bloqueada por impago (plan en el cuerpo; se libera al pagar la cuota).\nCon flow_id en lugar de service_id (F3-457, ADR 0040 §4.3) crea una tarea sin servicio de un flujo por intención (reclamo, presupuesto): subject.type=intent, confirmada, en cola, sin horario, sin capacidad y sin monto (POST \u002Fv1\u002Fpayments\u002Fbookings\u002F{id}\u002Fdue lo fija; se cobra como cualquier tarea). Mismo permiso (tasks:create, API key bookings:write). 404 si el flujo no existe; 422 flow_not_intent si no es por intención, está desactivado o no es de cola. Emite booking.created (no booking.confirmed: no avisa confirmación al cliente). Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: BookingCreate Respuestas EstadoDescripción201Creado (Booking)409Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":1978,"title":1979,"titles":1980,"content":1981,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-bookingsid","GET \u002Fbookings\u002F{id}",[1964],"Detalle de reserva Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Booking)defaultError (RFC 9457) (Problem)",{"id":1983,"title":1984,"titles":1985,"content":1986,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#patch-bookingsid","PATCH \u002Fbookings\u002F{id}",[1964],"Editar una reserva (cliente, servicio, recurso, personas, seña, notas, intake) Edición con las mismas garantías del motor (F1-27): una sola transacción con la reserva bloqueada, todo o\nnada, auditada con diff sin datos personales y con el evento booking.updated. Todos los campos son\nopcionales y null equivale a \"no tocar\". Permisos. owner, manager y API key con bookings:write: todos los campos. staff: solo notes e\nintake_data de reservas de SUS recursos (otro campo ⇒ 403 edit_forbidden; reserva ajena ⇒ 404).\nviewer ⇒ 403. El workspace sale siempre de la credencial.Idempotency-Key. Opcional si el cuerpo trae solo notes\u002Fintake_data (compatibilidad con v1);\nobligatorio para cualquier otro campo (422 idempotency_key_required). Misma clave + mismo cuerpo\ndevuelve la reserva sin volver a ejecutar; con otro cuerpo, 422 idempotency_conflict.Estados terminales (completada, cancelada, ausencia, fallida, vencida): solo notes y datos de\ncontacto; el resto ⇒ 409 booking_not_editable.Servicio, recurso y personas se revalidan con el motor de slots sobre el MISMO horario (grilla,\nhorario del recurso, requisitos, capacidad pooled y EXCLUDE); no se re-aplican lead time, anticipación\nmáxima ni cutoff. Sin lugar ⇒ 409 slot_taken (con reasons) y no queda ningún cambio. Cambiar de\nservicio conserva al mismo recurso si sigue sirviendo. No se cambia entre servicios con horario y de\ncola (422 service_mode_mismatch). En cola, el recurso nuevo respeta el tope de tareas activas\n(409 queue_full; 422 resource_not_eligible si no es del grupo del servicio).Seña. Ya paga: no se admite un cambio de servicio o de personas que altere su monto\n(409 deposit_locked). Pendiente: rige el monto nuevo y, si pasa a 0, la reserva se confirma.\nLa seña se cobra con POST \u002Fpayments\u002Fmanual (cobro unificado, F3-492: forma de pago y auditoría);\neditar la reserva ya no la marca pagada.Paquete o club (F3-261). Una tarea que usa una unidad de un plan no cambia de cliente ni de servicio\n(409 booking_covered_by_plan): primero se le quita el plan (POST \u002Fprepaid\u002Fbookings\u002F{booking_id}\u002Frelease).Cliente. customer_id reasigna a otro cliente existente del workspace (404 si no existe o es de\nprueba; las reservas de prueba no cambian de cliente: 422 test_booking_locked). customer corrige\nnombre, teléfono, email e idioma de la ficha (un teléfono de otro cliente ⇒ 409\ncustomer_phone_taken). La auditoría enmascara teléfono, email y nombre.Revisar dirección (F3-151). destination_review_action: confirm es una declaración explícita del\neditor autorizado, también si los valores son los mismos. Requiere expected_version (omitida ⇒ 422)\ny destino con texto más par de coordenadas finito\u002Fen rango (422 intake_invalid, reason\ndestination_review_requires_point). Resuelve sólo revisar-direccion, atómicamente y con auditoría,\nsin validar geocodificación externa; notas, coordenadas o PATCH tags sin esa acción no la resuelven.\nSe gobierna por la misma autorización de intake_data, incluido staff de SUS recursos y API key\nbookings:write; no habilita acciones autónomas del LLM. No exige Idempotency-Key por sí sola.Concurrencia. expected_version opcional salvo esa acción: si cambió ⇒ 409 version_conflict.Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderNostringObligatorio salvo que el cuerpo traiga solo notes\u002Fintake_data. Cuerpo de la solicitud (opcional) application\u002Fjson: BookingPatch Respuestas EstadoDescripción200Reserva tras la edición (sin cambios si el cuerpo no modifica nada) (Booking)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)410Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":1988,"title":1989,"titles":1990,"content":1991,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-bookingsidcancel","POST \u002Fbookings\u002F{id}\u002Fcancel",[1964],"Cancelar Cancelar nunca se bloquea (F3-181, decisión del dueño 2026-10-09). Con etapas v2 no exige los datos de la etapa cancelada ni los ítems de la salida «cancelar»; para registrarlos, usar POST \u002Fwork-items\u002F{id}\u002Ftransitions\u002F{stage}, donde son opcionales. Cancelar una tarea principal cancela también sus tareas vinculadas que todavía no empezaron (motivo case_cancelled, F3-585); las que están en curso siguen. Para avisar antes, leer pending_ids de GET \u002Fbookings\u002F{id}\u002Fcase. Reprogramar no cancela el caso. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (opcional) application\u002Fjson: object Respuestas EstadoDescripción200OK (Booking)defaultError (RFC 9457) (Problem)",{"id":1993,"title":1994,"titles":1995,"content":1996,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-bookingsidcase","GET \u002Fbookings\u002F{id}\u002Fcase",[1964],"Caso de una tarea: sus tareas vinculadas y qué las traba F3-585 (versión liviana): la tarea que reservó el cliente es el caso y sus tareas vinculadas son tareas normales. Se pide por la principal o por cualquier vinculada y devuelve lo mismo. Una tarea sin vinculadas es un caso vacío (tasks: []). Una vinculada está trabada (blocked) mientras la que la bloquea no se completó. Mismo alcance que GET \u002Fbookings\u002F{id}: staff solo pide el caso de una tarea suya (si no, 404), y entonces ve todas las vinculadas del caso. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Case)defaultError (RFC 9457) (Problem)",{"id":1998,"title":1999,"titles":2000,"content":2001,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#put-bookingsiditems","PUT \u002Fbookings\u002F{id}\u002Fitems",[1964],"Editar los productos del pedido de una tarea (cantidades, agregar, quitar) Campo «Productos» del formulario (F3-148): reemplazo completo e idempotente de las líneas de\nintake_data.items. Cada línea del cuerpo es solo {product_id, qty}; nombre, unidad y precio unitario\n(unit_price_minor, unidad menor de la moneda) los copia el servidor del catálogo AL CREAR la línea y una\nlínea existente los conserva (cambiar el catálogo no altera pedidos). qty_requested (lo pedido) no\ncambia: una línea agregada después de crear la tarea queda con qty_requested: 0. El servidor recalcula\nitems_total y el total del formulario con la definición cotizada de la tarea. Permisos (matriz única): order:edit (owner, manager; API key con bookings:write) agrega, quita y\ncambia cantidades en tareas no cerradas (no en cancelled, expired, failed, no_show ⇒ 409\norder_not_editable). order:edit_own (staff): solo en tareas asignadas a sus recursos (si no, 404) y en\ncurso (checked_in; si no, 409 order_not_editable con reason: not_in_progress), solo cantidades\n(incluso 0) y productos que el servicio ofrece, sin quitar líneas (403 order_forbidden), y solo si el\ndueño encendió staff_can_edit_order (apagado por defecto; si no, 403). viewer ⇒ 403.Catálogo. Una línea nueva exige un producto activo, del negocio y ofrecido por el servicio\n(422 order_invalid con reason: product_unavailable) y al menos una unidad; sin productos repetidos\n(duplicate_product); rangos del campo (qty_range, lines_range, units_range); sin campo «Productos»\nen la tarea ⇒ no_items_field.Valor a cobrar. Si ya estaba congelado (due_minor), el servidor lo ajusta en la MISMA transacción\npor la diferencia del cálculo (respeta un ajuste manual previo), con motivo «cambio de pedido» y autor =\nquien editó, auditado (payment.due_adjusted); no exige payments:adjust. Si lo ya cobrado supera el\nnuevo valor ⇒ 409 order_below_paid (con paid_minor y due_minor) y no cambia nada: lo resuelve un\nmanager. Con API key, leer lo cobrado exige además payments:read_balance.Auditoría booking.order_changed con ids de producto, cantidades y totales (sin datos personales).Concurrencia. expected_version opcional: si la reserva cambió ⇒ 409 version_conflict. PATCH \u002Fbookings\u002F{id} no cambia los ítems (salvo en un hold): un intake_data con otras cantidades ⇒ 422\norder_invalid con reason: use_items_endpoint; si no trae items, se conservan los guardados. Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: OrderItemsIn Respuestas EstadoDescripción200La tarea con el pedido actualizado (sin cambios si las líneas son las mismas) (Booking)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2003,"title":2004,"titles":2005,"content":2006,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-bookingsidmessage","POST \u002Fbookings\u002F{id}\u002Fmessage",[1964],"Mensaje operativo al cliente de la tarea F3-115. Resuelve conversación y canal en el servidor y reutiliza el envío manual del Inbox: persiste una salida pending (outbox durable), deja la conversación en modo humano, crea la conversación si no existía y registra booking.message_sent en la línea de tiempo de la tarea (solo el canal, nunca el texto). Es un mensaje OPERATIVO: el opt-out de promociones no lo bloquea; la pausa de canal sí (409 no_message_channel). Idempotency-Key obligatoria (24 h para sesión de panel; una clave con otro texto u opción devuelve 422). Rate limit por usuario (429 rate_limited, por defecto 6 por minuto). Roles owner, manager y staff (solo sus tareas, si no 404); viewer 403. Scope de API key messages:write. Autenticación: Clave de API o sesión del panelScopes: messages:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)Idempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: TaskMessageIn Respuestas EstadoDescripción201Persistido, pendiente de despacho durable (TaskMessageOut)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2008,"title":2009,"titles":2010,"content":2011,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-bookingsidmessage-options","GET \u002Fbookings\u002F{id}\u002Fmessage-options",[1964],"Canales por los que escribirle al cliente de la tarea F3-115. El servidor elige: la conversación vinculada a la tarea (origin), si no la última conversación del cliente, si no un canal nuevo con sus datos de contacto (WhatsApp si tiene teléfono y hay uno conectado, email si tiene email y Resend está activo). default_key es la primera opción sin bloqueo; blocked explica por qué una opción no se puede usar (pausa de canal, conexión caída, cliente de prueba). Sin opciones, unavailable_reason dice por qué. Roles owner, manager y staff (solo tareas asignadas a sus recursos, si no 404); viewer 403. Scope de API key messages:read. Autenticación: Clave de API o sesión del panelScopes: messages:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Opciones de envío (TaskMessageOptions)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)",{"id":2013,"title":2014,"titles":2015,"content":2016,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-bookingsidreschedule","POST \u002Fbookings\u002F{id}\u002Freschedule",[1964],"Reprogramar (crea una reserva nueva y cancela la anterior) La pausa del servicio no bloquea reprogramar una tarea existente. Conserva validaciones de horario, recursos y capacidad; si falla, la tarea original queda intacta. No habilita reservas nuevas ni oferta de slots. Con etapas v2 no se bloquea por los datos de la etapa cancelada, porque cancelar nunca se bloquea (F3-181). Staff solo mueve sus turnos y solo a sus propias agendas (403 reschedule_forbidden si no). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200Nueva reserva (Booking)defaultError (RFC 9457) (Problem)",{"id":2018,"title":2019,"titles":2020,"content":2021,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-bookingsidschedule","POST \u002Fbookings\u002F{id}\u002Fschedule",[1964],"Programar o cambiar ventana sin cambiar el ID Owner\u002Fmanager o API key bookings:write, CSRF para sesión. Tenant desde credencial. Clave obligatoria, operación+cuerpo con huella durable; replay no incrementa versión. expected_version stale devuelve 409 version_conflict. Tareas terminales y holds técnicos con expires_at devuelven 409 booking_not_editable. Pending scheduled no consume capacidad: schedule valida horario\u002Frequisitos\u002Frecursos\u002Fzona con el motor y sus constraints. Unschedule mantiene estado operativo, pagos\u002Fvencimientos y asignación real sin capacidad. Queue conserva contador\u002Fis_queue aunque tenga ventana; no ocupa capacidad horaria. Pausar el servicio no bloquea operaciones sobre tareas existentes; se mantienen validaciones de horario, recursos y capacidad. Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: ScheduleBookingIn Respuestas EstadoDescripción200Tarea actualizada o replay (Booking)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2023,"title":2024,"titles":2025,"content":2026,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-bookingsidunschedule","POST \u002Fbookings\u002F{id}\u002Funschedule",[1964],"Quitar horario conservando ejecución, pago y asignación Owner\u002Fmanager o API key bookings:write, CSRF para sesión. Tenant desde credencial. Clave obligatoria, operación+cuerpo con huella durable; replay no incrementa versión. expected_version stale devuelve 409 version_conflict. Tareas terminales y holds técnicos con expires_at devuelven 409 booking_not_editable. Pending scheduled no consume capacidad: schedule valida horario\u002Frequisitos\u002Frecursos\u002Fzona con el motor y sus constraints. Unschedule mantiene estado operativo, pagos\u002Fvencimientos y asignación real sin capacidad. Queue conserva contador\u002Fis_queue aunque tenga ventana; no ocupa capacidad horaria. Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: UnscheduleBookingIn Respuestas EstadoDescripción200Tarea actualizada o replay (Booking)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2028,"title":2029,"titles":2030,"content":2031,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-conversationsidwork-items","GET \u002Fconversations\u002F{id}\u002Fwork-items",[1964],"Tareas (reservas) creadas desde una conversación Las reservas cuyo origen es esta conversación (0, 1 o N), de la más reciente a la más antigua. No incluye holds sin confirmar ni vencidos. Un usuario staff solo ve las de sus recursos. Conversación inexistente, de otro workspace o (rol staff, F2-52) de un cliente sin tareas suyas: 404. API keys: scope bookings:read, solo GET (ADR 0017). Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2033,"title":2034,"titles":2035,"content":2036,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-task-linessuggestions","GET \u002Ftask-lines\u002Fsuggestions",[1964],"Buscador de «+ Agregar»: catálogo y ítems usados antes Un solo buscador (decisión 3): productos y servicios activos del catálogo y, después, los ítems libres usados antes en el negocio (source: memory, último precio y, a quien tiene tasks:costs (por defecto el dueño), último costo; suggest_save desde el tercer uso). Permiso tasks:edit_lines; API key bookings:read. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónqquerySístring Respuestas EstadoDescripción200Successful Response (LineSuggestions)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2038,"title":2039,"titles":2040,"content":2041,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-items","GET \u002Fwork-items",[1964],"Consulta unificada de tareas Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónfeesqueryNostring all, due default allFIU-510 · Tareas-cuota de las suscripciones. all (por defecto) las lista todas. due deja solo las por cobrar vencidas o dentro de su aviso (notice_days del plan) y saca las pagadas, las perdonadas y las de cobro automático al día (vuelven si el cobro falla o no llega). Es la vista de Hoy y Trabajo del panel, de Wagy y del MCP (list_tasks). Solo filtra: no cambia montos ni estados.scheduling_statequeryNopending, scheduled, queuemin_latqueryNonumber \u002F null (null)Inclusive geographic box; supply all four bounds together, minimum \u003C= maximum.max_latqueryNonumber \u002F null (null)Inclusive geographic box; supply all four bounds together, minimum \u003C= maximum.min_lngqueryNonumber \u002F null (null)Inclusive geographic box; supply all four bounds together, minimum \u003C= maximum.max_lngqueryNonumber \u002F null (null)Inclusive geographic box; supply all four bounds together, minimum \u003C= maximum.statusqueryNostring \u002F null (null)base_statequeryNostring \u002F null (null)Estado base fijo (ADR 0023, F1-37), el que usan filtros, estadísticas y mapa: pending (held, pending_payment, confirmed), in_progress (checked_in), completed, cancelled (cancelled, expired), absent (no_show), refused (failed). No depende del nombre de la etapa.stagequeryNostring \u002F null (null)resource_idqueryNostring \u002F null (null)customer_idqueryNostring \u002F null (null)fromqueryNostring \u002F null (null)toqueryNostring \u002F null (null)created_fromqueryNostring \u002F null (null)Desde cuándo entró la tarea (created_at, incluido; F3-729). Independiente de from\u002Fto, que miran la fecha de trabajo. Con created_from o created_to no entran los holds sin concretar (held, expired), como en el conteo del uso del flujo.created_toqueryNostring \u002F null (null)Hasta cuándo entró la tarea (created_at, excluido; F3-729). Debe ser posterior a created_from (422).minequeryNoboolean \u002F null (null)Solo lo asignado a los recursos propios de quien consulta, sin lo que solo podría tomar (F3-729): el alcance own del uso de un flujo, para que el link de un día traiga lo mismo que se contó.priorityqueryNostring \u002F null (null)tagqueryNostring \u002F null (null)typequeryNostring \u002F null (null)flow_idqueryNostring \u002F null (null)Tareas de ese flujo (F3-33). Con group_by=stage, groups trae todas las etapas activas del flujo en su orden (también las vacías, con count 0), con label y position.statusesqueryNoarray\u003CBookingStatus> \u002F null (null)Tareas en alguno de esos estados (repetí el parámetro). Se combina con status; los conteos de groups, total y la paginación salen de la misma selección (F3-33).resource_idsqueryNoarray \u002F null (null)Tareas de alguno de esos recursos (repetí el parámetro), p. ej. «Mías» con varias agendas. Se combina con resource_id; un staff solo alcanza sus recursos (F3-33).fulfillment_modequeryNostring \u002F null (null)unassignedqueryNoboolean \u002F null (null)true lista solo el trabajo que nadie tiene (sin recurso asignado): el conjunto \"Sin asignar\". Un staff ve ahí lo que puede tomar (servicios cuyo grupo incluye alguno de sus recursos); false lista lo ya asignado.attentionqueryNostring \u002F null (null)Selección compartida con los contadores de Control. Sin fechas implícitas; se combina con los demás filtros mediante AND. Avisos, dirección y cobertura solo incluyen abiertas; sin zona excluye fuera de cobertura; sin asignar excluye holds asignados. Evaluaciones incluye finales.overlapqueryNoboolean default falseIncluye tareas cuya ventana cruza el rango aunque empiecen antes de from. Sin ventana usa el plazo.include_carriedqueryNoboolean default falseF3-573 (arrastre): con from\u002Fto, suma las tareas iniciadas que pasaron su fin y siguen ocupando su lugar en el rango (servicio de día completo o que no pide una persona, hasta 7 días después de su fin), aunque hayan empezado antes. Vienen con carried_over=true. Misma regla que GET \u002Fslots. Las reglas de visibilidad (staff) no cambian. Por defecto false: el listado no cambia.latequeryNoboolean \u002F null (null)true lista solo las tareas atrasadas (fechadas, en etapa no final, con el fin de la ventana más late_grace_min vencidos); false lista el resto. Combinable con las vistas, p. ej. view=today.zone_idqueryNostring \u002F null (null)Tareas de esa zona (F1-38).no_zonequeryNoboolean \u002F null (null)true lista las tareas vivas con destino que ninguna zona cubre (solo si el negocio tiene zonas): lo que aparece en \"Necesita tu atención\". false las excluye.originqueryNostring \u002F null (null)sourcequeryNostring \u002F null (null)openqueryNoboolean \u002F null (null)true lista solo las tareas abiertas (ni completed, cancelled, expired, no_show ni failed) de cualquier día; false lista solo las terminadas o canceladas. Es lo que usa «Pendientes» de Hoy.untilqueryNostring \u002F null (null)Solo con open=true: deja las tareas fechadas antes de este instante (exclusivo) y también las que no tienen fecha (por agendar, cola sin plazo). A diferencia de to, no excluye lo que no tiene fecha.qqueryNostring \u002F null (null)Búsqueda literal sin comodines sobre nombre canónico y traducciones persistidas del servicio, notas, etiquetas e ID de tareas visibles; independiente del idioma del panel.matchqueryNostring \u002F null (null)FIU-560 · Lo que filtra una vista de Trabajo (criterios v2), como JSON (WorkItemMatch, hasta 4096 caracteres): estado de selección múltiple, fecha con su campo y rango relativo, y grupos «o» (any_of). La fecha relativa se resuelve en la zona horaria del proyecto al pedir la primera página (el cursor conserva ese instante). Se combina con AND con el resto de los parámetros. Inválido: 422.order_byqueryNostring start, due, priority, created, completed default startdirectionqueryNostring asc, desc default ascgroup_byqueryNostring \u002F null (null)Conteos por grupo en groups. flow agrupa por flujo (con el nombre del flujo en label).viewqueryNostring all, inbox, today, upcoming default alllimitqueryNointeger default 25cursorqueryNostring \u002F null (null) Respuestas EstadoDescripción200Successful Response (WorkItemPage)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2043,"title":2044,"titles":2045,"content":2046,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-itemsid","GET \u002Fwork-items\u002F{id}",[1964],"Tarea y próximos pasos autorizados Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Booking)defaultError (RFC 9457) (Problem)",{"id":2048,"title":2049,"titles":2050,"content":2051,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#patch-work-itemsid","PATCH \u002Fwork-items\u002F{id}",[1964],"Editar metadata de tarea Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: WorkItemPatch Respuestas EstadoDescripción200Successful Response (Booking)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2053,"title":2054,"titles":2055,"content":2056,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-itemsidjourney","GET \u002Fwork-items\u002F{id}\u002Fjourney",[1964],"Recorrido completo de una tarea con sus versiones históricas Solo equipo autorizado (tasks:read y alcance de tareas, incluido historial terminado); API key bookings:read. Eventos cronológicos sin el límite de 100 del stage-history, y mapas v2 de las versiones registradas. Nunca sustituye una versión ausente por la vigente. Sin mutaciones ni acceso mediante enlaces de cliente. Autenticación: Clave de API o sesión del panelScopes: tasks:read, bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Eventos y versiones del flujo de esta tarea, bajo RLS del proyecto (WorkItemJourney)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2058,"title":2059,"titles":2060,"content":2061,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-itemsidlines","GET \u002Fwork-items\u002F{id}\u002Flines",[1964],"Ítems de la tarea, bloques del presupuesto y margen Permiso tasks:edit_lines (el viewer y el colaborador no ven dinero; staff: solo tareas asignadas a sus recursos, si no 404); API key bookings:read. margin y cost_minor solo para quien tiene tasks:costs (FIU-597: por defecto solo el dueño; API key con payments:read_balance); los demás ven solo el costo de las líneas que cargaron. awaiting_approval_minor: lo que no se cobra hasta que el cliente apruebe el presupuesto actualizado. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (TaskLinesOut)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2063,"title":2064,"titles":2065,"content":2066,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidlines","POST \u002Fwork-items\u002F{id}\u002Flines",[1964],"Agregar un ítem a la tarea (del catálogo o libre) Del catálogo (product_id o service_id): nombre y precio se copian del catálogo. Libre (name,\nkind, unit_price_minor): sin producto oculto; save_to_catalog lo guarda como producto o servicio.\nSube el valor a cobrar exactamente el subtotal de la línea. Idempotente por tarea; auditado. FIU-472 (ADR 0040 §3, decisiones 1A a 5A). Exactamente uno de product_id, service_id (catálogo: nombre y precio copiados, un precio enviado se ignora) o name (ítem libre: kind y unit_price_minor obligatorios; sin producto oculto). cost_minor opcional: el cliente nunca lo ve y no entra en Dinero (solo el margen). save_to_catalog: crea el producto (o el servicio, como el de la tarea) sin que el bot lo ofrezca; exige products:write\u002Fcatalog:write (403 line_forbidden, reason: catalog_forbidden). Sube el valor a cobrar exactamente el subtotal de la línea (motivo «ítems de la tarea»); con un presupuesto aceptado, nace el actualizado para aprobar. Permiso tasks:edit_lines; API key bookings:write. Idempotente por tarea (Idempotency-Key; otro cuerpo con la misma clave: 422 idempotency_conflict; un reintento responde 200 con replay: true). Auditada (booking.line_added). Errores: 404; 409 line_not_editable (reason: status, completed, covered_by_plan, due_negative), version_conflict; 422 line_invalid (reason: product_unavailable, service_unavailable, lines_range, catalog_duplicate, catalog_service_needs_team). Autenticación: Clave de API o sesión del panelScopes: products:write, catalog:write, bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)Idempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: LineAddIn Respuestas EstadoDescripción201Successful Response (TaskLinesOut)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2068,"title":2069,"titles":2070,"content":2071,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#patch-work-itemsidlinesline_id","PATCH \u002Fwork-items\u002F{id}\u002Flines\u002F{line_id}",[1964],"Editar un ítem de la tarea De una línea del catálogo cambian la cantidad y el costo (otro campo: 422 line_invalid, reason: catalog_line_fixed); de una libre, también nombre, tipo, unidad y precio. cost_minor: null borra el costo. Mueve el valor a cobrar la diferencia; si lo ya cobrado quedaría por encima, 409 order_below_paid y nada cambia. Staff: solo las líneas que cargó (403 line_forbidden, reason: not_own_line). Idempotente; auditada (booking.line_changed). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)line_idpathSístring (uuid)Idempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: LineEditIn Respuestas EstadoDescripción200Successful Response (TaskLinesOut)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2073,"title":2074,"titles":2075,"content":2076,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#delete-work-itemsidlinesline_id","DELETE \u002Fwork-items\u002F{id}\u002Flines\u002F{line_id}",[1964],"Quitar un ítem de la tarea Baja el valor a cobrar el subtotal de la línea; si lo ya cobrado quedaría por encima, 409. Baja el valor a cobrar el subtotal de la línea; si lo ya cobrado quedaría por encima, 409 order_below_paid (paid_minor, due_minor) y nada cambia. Idempotente; auditada (booking.line_removed). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)line_idpathSístring (uuid)expected_versionqueryNointeger \u002F null (null)Idempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Respuestas EstadoDescripción200Successful Response (TaskLinesOut)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2078,"title":2079,"titles":2080,"content":2081,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidofferskey","POST \u002Fwork-items\u002F{id}\u002Foffers\u002F{key}",[1964],"Aceptar una oferta de la etapa actual («Ofrecer…») F3-461 (ADR 0040 §3). Acepta el ítem offer key de la etapa actual de la tarea (visible al equipo). product: suma la línea a esta tarea con nombre, unidad y precio copiados del catálogo (un precio enviado se ignora) y sube su valor a cobrar (ajuste con motivo «oferta aceptada»; en una tarea con «Productos» en el formulario, el mismo recálculo que PUT \u002Fbookings\u002F{id}\u002Fitems). service: crea otra tarea independiente de ese servicio para el mismo cliente (origin.type: offer, origin.booking_id); si el servicio tiene horario, nace por agendar (pending_schedule) y se agenda con POST \u002Fbookings\u002F{id}\u002Fschedule. plan (F3-463): vende el plan al cliente de la tarea con la venta del panel (además prepaid:sell; sin él, 403 offer_forbidden con reason: prepaid_sell): nace la suscripción con su cuota 1, el alta, Por cobrar (created_work_item, origin.type: offer); un plan que ya no se puede vender da 422 offer_item_unavailable con el motivo de prepaid. Sin cascadas: cancelar una de las dos tareas no toca la otra. Idempotente por tarea con Idempotency-Key (otro cuerpo con la misma clave: 422 idempotency_conflict). Auditada (booking.offer_accepted, con la etapa y la clave del ítem). Permiso tasks:accept_offer (owner, manager y staff en tareas asignadas a sus recursos, solo con «El repartidor puede modificar el pedido» encendido: si no, 403 offer_forbidden); API key con bookings:write. Un servicio con ficha obligatoria pide intake_data (si falta, 422 invalid_intake). Errores: 404 offer_not_found; 409 offer_not_available (reason: status, kind, covered_by_plan); 422 offer_item_unavailable (reason: item_required, not_offered, qty_range, intake_not_allowed, qty_not_allowed). Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)keypathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: OfferAcceptIn Respuestas EstadoDescripción200La tarea (con lo sumado), la tarea que nació (si el ítem ofrece un servicio o un plan) y el registro (OfferAcceptResult)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2083,"title":2084,"titles":2085,"content":2086,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-itemsidquote","GET \u002Fwork-items\u002F{id}\u002Fquote",[1964],"Presupuesto de la tarea: lo de ahora y sus revisiones Los bloques de ahora (Mano de obra \u002F Servicios y Materiales \u002F Productos, con subtotales que suman el valor a cobrar) y las revisiones del presupuesto. Permiso tasks:edit_lines; API key bookings:read. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (QuotesOut)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2088,"title":2089,"titles":2090,"content":2091,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidquote","POST \u002Fwork-items\u002F{id}\u002Fquote",[1964],"Mandar el presupuesto al cliente El cliente lo recibe por su canal, en dos bloques con subtotales. Queda esperando su respuesta. Decisión 5A. Crea una revisión pending con los bloques de ahora (sin costos) y la manda al cliente por su canal (aviso transaccional task_quote, que se relee antes de salir). La pendiente anterior queda superseded. Idempotente con Idempotency-Key (200 replay: true). 409 quote_not_sendable (reason: status, internal_task). Permiso tasks:edit_lines; API key bookings:write. Auditada (booking.quote_sent). Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)Idempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Respuestas EstadoDescripción201Successful Response (QuoteResult)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2093,"title":2094,"titles":2095,"content":2096,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidquoterevisiondecision","POST \u002Fwork-items\u002F{id}\u002Fquote\u002F{revision}\u002Fdecision",[1964],"Registrar la respuesta del cliente al presupuesto Aprobado: lo aprobado pasa a ser este total y la diferencia ya se puede cobrar. Rechazado: la\ndiferencia sigue sin cobrarse hasta que el equipo corrija y el cliente apruebe otra revisión. Registra la respuesta del cliente a la revisión pendiente (via: customer_channel, in_person, phone). Aprobada: su total pasa a ser lo aprobado y la diferencia ya se cobra; mientras haya una revisión pendiente después de una aprobada, la parte del valor a cobrar por encima de lo aprobado no sale por link, QR, Point ni tarjeta, ni se imputa un cobro manual (409 payment.quote_pending); rechazar la revisión tampoco libera la diferencia. Repetir la misma respuesta no cambia nada; 409 quote_not_pending si la revisión ya no espera respuesta. Auditada (booking.quote_accepted \u002F booking.quote_rejected). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)revisionpathSíinteger Cuerpo de la solicitud (obligatorio) application\u002Fjson: QuoteDecisionIn Respuestas EstadoDescripción200Successful Response (QuoteResult)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2098,"title":2099,"titles":2100,"content":2101,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidreopen","POST \u002Fwork-items\u002F{id}\u002Freopen",[1964],"Reabrir una tarea completada, cancelada o ausente Permiso tasks:reopen (owner\u002Fmanager); API key con bookings:write y creador que siga siendo miembro activo owner\u002Fmanager con tasks:reopen en cada llamada y replay (también MCP); degradado o sin membership responde 403. Motivo obligatorio. Restaura la última etapa activa anterior o su canónica; conserva cobros y seña retenida; no_show no es deuda, al reabrir vuelve a la clasificación de deuda según estado activo\u002Ffecha. Recupera capacidad en la misma transacción (exclusive, pooled, queue). Si ya no hay lugar responde 409 reopen_requires_reschedule: elegir un nuevo start y, opcionalmente, resource_ids y confirmar nuevamente con otra clave; se conserva la misma tarea y sus cobros. Una cancelada con reemplazo por reprogramación no se puede reabrir (409 invalid_transition). Idempotency-Key obligatorio: replay idéntico, otra operación con la misma clave da 409. Historial y auditoría incluyen motivo; workitem.reopened no incluye texto libre. No ejecuta efectos de cierre ni notificaciones de etapa. Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)Idempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: ReopenIn Respuestas EstadoDescripción200Tarea reabierta (o respuesta original en replay) (WorkItemActionResult)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2103,"title":2104,"titles":2105,"content":2106,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-itemsidstage-history","GET \u002Fwork-items\u002F{id}\u002Fstage-history",[1964],"Historial inmutable de etapas Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)orderqueryNostring asc, desc default descOrden de los últimos 100 eventos; asc los presenta cronológicamente. Respuestas EstadoDescripción200Últimos 100 eventos con actor, origen, clase e ítems históricos; orden elegido (object)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2108,"title":2109,"titles":2110,"content":2111,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidtoolstool","POST \u002Fwork-items\u002F{id}\u002Ftools\u002F{tool}",[1964],"Usar herramienta de la etapa actual F3-183. Lock, idempotencia, autorización y requisitos. Mutación, cobro, historial y outbox atómicos. Scope bookings:write; payments:record si cobra. Falta de requisitos: 422 stage_requirements_missing. Un dato que vino pero no vale (tipo, formato, rango, opción, campo calculado o ya cargado): 422 stage_field_invalid con invalid (F3-482). No ejecuta charge electrónico (F4-29 pendiente). Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)toolpathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: WorkItemOperationInput Respuestas EstadoDescripción200La tarea tras los efectos de servidor y los efectos de cliente (WorkItemActionResult)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2113,"title":2114,"titles":2115,"content":2116,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#post-work-itemsidtransitionsto_stage","POST \u002Fwork-items\u002F{id}\u002Ftransitions\u002F{to_stage}",[1964],"Entrar a una etapa del servicio F3-183. Lock, idempotencia, autorización y requisitos. Mutación, cobro, historial y outbox atómicos. Scope bookings:write; payments:record si cobra. Falta de requisitos: 422 stage_requirements_missing. Un dato que vino pero no vale (tipo, formato, rango, opción, campo calculado o ya cargado): 422 stage_field_invalid con invalid (F3-482). No ejecuta charge electrónico (F4-29 pendiente). Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)to_stagepathSístringIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: WorkItemOperationInput Respuestas EstadoDescripción200La tarea tras los efectos de servidor y los efectos de cliente (WorkItemActionResult)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2118,"title":2119,"titles":2120,"content":2121,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbookings#get-work-itemsstream","GET \u002Fwork-items\u002Fstream",[1964],"Avisos en vivo de tareas (SSE) text\u002Fevent-stream del proyecto. Eventos work_item.created, work_item.updated (etapa, estado, asignación, horario, pago u otro dato) y work_item.deleted con {event, id}, sin contenido: el cliente vuelve a pedir GET \u002Fv1\u002Fwork-items. Se publican después del commit. Un comentario : cada 15 s mantiene la conexión. Mismos roles que GET \u002Fv1\u002Fwork-items (API key: bookings:read; Mini App: header X-Miniapp-Session). Un cobro, su anulación o una devolución avisan work_item.updated de las tareas que pagan. Rol staff sin gestión: solo recibe avisos de las tareas que ve en ese momento o que ya vio en este stream (al abrirlo o por un aviso anterior); cuando deja de verla (reasignada, tomada por otro) o se borra, recibe un aviso con ese id y nunca el id de una tarea que no pudo ver, tampoco en las bajas. El stream se corta si la sesión se cierra o cambia el rol. Autenticación: Clave de API o sesión del panelScopes: bookings:read Respuestas EstadoDescripción200Stream abierto403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2123,"title":2124,"titles":2125,"content":2126,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series","API · booking-series",[],"Operaciones de booking-series del contrato OpenAPI que aceptan una clave de API. Turnos fijos (F3-620): reservas que se repiten cada 1-4 semanas. Cada fecha es una tarea normal.",{"id":2128,"title":2129,"titles":2130,"content":2131,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series#get-booking-series","GET \u002Fbooking-series",[2124],"Listar turnos fijos Turnos fijos (F3-620): reservas que se repiten. Owner y manager (permiso tasks:series); API key con bookings:read. Sin dates (están en el detalle). Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idqueryNostring (uuid)statusqueryNostring active, cancelledlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2133,"title":2134,"titles":2135,"content":2136,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series#post-booking-series","POST \u002Fbooking-series",[2124],"Crear un turno fijo (y sus próximas fechas) Crea la serie y materializa como tareas normales las fechas de las próximas 8 semanas (el resto lo suma un proceso periódico). Cada fecha pasa por las mismas reglas que una reserva: disponibilidad, capacidad, feriados, excepciones y cierres; el precio lo fija el servidor al crear cada fecha y se cobra el día de esa tarea (no se pide seña por adelantado). Si alguna fecha no entra responde 409 series_conflicts con conflicts: [{date, start, reasons}], salvo que esté en skip_dates o se pida skip_conflicts: quedan registradas como salteadas. La confirmación al cliente sale solo con la primera fecha. Owner y manager; API key con bookings:write. Autenticación: Clave de API o sesión del panelScopes: bookings:write Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: BookingSeriesInput Respuestas EstadoDescripción201Creado (BookingSeries)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2138,"title":2139,"titles":2140,"content":2141,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series#get-booking-seriesid","GET \u002Fbooking-series\u002F{id}",[2124],"Leer un turno fijo y sus fechas Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (BookingSeries)defaultError (RFC 9457) (Problem)",{"id":2143,"title":2144,"titles":2145,"content":2146,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series#patch-booking-seriesid","PATCH \u002Fbooking-series\u002F{id}",[2124],"Editar toda la serie o «esta y las siguientes» (con from_date) Sin from_date: toda la serie. Con from_date posterior al inicio: «esta y las siguientes», que parte la serie (la original termina el día anterior y la respuesta es la serie nueva, con split_from_id). Las fechas futuras que todavía se pueden mover (no iniciadas, sin cobro, sin falta) se cancelan sin aviso y se vuelven a crear con la regla nueva; lo pasado, iniciado, cobrado o con falta no se toca. Cambiar solo la nota o el fin no mueve las fechas existentes. Mismos choques que el alta (409 series_conflicts, skip_dates, skip_conflicts); expected_version da 409 version_conflict si la serie cambió. «Solo esta» es reprogramar o cancelar esa tarea (\u002Fbookings\u002F{id}\u002F…). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: BookingSeriesPatch Respuestas EstadoDescripción200OK (BookingSeries)409Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2148,"title":2149,"titles":2150,"content":2151,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series#post-booking-seriesidcancel","POST \u002Fbooking-series\u002F{id}\u002Fcancel",[2124],"Cancelar el turno fijo (todo o desde una fecha) Sin from_date (o desde el inicio) cancela la serie; con from_date la serie termina el día anterior. Las fechas futuras que se pueden mover se cancelan sin aviso al cliente; lo pasado, iniciado, cobrado o con falta queda como está. Cancelar algo ya cancelado devuelve lo mismo. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (opcional) application\u002Fjson: object Respuestas EstadoDescripción200OK (BookingSeries)defaultError (RFC 9457) (Problem)",{"id":2153,"title":2154,"titles":2155,"content":2156,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbooking-series#post-booking-seriespreview","POST \u002Fbooking-series\u002Fpreview",[2124],"Vista previa de las fechas y sus choques (no guarda) Las fechas de las próximas 8 semanas con status ok, conflict (con reasons) o skipped (pedidas en skip_dates). Usa exactamente las reglas del alta y no guarda nada. Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: BookingSeriesInput Respuestas EstadoDescripción200OK (BookingSeriesPreview)defaultError (RFC 9457) (Problem)",{"id":2158,"title":2159,"titles":2160,"content":2161,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog","API · catalog",[],"Operaciones de catalog del contrato OpenAPI que aceptan una clave de API.",{"id":2163,"title":2164,"titles":2165,"content":2166,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-resource-groups","GET \u002Fresource-groups",[2159],"Listar grupos de recursos Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióninclude_inactivequeryNoboolean default falseIncluye los desactivados (active=false). Por defecto solo los activos.archivedqueryNoboolean default falseFIU-485 — lista solo los archivados («Archivados»). Los archivados no salen en las demás listas. Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2168,"title":2169,"titles":2170,"content":2171,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-resource-groups","POST \u002Fresource-groups",[2159],"Crear grupo de recursos (config:write) Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: ResourceGroup Respuestas EstadoDescripción201Creado (ResourceGroup)defaultError (RFC 9457) (Problem)",{"id":2173,"title":2174,"titles":2175,"content":2176,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-resource-groupsid","GET \u002Fresource-groups\u002F{id}",[2159],"Leer un grupo de recursos (activo o no) Un elemento desactivado se lee igual, con active=false, para mostrar su detalle y reactivarlo (PATCH con active=true). 404 solo si no existe en el proyecto. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (ResourceGroup)defaultError (RFC 9457) (Problem)",{"id":2178,"title":2179,"titles":2180,"content":2181,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#patch-resource-groupsid","PATCH \u002Fresource-groups\u002F{id}",[2159],"Editar grupo y miembros (owner\u002Fmanager o API key config:write) F3-573 — sumar una persona (recurso staff) al grupo de un servicio de día completo responde 422 service_full_day_invalid. FIU-450 — al enviar member_ids, se ignoran y limpian los ids inexistentes o inactivos, sin 404. Las reservas de esos miembros se conservan y no bloquean la limpieza; quitar una persona activa con ocupación vigente sigue respondiendo 409 team_policy_in_use. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ResourceGroupPatch Respuestas EstadoDescripción200Actualizado (ResourceGroup)defaultError (RFC 9457) (Problem)",{"id":2183,"title":2184,"titles":2185,"content":2186,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#delete-resource-groupsid","DELETE \u002Fresource-groups\u002F{id}",[2159],"Baja lógica del grupo (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringmodequeryNostring pause, remove, archive, delete default pausepause (por defecto): pausa, como siempre. remove: borra si no tiene historial y archiva si lo tiene. archive: archiva siempre. delete: borra (409 catalog_item_has_history si tiene historial). Con tareas futuras remove, archive y delete responden 409 catalog_item_future_bookings y la lista. Respuestas EstadoDescripción200Baja idempotente, conserva miembros e historial (CatalogDeactivation)defaultError (RFC 9457) (Problem)",{"id":2188,"title":2189,"titles":2190,"content":2191,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-resource-groupsidremoval","GET \u002Fresource-groups\u002F{id}\u002Fremoval",[2159],"Qué pasa al eliminar el grupo (borra o archiva; tareas futuras) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (CatalogRemovalPlan)defaultError (RFC 9457) (Problem)",{"id":2193,"title":2194,"titles":2195,"content":2196,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-resource-groupsidrestore","POST \u002Fresource-groups\u002F{id}\u002Frestore",[2159],"Restaurar el grupo archivado (vuelve pausado; se reactiva a propósito) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204RestauradodefaultError (RFC 9457) (Problem)",{"id":2198,"title":2199,"titles":2200,"content":2201,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-resources","GET \u002Fresources",[2159],"Listar recursos (barberos, mesas, máquinas, salas…) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónkindqueryNoResourceKindinclude_inactivequeryNoboolean default falseIncluye los desactivados (active=false). Por defecto solo los activos.archivedqueryNoboolean default falseFIU-485 — lista solo los archivados («Archivados»). Los archivados no salen en las demás listas. Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2203,"title":2204,"titles":2205,"content":2206,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-resources","POST \u002Fresources",[2159],"Crear recurso (config:write) F4-71 — 409 resource_limit_reached (con limit, used, plan y upgrade_path) si el plan no admite otro recurso activo. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: ResourceCreate Respuestas EstadoDescripción201Creado (Resource)defaultError (RFC 9457) (Problem)",{"id":2208,"title":2209,"titles":2210,"content":2211,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-resourcesid","GET \u002Fresources\u002F{id}",[2159],"Leer un recurso (activo o no) Un elemento desactivado se lee igual, con active=false, para mostrar su detalle y reactivarlo (PATCH con active=true). 404 solo si no existe en el proyecto. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Resource)defaultError (RFC 9457) (Problem)",{"id":2213,"title":2214,"titles":2215,"content":2216,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#patch-resourcesid","PATCH \u002Fresources\u002F{id}",[2159],"Editar recurso y asociar o quitar horario (owner\u002Fmanager o API key config:write) F4-71 — reactivar (active true) responde 409 resource_limit_reached si el plan no admite otro recurso activo. FIU-370 — capacity_mode y capacity_units ya no se editan acá, los define el equipo (422 capacity_defined_by_team). F3-573 — pasar a kind staff un recurso del grupo de un servicio de día completo responde 422 service_full_day_invalid. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ResourcePatch Respuestas EstadoDescripción200Actualizado (Resource)defaultError (RFC 9457) (Problem)",{"id":2218,"title":2219,"titles":2220,"content":2221,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#delete-resourcesid","DELETE \u002Fresources\u002F{id}",[2159],"Baja lógica del recurso (owner\u002Fmanager, CSRF) Retira al recurso de todos sus equipos en la misma transacción, incluso si el modo remove o archive lo archiva. Conserva las reservas, sus asignaciones y el historial; reactivar el recurso no restaura esas membresías. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringmodequeryNostring pause, remove, archive, delete default pausepause (por defecto): pausa, como siempre. remove: borra si no tiene historial y archiva si lo tiene. archive: archiva siempre. delete: borra (409 catalog_item_has_history si tiene historial). Con tareas futuras remove, archive y delete responden 409 catalog_item_future_bookings y la lista. Respuestas EstadoDescripción200Baja idempotente, conserva historial y reservas (CatalogDeactivation)defaultError (RFC 9457) (Problem)",{"id":2223,"title":2224,"titles":2225,"content":2226,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-resourcesidremoval","GET \u002Fresources\u002F{id}\u002Fremoval",[2159],"Qué pasa al eliminar el recurso (borra o archiva; tareas futuras) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (CatalogRemovalPlan)defaultError (RFC 9457) (Problem)",{"id":2228,"title":2229,"titles":2230,"content":2231,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-resourcesidrestore","POST \u002Fresources\u002F{id}\u002Frestore",[2159],"Restaurar el recurso archivado (vuelve pausado; se reactiva a propósito) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204RestauradodefaultError (RFC 9457) (Problem)",{"id":2233,"title":2234,"titles":2235,"content":2236,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-schedule-overrides","GET \u002Fschedule-overrides",[2159],"Excepciones del workspace en un rango local (fin exclusivo) Acepta fechas o instantes con offset; los instantes se convierten a la zona del workspace. Staff solo ve horarios de sus recursos. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónfromquerySístring \u002F stringtoquerySístring \u002F string Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2238,"title":2239,"titles":2240,"content":2241,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-schedules","GET \u002Fschedules",[2159],"Listar horarios Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2243,"title":2244,"titles":2245,"content":2246,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-schedules","POST \u002Fschedules",[2159],"Crear horario semanal (config:write) Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: Schedule Respuestas EstadoDescripción201Creado (Schedule)defaultError (RFC 9457) (Problem)",{"id":2248,"title":2249,"titles":2250,"content":2251,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-schedulesid","GET \u002Fschedules\u002F{id}",[2159],"Leer horario del workspace (staff limitado a sus recursos) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Schedule)defaultError (RFC 9457) (Problem)",{"id":2253,"title":2254,"titles":2255,"content":2256,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#patch-schedulesid","PATCH \u002Fschedules\u002F{id}",[2159],"Editar horario semanal (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: SchedulePatch Respuestas EstadoDescripción200Actualizado; nunca reinterpreta las reservas UTC (Schedule)defaultError (RFC 9457) (Problem)",{"id":2258,"title":2259,"titles":2260,"content":2261,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#delete-schedulesid","DELETE \u002Fschedules\u002F{id}",[2159],"Baja lógica del horario (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200Baja idempotente, conserva excepciones e historial (CatalogDeactivation)defaultError (RFC 9457) (Problem)",{"id":2263,"title":2264,"titles":2265,"content":2266,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-schedulesidoverrides","POST \u002Fschedules\u002F{id}\u002Foverrides",[2159],"Bloquear o cambiar horario en una fecha La excepción reemplaza las aperturas de esa fecha, incluida su noche hacia el día siguiente (F3-503). Cerrar una fecha no corta la madrugada que pertenece a la noche del día anterior. Los tramos siguen la regla de Schedule.rules; pisar la noche del día anterior o la apertura del siguiente responde 422 hours_overlap. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción201CreadodefaultError (RFC 9457) (Problem)",{"id":2268,"title":2269,"titles":2270,"content":2271,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#delete-schedulesidoverridesdate","DELETE \u002Fschedules\u002F{id}\u002Foverrides\u002F{date}",[2159],"Eliminar excepción de horario (owner\u002Fmanager, CSRF, auditado e idempotente) Volver a la semana no puede pisar la noche de una excepción vecina (422 hours_overlap, F3-503). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringdatepathSístring (date) Respuestas EstadoDescripción204Eliminada o ya ausente; conserva reservas y asignacionesdefaultError (RFC 9457) (Problem)",{"id":2273,"title":2274,"titles":2275,"content":2276,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-services","GET \u002Fservices",[2159],"Listar servicios Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióninclude_inactivequeryNoboolean default falseIncluye los desactivados (active=false). Por defecto solo los activos.archivedqueryNoboolean default falseFIU-485 — lista solo los archivados («Archivados»). Los archivados no salen en las demás listas. Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2278,"title":2279,"titles":2280,"content":2281,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-services","POST \u002Fservices",[2159],"Crear servicio (config:write) Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: ServiceCreate Respuestas EstadoDescripción201Creado (Service)defaultError (RFC 9457) (Problem)",{"id":2283,"title":2284,"titles":2285,"content":2286,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-servicesid","GET \u002Fservices\u002F{id}",[2159],"Leer un servicio (activo o no) Un elemento desactivado se lee igual, con active=false, para mostrar su detalle y reactivarlo (PATCH con active=true). 404 solo si no existe en el proyecto. Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Service)defaultError (RFC 9457) (Problem)",{"id":2288,"title":2289,"titles":2290,"content":2291,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#patch-servicesid","PATCH \u002Fservices\u002F{id}",[2159],"Editar servicio (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ServicePatch Respuestas EstadoDescripción200Actualizado; las reservas existentes no se reinterpretan (Service)defaultError (RFC 9457) (Problem)",{"id":2293,"title":2294,"titles":2295,"content":2296,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#delete-servicesid","DELETE \u002Fservices\u002F{id}",[2159],"Baja lógica; conserva y lista reservas activas futuras (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringmodequeryNostring pause, remove, archive, delete default pausepause (por defecto): pausa, como siempre. remove: borra si no tiene historial y archiva si lo tiene. archive: archiva siempre. delete: borra (409 catalog_item_has_history si tiene historial). Con tareas futuras remove, archive y delete responden 409 catalog_item_future_bookings y la lista. Respuestas EstadoDescripción200Baja idempotente, ninguna reserva cancelada (CatalogDeactivation)defaultError (RFC 9457) (Problem)",{"id":2298,"title":2299,"titles":2300,"content":2301,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesidduplicate","POST \u002Fservices\u002F{id}\u002Fduplicate",[2159],"Crear una copia pausada de un servicio (config:write) Copia configuración, requisitos, formulario, productos y horario independiente. No copia tareas, resultados ni opiniones. Etapas vigentes sólo con service_stages:write (settings:write para API keys); de lo contrario usa etapas base y avisa. Idempotencia de 24 horas. Autenticación: Clave de API o sesión del panelScopes: config:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)Idempotency-KeyheaderSístring Respuestas EstadoDescripción201Copia pausada (ServiceDuplicateOut)defaultError (RFC 9457) (Problem)",{"id":2303,"title":2304,"titles":2305,"content":2306,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-servicesidpauses","GET \u002Fservices\u002F{id}\u002Fpauses",[2159],"Listar las pausas por fechas de un servicio (config:read) Rangos de días (inclusive) en que el servicio no se ofrece. Una pausa cierra el servicio, no a los recursos que lo atienden (F3-320). Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2308,"title":2309,"titles":2310,"content":2311,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesidpauses","POST \u002Fservices\u002F{id}\u002Fpauses",[2159],"Pausar un servicio por un rango de fechas (owner\u002Fmanager, CSRF) Cierra el servicio de from a to (inclusive, fecha local del negocio) sin bloquear a los recursos que lo atienden. Los demás servicios de esos recursos conservan sus horarios. Un servicio sin ventana propia sigue mostrándose sin ella (schedule_id nulo); si la ventana la comparten otros servicios o recursos, el servicio recibe una propia. Un cierre nuevo reemplaza lo que hubiera esos días. 422 invalid_schedule_override si to es anterior a from o el rango pasa de 366 días. Devuelve todas las pausas del servicio. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ServicePauseIn Respuestas EstadoDescripción201Pausas del servicio (object)defaultError (RFC 9457) (Problem)",{"id":2313,"title":2314,"titles":2315,"content":2316,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#delete-servicesidpauses","DELETE \u002Fservices\u002F{id}\u002Fpauses",[2159],"Reabrir un servicio pausado por fechas (owner\u002Fmanager, CSRF) Reabre los días from..to (inclusive) cerrados por pausa; los horarios vuelven a ser los de antes. Si era la última pausa de una ventana generada, el servicio queda sin ventana propia. Idempotente. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringfromquerySístring (date)toquerySístring (date) Respuestas EstadoDescripción204ReabiertodefaultError (RFC 9457) (Problem)",{"id":2318,"title":2319,"titles":2320,"content":2321,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#get-servicesidremoval","GET \u002Fservices\u002F{id}\u002Fremoval",[2159],"Qué pasa al eliminar el servicio (borra o archiva; tareas futuras) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (CatalogRemovalPlan)defaultError (RFC 9457) (Problem)",{"id":2323,"title":2324,"titles":2325,"content":2326,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesidrestore","POST \u002Fservices\u002F{id}\u002Frestore",[2159],"Restaurar el servicio archivado (vuelve pausado; se reactiva a propósito) Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204RestauradodefaultError (RFC 9457) (Problem)",{"id":2328,"title":2329,"titles":2330,"content":2331,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesimportidconfirm","POST \u002Fservices\u002Fimport\u002F{id}\u002Fconfirm",[2159],"Confirmar una importación de servicios Scope config:write. Crea todos los servicios de la vista previa o ninguno. Confirmar el mismo id es idempotente (resultado 7 días). 409 services.import_preview_stale si cambió el catálogo, la moneda o venció la vista previa; 404 si es de otro negocio. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (ServiceImportResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2333,"title":2334,"titles":2335,"content":2336,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesimportidundo","POST \u002Fservices\u002Fimport\u002F{id}\u002Fundo",[2159],"Deshacer una importación de servicios Scope config:write. Borra los servicios creados (o los archiva si ya tienen historial), hasta 7 días y solo si nadie los cambió (409 services.import_undo_stale); con tareas futuras, 409 catalog_item_future_bookings. Repetirlo devuelve el mismo resultado. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (ServiceImportResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2338,"title":2339,"titles":2340,"content":2341,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesimportpreview","POST \u002Fservices\u002Fimport\u002Fpreview",[2159],"Validar una importación de servicios (vista previa, no crea nada) Scope config:write. csv, xlsx (base64, hasta 1 MiB) o rows (hasta 2000) con columns (encabezado → name|duration_min|price|team|full_day|bot_offered); hasta 200 servicios. Solo crea: un nombre que ya existe es error de la fila (services.import_exists). team es el nombre o id del equipo (con uno solo activo, se puede omitir). price en moneda mayor con la regla única de montos. Nada se crea hasta confirmar; la vista previa válida dura 30 minutos. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: ServiceImportInput Respuestas EstadoDescripción200Successful Response (ServiceImportPreview)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2343,"title":2344,"titles":2345,"content":2346,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcatalog#post-servicesintakepreview","POST \u002Fservices\u002Fintake\u002Fpreview",[2159],"Preview Intake Vista previa de formulario y expresiones CEL acotadas. Owner\u002Fmanager o API key config:write. El servidor calcula; no persiste datos. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: IntakePreviewIn Respuestas EstadoDescripción200Successful Response (IntakePreviewOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2348,"title":2349,"titles":2350,"content":2351,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts","API · products",[],"Operaciones de products del contrato OpenAPI que aceptan una clave de API. Catálogo de productos del negocio (F3-145).",{"id":2353,"title":2354,"titles":2355,"content":2356,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-products","GET \u002Fproducts",[2349],"Buscar productos del negocio Scope products:read. Tenant desde credencial. Importes en unidad menor ({PYG:0, CLP:0, resto:2}); no price_cents de servicios. Owner\u002Fmanager gestionan; staff lee activos ofrecidos por service_id. Archivar = PATCH active=false; no hay DELETE. Importación y exportación CSV: \u002Fproducts\u002Fimport\u002F* y \u002Fproducts\u002Fexport. Autenticación: Clave de API o sesión del panelScopes: products:read Parámetros NombreEnObligatorioTipoDescripciónqqueryNostring default ``categoryqueryNostring \u002F null (null)activequeryNoboolean \u002F null (null) default truefeaturedqueryNoboolean default falseinclude_archivedqueryNoboolean default falsearchivedqueryNoboolean default falseFIU-485 — lista solo los archivados («Archivados»). Los archivados no salen en las demás listas.idsqueryNoarray \u002F null (null)service_idqueryNostring \u002F null (null)cursorqueryNostring \u002F null (null)limitqueryNointeger default 25 Respuestas EstadoDescripción200Successful Response (ProductPage)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2358,"title":2359,"titles":2360,"content":2361,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#post-products","POST \u002Fproducts",[2349],"Crear producto del negocio Scope products:write. Tenant desde credencial. Importes en unidad menor ({PYG:0, CLP:0, resto:2}); no price_cents de servicios. Owner\u002Fmanager gestionan; staff lee activos ofrecidos por service_id. Archivar = PATCH active=false; no hay DELETE. Importación y exportación CSV: \u002Fproducts\u002Fimport\u002F* y \u002Fproducts\u002Fexport. Autenticación: Clave de API o sesión del panelScopes: products:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: ProductIn Respuestas EstadoDescripción201Successful Response (ProductOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2363,"title":2364,"titles":2365,"content":2366,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productsid","GET \u002Fproducts\u002F{id}",[2349],"Ver producto del negocio Scope products:read. Tenant desde credencial. Importes en unidad menor ({PYG:0, CLP:0, resto:2}); no price_cents de servicios. Owner\u002Fmanager gestionan; staff lee activos ofrecidos por service_id. Pausar = PATCH active=false; eliminar = DELETE (borra sin historial, archiva con historial; FIU-485). Importación y exportación CSV: \u002Fproducts\u002Fimport\u002F* y \u002Fproducts\u002Fexport. Autenticación: Clave de API o sesión del panelScopes: products:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)service_idqueryNostring \u002F null (null) Respuestas EstadoDescripción200Successful Response (ProductOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2368,"title":2369,"titles":2370,"content":2371,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#patch-productsid","PATCH \u002Fproducts\u002F{id}",[2349],"Editar o archivar producto del negocio Scope products:write. Tenant desde credencial. Importes en unidad menor ({PYG:0, CLP:0, resto:2}); no price_cents de servicios. Owner\u002Fmanager gestionan; staff lee activos ofrecidos por service_id. Pausar = PATCH active=false; eliminar = DELETE (borra sin historial, archiva con historial; FIU-485). Importación y exportación CSV: \u002Fproducts\u002Fimport\u002F* y \u002Fproducts\u002Fexport. Autenticación: Clave de API o sesión del panelScopes: products:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ProductPatch Respuestas EstadoDescripción200Successful Response (ProductOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2373,"title":2374,"titles":2375,"content":2376,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#delete-productsid","DELETE \u002Fproducts\u002F{id}",[2349],"Eliminar producto (borra sin historial, archiva con historial) mode=remove (por defecto) borra si ninguna tarea ni regla lo usa y archiva si hay historial; archive archiva siempre; delete borra o responde 409 catalog_item_has_history. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)modequeryNostring remove, archive, delete default remove Respuestas EstadoDescripción200OK (CatalogDeactivation)defaultError (RFC 9457) (Problem)",{"id":2378,"title":2379,"titles":2380,"content":2381,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productsidremoval","GET \u002Fproducts\u002F{id}\u002Fremoval",[2349],"Qué pasa al eliminar el producto (borra o archiva; tareas futuras) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200OK (CatalogRemovalPlan)defaultError (RFC 9457) (Problem)",{"id":2383,"title":2384,"titles":2385,"content":2386,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#post-productsidrestore","POST \u002Fproducts\u002F{id}\u002Frestore",[2349],"Restaurar el producto archivado (vuelve pausado; se reactiva a propósito) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción204RestauradodefaultError (RFC 9457) (Problem)",{"id":2388,"title":2389,"titles":2390,"content":2391,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productscategories","GET \u002Fproducts\u002Fcategories",[2349],"Categorías del catálogo Gestión del catálogo (permiso products:manage_read, owner\u002Fmanager). Con API key exige el scope products:write; una key de solo products:read recibe 403. Tenant desde credencial. Autenticación: Clave de API o sesión del panelScopes: products:write, products:read Respuestas EstadoDescripción200Successful Response (array\u003Cstring>)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2393,"title":2394,"titles":2395,"content":2396,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productsexport","GET \u002Fproducts\u002Fexport",[2349],"Exportación o plantilla CSV Gestión del catálogo (permiso products:manage_read, owner\u002Fmanager). Con API key exige el scope products:write. Devuelve el CSV (name,short_name,unit,price,category,synonyms,sku,active,featured,sort_order) con price en unidad mayor, punto decimal y sin miles; las celdas que empiezan con = + - @, tab o salto van con apóstrofo contra inyección de fórmulas. template=true devuelve solo el encabezado. Autenticación: Clave de API o sesión del panelScopes: products:write Parámetros NombreEnObligatorioTipoDescripcióntemplatequeryNoboolean default falseqqueryNostring default ``categoryqueryNostring \u002F null (null)activequeryNoboolean \u002F null (null) Respuestas EstadoDescripción200Successful Response (ProductCsvDownload)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2398,"title":2399,"titles":2400,"content":2401,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#post-productsimportidconfirm","POST \u002Fproducts\u002Fimport\u002F{id}\u002Fconfirm",[2349],"Confirmar la importación de una vista previa Scope products:write. Confirmar el mismo id es idempotente (devuelve el mismo resultado, que se conserva 7 días; luego 404). 409 products.preview_stale si cambió el catálogo, la moneda o la vista previa caducó; 404 si es de otro negocio. Todo o nada, bajo un solo bloqueo del catálogo. Autenticación: Clave de API o sesión del panelScopes: products:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (ProductImportResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2403,"title":2404,"titles":2405,"content":2406,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#post-productsimportidundo","POST \u002Fproducts\u002Fimport\u002F{id}\u002Fundo",[2349],"Deshacer una importación confirmada Scope products:write. Borra los productos que creó la importación (o los archiva si ya tienen historial) y devuelve los actualizados a su valor anterior. Solo mientras el catálogo no cambió desde la confirmación: si no, 409 products.import_undo_stale. Repetirlo devuelve el mismo resultado; 404 si la importación no existe, no se confirmó, venció (7 días) o es de otro negocio. Autenticación: Clave de API o sesión del panelScopes: products:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (ProductImportResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2408,"title":2409,"titles":2410,"content":2411,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#post-productsimportpreview","POST \u002Fproducts\u002Fimport\u002Fpreview",[2349],"Validar un CSV (vista previa, no importa nada) Scope products:write. FIU-525: exactamente uno de csv, xlsx (Excel en base64, hasta 1 MiB; primera hoja o sheet) o rows (hasta 2000 objetos que leyó una IA de un Excel, PDF o foto); con xlsx o rows, columns mapea encabezado → columna (name, unit, price, …) y la respuesta devuelve columns e ignored_columns. CSV UTF-8 de hasta 1 MiB y 2000 filas (, o ;, BOM aceptado); un texto con U+FFFD (Windows-1252 leído como UTF-8) se rechaza con 422 products.csv_encoding. El precio sigue la regla única de montos (docs\u002Fapi\u002Fproductos.md): «15.000» en PYG\u002FCLP = 15000, «1,500» en BRL\u002FCOP se rechaza como ambiguo. Celdas en blanco en active, featured, sort_order y sku, y columnas omitidas, no cambian nada. Nada se importa hasta confirmar; la vista previa válida dura 30 minutos y queda ligada al negocio, la moneda y los valores del catálogo. Autenticación: Clave de API o sesión del panelScopes: products:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: ProductCsvInput Respuestas EstadoDescripción200Successful Response (ProductCsvPreview)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2413,"title":2414,"titles":2415,"content":2416,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productsstats","GET \u002Fproducts\u002Fstats",[2349],"Ventas por producto en el período (unidades, tareas y facturación) F3-315. Ventas por producto del período para la lista del catálogo, en una sola consulta agrupada (nunca una llamada por fila). Permiso products:manage_read (owner\u002Fmanager); con API key, scope bookings:read (las ventas salen de las tareas). Cuenta las líneas del pedido (qty entregado, nunca lo pedido) de tareas completadas, sin pruebas, atribuidas al día local de inicio\u002Fvencimiento, igual que GET \u002Fv1\u002Fservices\u002Fstats. revenue_minor = unidades por precio copiado en la línea (unidad menor) y currency solo con permiso finance:analyze (rol de la matriz o scope de la key); si no, null. Solo devuelve productos con ventas; ids (hasta 100) limita a los de la página visible. Máximo 366 días. Tenant desde la credencial, RLS. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónfromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido)idsqueryNoarray \u002F null (null) Respuestas EstadoDescripción200Successful Response (ProductSalesOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2418,"title":2419,"titles":2420,"content":2421,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productsstore-search","GET \u002Fproducts\u002Fstore-search",[2349],"Ver la búsqueda en la tienda externa 404 store_search_not_configured si el proyecto no tiene una. F4-55. Scope products:write (owner y manager por sesión; escrituras con CSRF). Una fuente por proyecto: URL HTTPS plantilla con {q} (obligatorio) y {limit} solo como valores completos del query; host y ruta fijos. Encabezados con credenciales cifrados y de escritura únicamente (se devuelven solo sus nombres); secretos en el query (?token=, ?api_key=…) se rechazan. Mapeo declarativo de F2-48 (items_path, rutas a.b[0].c) con nombre y precio obligatorios y moneda, URL, imagen, stock e id opcionales. service_id es el servicio de pedidos por chat con carrito al que entran los productos. Autenticación: Clave de API o sesión del panelScopes: products:write Respuestas EstadoDescripción200Successful Response (StoreSearchOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2423,"title":2424,"titles":2425,"content":2426,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#put-productsstore-search","PUT \u002Fproducts\u002Fstore-search",[2349],"Crear o editar la búsqueda en la tienda externa Crea la fuente (sin expected_version) o la edita (con la versión vigente; 409 store_search_version_conflict si cambió). Al editar, los encabezados guardados se conservan salvo replace_headers: true; cambiar el host de la URL con credenciales guardadas exige reemplazarlas (422 credentials_origin_changed). Valida forma, HTTPS y DNS público de la URL (422 store_search_invalid con reason unsafe_url) y que el servicio exista, esté activo, acepte pedidos por chat y tenga carrito (service_not_orderable). Auditado sin URL completa ni credenciales. F4-55. Scope products:write (owner y manager por sesión; escrituras con CSRF). Una fuente por proyecto: URL HTTPS plantilla con {q} (obligatorio) y {limit} solo como valores completos del query; host y ruta fijos. Encabezados con credenciales cifrados y de escritura únicamente (se devuelven solo sus nombres); secretos en el query (?token=, ?api_key=…) se rechazan. Mapeo declarativo de F2-48 (items_path, rutas a.b[0].c) con nombre y precio obligatorios y moneda, URL, imagen, stock e id opcionales. service_id es el servicio de pedidos por chat con carrito al que entran los productos. Autenticación: Clave de API o sesión del panelScopes: products:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: StoreSearchIn Respuestas EstadoDescripción200Successful Response (StoreSearchOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2428,"title":2429,"titles":2430,"content":2431,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#delete-productsstore-search","DELETE \u002Fproducts\u002Fstore-search",[2349],"Desactivar la búsqueda en la tienda externa La desactiva (conserva la configuración y sube la versión): el bot deja de ofrecerla y los productos de la tienda que estaban en carritos abiertos ya no se pueden sumar. F4-55. Scope products:write (owner y manager por sesión; escrituras con CSRF). Una fuente por proyecto: URL HTTPS plantilla con {q} (obligatorio) y {limit} solo como valores completos del query; host y ruta fijos. Encabezados con credenciales cifrados y de escritura únicamente (se devuelven solo sus nombres); secretos en el query (?token=, ?api_key=…) se rechazan. Mapeo declarativo de F2-48 (items_path, rutas a.b[0].c) con nombre y precio obligatorios y moneda, URL, imagen, stock e id opcionales. service_id es el servicio de pedidos por chat con carrito al que entran los productos. Autenticación: Clave de API o sesión del panelScopes: products:write Respuestas EstadoDescripción200Successful Response (StoreSearchOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2433,"title":2434,"titles":2435,"content":2436,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productsstore-searchpresets","GET \u002Fproducts\u002Fstore-search\u002Fpresets",[2349],"Plantillas listas de búsqueda en tienda Plantillas para Tiendanube\u002FNuvemshop, WooCommerce, Shopify, Make, n8n y una URL propia: URL de ejemplo (reemplazar el dominio o el id de la tienda), nombres de los encabezados de credenciales, mapeo y escala del precio. No consulta ninguna tienda. F4-55. Scope products:write (owner y manager por sesión; escrituras con CSRF). Una fuente por proyecto: URL HTTPS plantilla con {q} (obligatorio) y {limit} solo como valores completos del query; host y ruta fijos. Encabezados con credenciales cifrados y de escritura únicamente (se devuelven solo sus nombres); secretos en el query (?token=, ?api_key=…) se rechazan. Mapeo declarativo de F2-48 (items_path, rutas a.b[0].c) con nombre y precio obligatorios y moneda, URL, imagen, stock e id opcionales. service_id es el servicio de pedidos por chat con carrito al que entran los productos. Autenticación: Clave de API o sesión del panelScopes: products:write Respuestas EstadoDescripción200Successful Response (array\u003CStorePreset>)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2438,"title":2439,"titles":2440,"content":2441,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#post-productsstore-searchtest","POST \u002Fproducts\u002Fstore-search\u002Ftest",[2349],"Probar la búsqueda en la tienda externa «Probar búsqueda»: hace la misma consulta que el bot con la configuración guardada (aunque esté desactivada) y devuelve los resultados mapeados, con el precio ya en la unidad menor de la moneda del negocio, y los descartados por motivo (invalid_price, currency_mismatch, missing_name, duplicate). No guarda instantáneas. Traída segura: solo HTTPS a IPs públicas validadas en cada salto y fijadas al socket, 3 s en total, 512 KiB descomprimidos, caché por consulta y circuito tras fallos. Una tienda lenta, caída o con respuesta inválida o enorme responde 200 con ok: false y un status corto, nunca el cuerpo ni el error crudo. 10 pruebas por minuto por proyecto (429 store_search_rate_limited). F4-55. Scope products:write (owner y manager por sesión; escrituras con CSRF). Una fuente por proyecto: URL HTTPS plantilla con {q} (obligatorio) y {limit} solo como valores completos del query; host y ruta fijos. Encabezados con credenciales cifrados y de escritura únicamente (se devuelven solo sus nombres); secretos en el query (?token=, ?api_key=…) se rechazan. Mapeo declarativo de F2-48 (items_path, rutas a.b[0].c) con nombre y precio obligatorios y moneda, URL, imagen, stock e id opcionales. service_id es el servicio de pedidos por chat con carrito al que entran los productos. Autenticación: Clave de API o sesión del panelScopes: products:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: StoreSearchTest Respuestas EstadoDescripción200Successful Response (StoreSearchResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2443,"title":2444,"titles":2445,"content":2446,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fproducts#get-productssuggestions","GET \u002Fproducts\u002Fsuggestions",[2349],"Sugerencias de formularios existentes Gestión del catálogo (permiso products:manage_read, owner\u002Fmanager). Con API key exige el scope products:write; una key de solo products:read recibe 403. Tenant desde credencial. Autenticación: Clave de API o sesión del panelScopes: products:write, products:read Respuestas EstadoDescripción200Successful Response (array\u003CProductSuggestion>)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2448,"title":2449,"titles":2450,"content":2451,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones","API · zones",[],"Operaciones de zones del contrato OpenAPI que aceptan una clave de API. Zonas (F1-38): grupos de personas con un área (barrios, ciudades o códigos postales), días y horas de atención y un tope opcional de tareas por franja. Lectura: todos los roles; escritura: owner y manager.",{"id":2453,"title":2454,"titles":2455,"content":2456,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#get-zones","GET \u002Fzones",[2449],"Listar zonas Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióninclude_inactivequeryNoboolean default false Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2458,"title":2459,"titles":2460,"content":2461,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#post-zones","POST \u002Fzones",[2449],"Crear una zona (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: ZoneInput Respuestas EstadoDescripción201Creada (Zone)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2463,"title":2464,"titles":2465,"content":2466,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#get-zonesid","GET \u002Fzones\u002F{id}",[2449],"Leer una zona (activa o no) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Zone)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2468,"title":2469,"titles":2470,"content":2471,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#patch-zonesid","PATCH \u002Fzones\u002F{id}",[2449],"Editar una zona (owner\u002Fmanager, CSRF) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ZonePatch Respuestas EstadoDescripción200Actualizada (Zone)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2473,"title":2474,"titles":2475,"content":2476,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#delete-zonesid","DELETE \u002Fzones\u002F{id}",[2449],"Desactivar una zona (owner\u002Fmanager, CSRF) Una zona no se borra (las tareas la referencian): se desactiva y deja de asignarse y de limitar. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204DesactivadadefaultError (RFC 9457) (Problem)",{"id":2478,"title":2479,"titles":2480,"content":2481,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#get-zonescoverage","GET \u002Fzones\u002Fcoverage",[2449],"Cobertura del negocio (unión de las zonas activas) La cobertura es la unión de las zonas activas; sin zonas no hay límite (solo el país). Incluye qué hace el bot con una dirección fuera de cobertura. Todos los roles del panel y API keys config:read. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200OK (Coverage)defaultError (RFC 9457) (Problem)",{"id":2483,"title":2484,"titles":2485,"content":2486,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#put-zonescoverage","PUT \u002Fzones\u002Fcoverage",[2449],"Cambiar qué hace el bot fuera de cobertura (owner\u002Fmanager, CSRF) Aplica a una dirección fuera de todas las zonas y a una entrega (reach_zone_ids) que no llega a la zona de la dirección. take (default): el bot ofrece la entrega y toma el pedido, la tarea lleva la etiqueta fuera-de-cobertura y aparece en «Necesita tu atención». reject: el bot no ofrece esa entrega, responde que por ahora no llega a esa zona y no crea nada. Auditado (coverage.updated). Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: CoverageInput Respuestas EstadoDescripción200OK (Coverage)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2488,"title":2489,"titles":2490,"content":2491,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fzones#get-zonesmatch","GET \u002Fzones\u002Fmatch",[2449],"Qué zona cubre un destino Compara barrio, ciudad, código postal o dirección normalizados (sin tildes, mayúsculas ni signos). Prioridad: código postal (por prefijo), barrio, ciudad, provincia, país; ante varias gana la coincidencia más larga y luego el nombre. zone: null = sin zona (fuera de cobertura si el negocio tiene zonas). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónneighborhoodqueryNostringcityqueryNostringpostal_codequeryNostringaddressqueryNostringlatqueryNonumberLatitud del destino; va junto con lng. Con coordenadas gana el área dibujada más chica que contiene el punto; sin coincidencia geométrica queda el respaldo por texto.lngqueryNonumberLongitud del destino; va junto con lat. Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":2493,"title":2494,"titles":2495,"content":2496,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments","API · payments",[],"Operaciones de payments del contrato OpenAPI que aceptan una clave de API. Cobros de los negocios; notificaciones autenticadas por HMAC de Mercado Pago.",{"id":2498,"title":2499,"titles":2500,"content":2501,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsaccountsmercadopago","GET \u002Fpayments\u002Faccounts\u002Fmercadopago",[2494],"Status Lectura segura del estado, sin tokens. Scope payments:read para API keys. connection_mode es la conexión nueva que se ofrece; en países con política token es disabled mientras el interruptor de plataforma del token pegado esté apagado (F4-47). Una cuenta ya guardada se informa igual en account. Autenticación: Clave de API o sesión del panelScopes: payments:read Respuestas EstadoDescripción200Successful Response (MercadoPagoAvailability)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)",{"id":2503,"title":2504,"titles":2505,"content":2506,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsaccountsmercadopagocharges","GET \u002Fpayments\u002Faccounts\u002Fmercadopago\u002Fcharges",[2494],"Charges Últimos cobros electrónicos del proyecto para Finanzas → Cobros (F4-25), el más nuevo primero. Incluye cobros de cuentas ya desconectadas. Sin datos del pagador, link de pago ni referencias del proveedor. Sesión owner\u002Fmanager (payments:accounts_configure); API keys con scope payments:read. Autenticación: Clave de API o sesión del panelScopes: payments:read Parámetros NombreEnObligatorioTipoDescripciónlimitqueryNointeger default 10 Respuestas EstadoDescripción200Successful Response (MercadoPagoCharges)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2508,"title":2509,"titles":2510,"content":2511,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsbookingsbooking_idbalance","GET \u002Fpayments\u002Fbookings\u002F{booking_id}\u002Fbalance",[2494],"Booking Balance Tenant desde credencial. Scope payments:read_balance; cookie + CSRF. Bearer exige Idempotency-Key en todos los POST (máximo 128 caracteres); conflicto del ledger Bearer es 422, conflicto de dominio 409. Owner\u002Fmanager; staff solo tareas asignadas (no anula ni ajusta). Sin llamadas a proveedores. Montos enteros minor units, PYG exponente 0. Clave de registro permanente; misma clave con otros datos devuelve 409. Duplicados por tarea\u002Fmonto\u002Fmétodo en ventana UTC de 5 minutos se rechazan. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónbooking_idpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (BalanceView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2513,"title":2514,"titles":2515,"content":2516,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsbookingsbooking_idcharges","GET \u002Fpayments\u002Fbookings\u002F{booking_id}\u002Fcharges",[2494],"Booking Charges Tenant desde credencial. Scope payments:read_balance. Historial de cobros de la tarea (recibos manuales asignados y cobros electrónicos), el más nuevo primero. applied_minor es la parte aplicada a esta tarea. La nota y el motivo de anulación son privados: owner\u002Fmanager o quien registró el recibo. Staff solo tareas asignadas. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónbooking_idpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (BookingChargesView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2518,"title":2519,"titles":2520,"content":2521,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsbookingsbooking_iddue","POST \u002Fpayments\u002Fbookings\u002F{booking_id}\u002Fdue",[2494],"Adjust Due Tenant desde credencial. Scope payments:adjust; cookie + CSRF. Una tarea cubierta no permite ajustar el importe (409 payment_conflict, detail payment.booking_covered_by_plan); primero quitar el plan. Notas internas editables. Define (si la tarea aún no tiene valor) o ajusta el valor a cobrar, en unidad menor de la moneda del negocio (PYG y CLP enteros), con motivo obligatorio y auditoría payment.due_adjusted. Solo owner\u002Fmanager. Sin valor definido, el servidor usa por defecto el total del formulario o, si no hay, el precio del catálogo del servicio al congelarlo (tareas por agendar, confirmadas, en curso y completadas). Bearer exige Idempotency-Key en todos los POST (máximo 128 caracteres). Sin llamadas a proveedores. Montos enteros minor units, PYG exponente 0. Clave de registro permanente; misma clave con otros datos devuelve 409. Duplicados por tarea\u002Fmonto\u002Fmétodo en ventana UTC de 5 minutos se rechazan. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónbooking_idpathSístring (uuid)Idempotency-KeyheaderNostring \u002F null (null) Cuerpo de la solicitud (obligatorio) application\u002Fjson: AdjustDue Respuestas EstadoDescripción204Successful Response400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2523,"title":2524,"titles":2525,"content":2526,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsbookingsbooking_idlinesline_idexpense","POST \u002Fpayments\u002Fbookings\u002F{booking_id}\u002Flines\u002F{line_id}\u002Fexpense",[2494],"Registrar como gasto el costo de una línea de la tarea FIU-472: gasto de monto costo x cantidad, categoría Insumos, vinculado a la tarea (booking_id). El\nstaff, solo en sus tareas y sus líneas: queda por aprobar. 409 expense.line_cost_required (la línea no\ntiene costo) o expense.line_has_expense (ya tiene otro gasto). Reintentar con la misma clave devuelve el\nmismo gasto. FIU-472 (decisión 2): el costo de la línea se registra aparte, de un toque, como gasto de monto costo x cantidad, categoría «Insumos» (supplies), proveedor y comprobante opcionales (el comprobante, con POST \u002Fpayments\u002Fexpenses\u002F{id}\u002Freceipt\u002F...), vinculado a la tarea (booking_id). Con expenses:record queda aprobado; con expenses:record_own (staff: solo sus tareas y sus líneas) queda pending_approval. API key expenses:record. Reintentar con la misma clave devuelve el mismo gasto. 409 expense.line_cost_required, expense.line_has_expense. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónbooking_idpathSístring (uuid)line_idpathSístring (uuid)Idempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: LineExpenseIn Respuestas EstadoDescripción201Successful Response (ExpenseView)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2528,"title":2529,"titles":2530,"content":2531,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsbookingsbooking_idpayment-link","POST \u002Fpayments\u002Fbookings\u002F{booking_id}\u002Fpayment-link",[2494],"Cobrar con link de Mercado Pago el saldo de una tarea F4-20 «Cobrar». Permiso y scope payments:link (owner\u002Fmanager; staff solo en sus tareas y si el dueño no apagó «El repartidor puede cobrar»); cookie + CSRF o API key. Exige Idempotency-Key. El monto es el saldo de la tarea que calcula el core (nunca lo manda quien lo pide). Un link abierto por el mismo monto se devuelve con 200 y replay=true (nunca dos links por la misma tarea y monto); con otro monto abierto, 409 payment.link_pending. El cobro queda registrado y auditado (payment.created, payment.link_requested) antes de llamar a Mercado Pago; desde el panel el link vuelve listo (pending con checkout_url), con API key lo crea el worker enseguida (created sin URL: consultar GET \u002Fpayments\u002Fbookings\u002F{booking_id}\u002Fcharges). deliver=conversation además lo manda por la conversación del cliente con una plantilla del servidor (delivery=queued; repetir la misma clave no manda dos mensajes, otra clave lo reenvía). Vence a las 48 h. 409 payment.link_unavailable (sin cuenta de producción BR\u002FAR que coincida con el proyecto), payment.link_not_chargeable (tarea sin cliente, de prueba, en espera de seña o cerrada), payment.nothing_due, payment.parts_cover_balance (las partes abiertas ya cubren el saldo).\nF4-92 «Cobrar una parte»: con amount_minor el link es por esa parte (part=true), con su monto fijo. Pueden quedar varias partes abiertas a la vez; la suma de los cobros abiertos de la tarea nunca supera su saldo (422 payment_part_exceeds_balance, con remaining_minor, open_minor y currency). Las partes no se reemplazan entre sí ni las anula el link del bot o un QR\u002FPoint por el saldo; sin amount_minor, el link cobra lo que queda sin parte. Reintentar con la misma Idempotency-Key devuelve la misma parte (200, replay), aunque ya se haya pagado; otra clave es otra parte aunque el monto sea igual; la misma clave con otro monto da 409 payment.idempotency_conflict. Si baja el total, la parte que ya no entra se anula (void_reason=amount_changed). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónbooking_idpathSístring (uuid)Idempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: PaymentLinkInput Respuestas EstadoDescripción200Ya había un link abierto por el mismo monto, o es el reintento de la misma parte (replay) (PaymentLinkView)201Link creado (PaymentLinkView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2533,"title":2534,"titles":2535,"content":2536,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsbookingsbalances","GET \u002Fpayments\u002Fbookings\u002Fbalances",[2494],"Booking Balances Tenant desde credencial. Scope payments:read_balance; permiso de la matriz payments:read_balance (owner, manager, staff sobre tareas asignadas; viewer no). Saldo derivado de hasta 100 tareas en una pasada (chip de las listas). Omite las tareas que no se pueden calcular y las que el rol no ve. Sin bloqueos de filas. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidsquerySíarray Respuestas EstadoDescripción200Successful Response (BookingBalancesView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2538,"title":2539,"titles":2540,"content":2541,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscash","GET \u002Fpayments\u002Fcash",[2494],"Leer caja o configuración Autenticación: Clave de API o sesión del panelScopes: cash:read Parámetros NombreEnObligatorioTipoDescripcióndayqueryNostring (date)Día local del negocio; por defecto hoy Respuestas EstadoDescripción200Resultado en unidades menores de la moneda del negocio (CashDay)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2543,"title":2544,"titles":2545,"content":2546,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentscashentries","POST \u002Fpayments\u002Fcash\u002Fentries",[2494],"Registrar rendición, cierre o ajuste inmutable También exige cash:remit para rendir o cash:close para cerrar\u002Fajustar. Staff solo lee su efectivo. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: cash:read Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: CashCommand Respuestas EstadoDescripción201Resultado en unidades menores de la moneda del negocio (CashEntryView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2548,"title":2549,"titles":2550,"content":2551,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscashsettings","GET \u002Fpayments\u002Fcash\u002Fsettings",[2494],"Leer caja o configuración Autenticación: Clave de API o sesión del panelScopes: cash:configure Respuestas EstadoDescripción200Resultado en unidades menores de la moneda del negocio (CashAlertSettings)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2553,"title":2554,"titles":2555,"content":2556,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#put-paymentscashsettings","PUT \u002Fpayments\u002Fcash\u002Fsettings",[2494],"Configurar aviso opcional de efectivo Autenticación: Clave de API o sesión del panelScopes: cash:configure Cuerpo de la solicitud (obligatorio) application\u002Fjson: CashAlertSettings Respuestas EstadoDescripción200Resultado en unidades menores de la moneda del negocio (CashAlertSettings)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2558,"title":2559,"titles":2560,"content":2561,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentschargescharge_idapply-to-account","POST \u002Fpayments\u002Fcharges\u002F{charge_id}\u002Fapply-to-account",[2494],"Usar un pago «a devolver» para otra deuda Tenant desde credencial. Scope payments:adjust; cookie + CSRF; solo owner\u002Fmanager. Un pago tardío electrónico separado «a devolver» (refund_due) no compensa deudas del cliente; con confirm=true pasa al saldo del cliente y desde ahí cubre sus deudas más antiguas (FIFO). Auditoría payment.applied_to_account; idempotente (repetirlo devuelve el mismo resultado). No llama a Mercado Pago ni devuelve dinero. 409 payment.not_refund_due si el cobro no está «a devolver»; 409 payment.in_mediation con un reclamo abierto en MP. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid)Idempotency-KeyheaderNostring (null) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ApplyToAccount Respuestas EstadoDescripción200Pago pasado al saldo del cliente (AppliedToAccountView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2563,"title":2564,"titles":2565,"content":2566,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentschargescharge_idcancel","POST \u002Fpayments\u002Fcharges\u002F{charge_id}\u002Fcancel",[2494],"Anular un cobro abierto de una tarea (link, QR o Point) F4-92. Permiso y scope payments:link (owner\u002Fmanager; staff solo en sus tareas y si el dueño no apagó «El repartidor puede cobrar», si no 403); cookie + CSRF o API key (un QR o Point, solo sesión del panel). Anula un cobro abierto de la tarea, sea una parte o el cobro por el saldo (link, QR o Point; la tarjeta no), con void_reason=charge_cancelled; en Mercado Pago se cancela en el momento y, si falla, con reintentos. Un pago verificado que llegue igual queda en revisión. Los demás cobros no cambian. Repetir sobre un cobro anulado o vencido es un no-op. 409 payment.charge_not_found (no existe, es de otro proyecto o no es visible para quien pide), payment.charge_not_open (ya pagado u otro estado final). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (PaymentLinkView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2568,"title":2569,"titles":2570,"content":2571,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentschargescharge_idfiscal","GET \u002Fpayments\u002Fcharges\u002F{charge_id}\u002Ffiscal",[2494],"Marcador fiscal y comprobantes de un cobro F4-85. Tenant desde credencial. Scope\u002Fpermiso payments:fiscal (owner\u002Fmanager). Fiuit nunca emite comprobantes; devuelve el marcador manual (not_required, pending o issued_external con número y fecha) y los comprobantes del emisor externo del negocio, si hay. Otro proyecto o un id inexistente dan 404 payment.not_found. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid) Respuestas EstadoDescripción200Marcador y comprobantes (ChargeFiscalView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2573,"title":2574,"titles":2575,"content":2576,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#put-paymentschargescharge_idfiscal","PUT \u002Fpayments\u002Fcharges\u002F{charge_id}\u002Ffiscal",[2494],"Marcar si un cobro lleva comprobante fiscal F4-85. Tenant desde credencial. Scope\u002Fpermiso payments:fiscal (owner\u002Fmanager); cookie + CSRF. Idempotente (repetir lo mismo no cambia nada). Solo cobros que recibieron dinero (409 fiscal.charge_not_paid; uno anulado, 409 payment.voided); si el emisor conectado ya emitió la factura, 409 fiscal.document_issued. Fecha futura, 409 fiscal.future_date. Auditado (payment.fiscal_marked); el monto del cobro no cambia. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ChargeFiscalMark Respuestas EstadoDescripción200Marcador actualizado (ChargeFiscalView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2578,"title":2579,"titles":2580,"content":2581,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentschargescharge_idrefunds","GET \u002Fpayments\u002Fcharges\u002F{charge_id}\u002Frefunds",[2494],"Devoluciones de un cobro electrónico Tenant desde credencial. Scope\u002Fpermiso payments:refund (solo owner\u002Fmanager). Lo devuelto (acreditado), lo pedido en curso (pending) y lo que todavía se puede devolver (refundable_minor). Si el cobro no admite devolución desde Fiuit, refundable_minor es 0 y refund_blocked trae el motivo (cobro manual, no pagado, contracargo, reclamo abierto, devolución parcial sin monto conocido, orden QR\u002FPoint, pago sin id de Mercado Pago o cobro pasado al saldo del cliente). Otro proyecto o un id inexistente dan el mismo 409 payment.charge_not_found. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid) Respuestas EstadoDescripción200Devoluciones del cobro (ChargeRefundsView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2583,"title":2584,"titles":2585,"content":2586,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentschargescharge_idrefunds","POST \u002Fpayments\u002Fcharges\u002F{charge_id}\u002Frefunds",[2494],"Devolver (total o parcial) un cobro de Mercado Pago Tenant desde credencial. Scope\u002Fpermiso payments:refund (solo owner\u002Fmanager); cookie + CSRF. Exige confirm=true e Idempotency-Key. Sin amount_minor devuelve todo lo que queda. El pedido queda registrado y auditado (payment.refund_requested) antes de llamar a Mercado Pago, con la misma clave de idempotencia en cada reintento; la respuesta trae status succeeded, failed (rechazo definitivo, con aviso a owner\u002Fmanager) o pending (respuesta ambigua o en proceso; el worker reintenta). Repetir la misma clave devuelve la misma devolución; con otro monto o motivo, 409 payment.idempotency_conflict. Nunca más de lo cobrado (servicio y base de datos) → 409 payment.refund_exceeds_remaining o payment.already_refunded. 409 payment.not_refundable, payment.in_mediation, payment.refund_manual_unsupported (un cobro manual se anula), payment.refund_unsupported_method (orden QR\u002FPoint, se devuelve en Mercado Pago), payment.refund_unavailable (sin id del pago en MP), payment.refund_amount_unavailable, payment.refund_plan_unsupported (paquete o club), payment.refund_applied_to_account (pasado al saldo del cliente con «Usar para otra deuda»; limitación hasta F4-56). El cobro pasa a partially_refunded o refunded; lo devuelto se descuenta del saldo de la tarea, de Financiero, de las comisiones y de la seña en estadísticas. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid)Idempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: RefundInput Respuestas EstadoDescripción201Devolución registrada (y ejecutada si el proveedor respondió) (RefundView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2588,"title":2589,"titles":2590,"content":2591,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentscommissionsadjustments","POST \u002Fpayments\u002Fcommissions\u002Fadjustments",[2494],"Ajustar la comisión de un día Ajuste manual con signo y motivo, inmutable y auditado, sobre un día abierto. Un día de un período liquidado da 409 commission.period_settled (F4-77); el ajuste va en un día abierto. Owner\u002Fmanager. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:adjust Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommissionAdjustmentInput Respuestas EstadoDescripción201Importes en unidades menores de la moneda del negocio (CommissionAdjustmentView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2593,"title":2594,"titles":2595,"content":2596,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscommissionsday","GET \u002Fpayments\u002Fcommissions\u002Fday",[2494],"Día de comisiones por profesional Cobrado por método, propinas, comisión, ajustes y diferencias de caja de cada profesional en un día local, calculado al vuelo (sin cierre diario). Staff ve solo lo suyo; owner\u002Fmanager ven a todos y lo cobrado sin profesional. Los cobros de tareas completadas se atribuyen a quien tenía sus recursos al completar; mientras siga abierta, a quien los tiene hoy. Tareas no_show\u002Fcancelled\u002Ffailed no generan comisión ni unattributed_minor; sus cobros permanecen como ingreso del negocio en Financiero\u002FCaja. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:read Parámetros NombreEnObligatorioTipoDescripcióndayqueryNostring (date) Respuestas EstadoDescripción200Importes en unidades menores de la moneda del negocio (CommissionDay)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2598,"title":2599,"titles":2600,"content":2601,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscommissionsexport","GET \u002Fpayments\u002Fcommissions\u002Fexport",[2494],"Exportar comisiones (CSV) Una fila por profesional y día, importes en unidad menor y moneda. Auditado (commission.exported). Staff solo lo propio. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:export Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)member_idqueryNostring (uuid) Respuestas EstadoDescripción200CSV UTF-8 en unidades menores (string)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2603,"title":2604,"titles":2605,"content":2606,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscommissionsreport","GET \u002Fpayments\u002Fcommissions\u002Freport",[2494],"Reporte de comisiones por período y profesional Totales por profesional entre start y end (días locales, inclusive, hasta 366), calculados al vuelo; cada tarea cuenta una vez. Staff solo lo propio (member_id de otra persona da 403). En F4-77 los días de un período liquidado salen del asiento congelado (settlements); la comisión de una anulación o devolución se revierte en el día del cobro original y el período de la devolución lo avisa en reversals; carried_minor (dentro de adjustments_minor) corrige un período ya liquidado. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:read Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)member_idqueryNostring (uuid) Respuestas EstadoDescripción200Importes en unidades menores de la moneda del negocio (CommissionReport)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2608,"title":2609,"titles":2610,"content":2611,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscommissionsrules","GET \u002Fpayments\u002Fcommissions\u002Frules",[2494],"Listar reglas de comisión Staff ve las reglas generales y las suyas. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:read Respuestas EstadoDescripción200Importes en unidades menores de la moneda del negocio (CommissionRules)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2613,"title":2614,"titles":2615,"content":2616,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentscommissionsrules","POST \u002Fpayments\u002Fcommissions\u002Frules",[2494],"Crear regla de comisión Porcentaje (rate_bp, 4000 = 40 %) o monto fijo (amount_minor, por tarea o por unidad de producto), por profesional y por servicio o producto, con o sin descontar la comisión del medio de pago, vigente desde valid_from. Dos reglas del mismo alcance que se superponen dan 409 commission.rule_overlap. Owner\u002Fmanager. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:configure Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommissionRuleInput Respuestas EstadoDescripción201Importes en unidades menores de la moneda del negocio (CommissionRuleView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2618,"title":2619,"titles":2620,"content":2621,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentscommissionsrulesrule_idend","POST \u002Fpayments\u002Fcommissions\u002Frules\u002F{rule_id}\u002Fend",[2494],"Terminar una regla de comisión Fija el último día de vigencia (inclusive). Una regla no se edita: se termina y se crea otra. Owner\u002Fmanager. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:configure Parámetros NombreEnObligatorioTipoDescripciónrule_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommissionRuleEnd Respuestas EstadoDescripción200Importes en unidades menores de la moneda del negocio (CommissionRuleView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2623,"title":2624,"titles":2625,"content":2626,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscommissionssettlements","GET \u002Fpayments\u002Fcommissions\u002Fsettlements",[2494],"Liquidaciones de comisiones de un período F4-77. Liquidaciones que tocan start..end (días locales, inclusive, hasta 366), con los montos congelados, los ajustes automáticos que ya congelaron de otros períodos (carried_from) y lo que cada una tiene pendiente de pasar como ajuste automático al período abierto siguiente (pending_carry_minor, carry_day). Staff solo lo propio (member_id de otra persona da 403). No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:read Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)member_idqueryNostring (uuid) Respuestas EstadoDescripción200Importes en unidades menores de la moneda del negocio (CommissionSettlements)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2628,"title":2629,"titles":2630,"content":2631,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentscommissionssettlements","POST \u002Fpayments\u002Fcommissions\u002Fsettlements",[2494],"Liquidar comisiones de una persona y un período F4-77. Congela la comisión y los ajustes de start..end (días locales, hasta hoy) de una persona en un asiento inmutable, con motivo, autor y fecha; auditoría commission.settled y evento interno commission.settled. Idempotente por Idempotency-Key y por período; liquidar otra vez el mismo período (otra clave, otro worker) devuelve el mismo asiento; otro período que se superpone da 409 commission.period_settled; un día futuro da 409 commission.future_day. Desde entonces esos días leen el asiento. Un cambio posterior (anulación, devolución o regla retroactiva) no lo reescribe; queda como ajuste automático (carried_minor) en el primer día abierto después del período, con referencia a esta liquidación. expected es opcional y lleva moneda y componentes mostrados al confirmar; si difieren del asiento que se congelaría, responde 409 commission.amounts_changed sin escribir. Un reintento de la misma clave devuelve su asiento original. Owner\u002Fmanager. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: commissions:settle Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommissionSettlementInput Respuestas EstadoDescripción201Asiento congelado, en unidades menores de la moneda del negocio (CommissionSettlementView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2633,"title":2634,"titles":2635,"content":2636,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscustomerscustomer_idaccountreceipts","GET \u002Fpayments\u002Fcustomers\u002F{customer_id}\u002Faccount\u002Freceipts",[2494],"Customer Account Receipts Tenant desde credencial. Permiso\u002Fscope customer_account:read (owner\u002Fmanager; F4-35). Historial de cobros del cliente, también los pagos a cuenta y los anulados, el más nuevo primero y paginado. unapplied_minor es lo que no está asignado a una tarea. La nota y el motivo de anulación son privados. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)limitqueryNointeger default 25offsetqueryNointeger default 0 Respuestas EstadoDescripción200Successful Response (AccountReceiptsView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2638,"title":2639,"titles":2640,"content":2641,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscustomerscustomer_idaccounttasks","GET \u002Fpayments\u002Fcustomers\u002F{customer_id}\u002Faccount\u002Ftasks",[2494],"Customer Account Tasks Tenant desde credencial. Permiso\u002Fscope customer_account:read (owner\u002Fmanager; F4-35). Desglose por tarea vigente de la cuenta del cliente: a cobrar, cobrado y saldo de cada una, las más recientes primero. Paginado (limit hasta 100, offset); open_only deja solo las tareas con saldo. Staff no accede. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)limitqueryNointeger default 25offsetqueryNointeger default 0open_onlyqueryNoboolean default false Respuestas EstadoDescripción200Successful Response (AccountTasksView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2643,"title":2644,"titles":2645,"content":2646,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentscustomerscustomer_idbalance","GET \u002Fpayments\u002Fcustomers\u002F{customer_id}\u002Fbalance",[2494],"Customer Balance Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid) Respuestas EstadoDescripción200Tenant desde credencial. Permiso\u002Fscope customer_balance:read (F4-35). Cuenta corriente del cliente, derivada siempre en el servidor: balance_minor = valor de las tareas vigentes menos todo lo cobrado (negativo = saldo a favor); on_account_minor = lo cobrado que no cubre una tarea vigente (pago a cuenta); debts = tareas con saldo pendiente, las más antiguas primero (hasta 50), solo con monto y fecha. Tareas canceladas, vencidas, fallidas o ausentes (no_show) no suman. Staff solo de clientes con los que trabaja; ajeno o inexistente da el mismo 403. Montos enteros en la unidad menor de la moneda (PYG y CLP sin decimales).",{"id":2648,"title":2649,"titles":2650,"content":2651,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpense-categories","GET \u002Fpayments\u002Fexpense-categories",[2494],"Listar categorías de gasto F4-73. Las 11 categorías fijas del proyecto (se crean en el primer uso) con key estable, kind (variable, fixed, staff, tax, fee, other), su nombre fijo en el idioma del proyecto (FIU-324: no se renombran) y si están ocultas. Owner\u002Fmanager o scope expenses:read. Autenticación: Clave de API o sesión del panelScopes: expenses:read Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseCategories)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2653,"title":2654,"titles":2655,"content":2656,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#patch-paymentsexpense-categoriescategory_id","PATCH \u002Fpayments\u002Fexpense-categories\u002F{category_id}",[2494],"Ocultar o mostrar una categoría de gasto F4-73. hidden la oculta de la carga del panel (o la vuelve a mostrar); los gastos ya cargados no cambian. FIU-324 (decisión del dueño, 2026-10-22): las categorías son fijas, no se renombran (un name en el cuerpo da 422); de ellas salen el DRE, el flujo y el informe MEI y para organizarse están las etiquetas (\u002Fpayments\u002Fexpense-tags). No se crean ni se borran categorías. Auditado. Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripcióncategory_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpenseCategoryPatch Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseCategoryView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2658,"title":2659,"titles":2660,"content":2661,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpense-tags","GET \u002Fpayments\u002Fexpense-tags",[2494],"Listar etiquetas de gastos FIU-324. Las etiquetas libres del proyecto, las más usadas primero (después por nombre), con la categoría que recuerda cada una (la última con la que se usó: al cargar un gasto con esa etiqueta y sin category_id, se usa esa) y cuántos gastos vigentes la tienen (el staff cuenta solo los suyos). Las etiquetas se crean al usarlas en un gasto (tags). Owner\u002Fmanager, staff (expenses:record_own) o scope expenses:read. Autenticación: Clave de API o sesión del panelScopes: expenses:read Respuestas EstadoDescripción200Etiquetas de gastos del proyecto (ExpenseTags)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2663,"title":2664,"titles":2665,"content":2666,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#patch-paymentsexpense-tagstag_id","PATCH \u002Fpayments\u002Fexpense-tags\u002F{tag_id}",[2494],"Renombrar una etiqueta de gastos FIU-324. Nuevo nombre (1 a 40 caracteres, espacios de más se recortan). Si otra etiqueta ya tiene ese nombre sin distinguir mayúsculas, 409 expense_tag.name_taken (se unen con merge). Auditado (expense_tag.renamed). Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripcióntag_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpenseTagPatch Respuestas EstadoDescripción200Etiquetas de gastos del proyecto (ExpenseTagView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2668,"title":2669,"titles":2670,"content":2671,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#delete-paymentsexpense-tagstag_id","DELETE \u002Fpayments\u002Fexpense-tags\u002F{tag_id}",[2494],"Borrar una etiqueta de gastos FIU-324. La etiqueta sale de todos sus gastos y se borra; los gastos no se tocan. Auditado (expense_tag.deleted). Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripcióntag_idpathSístring (uuid) Respuestas EstadoDescripción200Etiquetas de gastos del proyecto (ExpenseTagDeleted)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2673,"title":2674,"titles":2675,"content":2676,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsexpense-tagstag_idmerge","POST \u002Fpayments\u002Fexpense-tags\u002F{tag_id}\u002Fmerge",[2494],"Unir una etiqueta en otra FIU-324. «Uní moto con motos»: los gastos de tag_id pasan a into_id (un gasto que ya tenía las dos queda con una) y tag_id se borra. La que queda conserva su categoría recordada (si no tenía, toma la de la otra). La misma etiqueta, 409 expense_tag.merge_same; una que no existe, 404. Auditado (expense_tag.merged). Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripcióntag_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpenseTagMerge Respuestas EstadoDescripción200Etiquetas de gastos del proyecto (ExpenseTagMerged)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2678,"title":2679,"titles":2680,"content":2681,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpenses","GET \u002Fpayments\u002Fexpenses",[2494],"Listar gastos F4-73. Gastos del proyecto, del más reciente al más viejo (occurred_on = día local del proyecto). total_minor suma solo los aprobados del filtro, sin anulados, pendientes, rechazados ni de prueba (independiente de la página); include_voided e include_test solo los muestran y status (F4-74) deja solo ese estado. Staff (expenses:record_own, F4-74) ve solo los gastos que cargó. Un gasto sin resource_id es «General» (sin prorrateo). Importes en unidad menor de la moneda del proyecto (PYG y CLP sin decimales). Owner\u002Fmanager o scope expenses:read. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: expenses:read Parámetros NombreEnObligatorioTipoDescripciónstartqueryNostring \u002F null (null)endqueryNostring \u002F null (null)category_idqueryNostring \u002F null (null)resource_idqueryNostring \u002F null (null)tag_idqueryNostring \u002F null (null)FIU-324. Solo los gastos con esa etiqueta; total_minor pasa a ser «gastos con esta etiqueta» (un gasto puede tener varias, así que los totales de dos etiquetas no se suman).statusqueryNostring \u002F null (null)include_voidedqueryNoboolean default falseinclude_testqueryNoboolean default falselimitqueryNointeger default 50offsetqueryNointeger default 0 Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpensePage)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2683,"title":2684,"titles":2685,"content":2686,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsexpenses","POST \u002Fpayments\u002Fexpenses",[2494],"Cargar un gasto F4-73. Gasto en unidad menor de la moneda del proyecto (currency obligatoria e igual a la del proyecto; PYG y CLP sin decimales; mismo tope por moneda que los cobros manuales). occurred_on por defecto es hoy en la zona del proyecto; no acepta fechas futuras. La categoría «Comisiones del equipo» es una línea calculada y no se carga a mano (409 expense.computed_category). Idempotency-Key obligatoria: la misma clave con el mismo cuerpo devuelve el mismo gasto; con otro cuerpo, 409 payment.idempotency_conflict. is_test se guarda pero no suma. Queda en la auditoría y emite expense.recorded. Owner\u002Fmanager o scope expenses:record: queda approved. Staff (expenses:record_own, F4-74): queda pending_approval y no suma hasta que owner\u002Fmanager lo aprueben. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpenseInput Respuestas EstadoDescripción201Importes en unidades menores de la moneda del proyecto (ExpenseView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2688,"title":2689,"titles":2690,"content":2691,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpensesexpense_id","GET \u002Fpayments\u002Fexpenses\u002F{expense_id}",[2494],"Ver un gasto F4-79. Un gasto con su estado, comprobante (si tiene), revisión y anulación; es el detalle de un movimiento expense de Movimientos. Owner\u002Fmanager o scope expenses:read; staff (expenses:record_own) solo los que cargó (uno ajeno da 404, igual que uno inexistente). Autenticación: Clave de API o sesión del panelScopes: expenses:read Parámetros NombreEnObligatorioTipoDescripciónexpense_idpathSístring (uuid) Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2693,"title":2694,"titles":2695,"content":2696,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#patch-paymentsexpensesexpense_id","PATCH \u002Fpayments\u002Fexpenses\u002F{expense_id}",[2494],"Corregir un gasto F4-73. Solo cambian los campos presentes (null borra nota, método, beneficiario, recurso, servicio o persona). Cada cambio queda en la auditoría con el valor anterior y el nuevo (expense.updated). Un gasto anulado no se edita (409 expense.voided) ni uno rechazado (409 expense.rejected); sin cierre de período. Cada cambio queda también en el historial (GET ...\u002Fedits, F4-74). Moneda, origen y is_test no cambian. Owner\u002Fmanager o scope expenses:record; staff (expenses:record_own) solo los suyos mientras siguen pendientes (409 expense.not_pending; uno ajeno da 404). Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripciónexpense_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpensePatch Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2698,"title":2699,"titles":2700,"content":2701,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsexpensesexpense_idapprove","POST \u002Fpayments\u002Fexpenses\u002F{expense_id}\u002Fapprove",[2494],"Aprobar un gasto pendiente F4-74. Un gasto del staff en pending_approval pasa a approved (desde ahora suma) con revisor y fecha; emite expense.approved y queda en el historial y la auditoría. Repetir devuelve el mismo resultado. Un gasto que no está pendiente da 409 expense.not_pending; nadie aprueba lo que cargó (409 expense.self_review, también lo exige la base). Owner\u002Fmanager o scope expenses:approve. Autenticación: Clave de API o sesión del panelScopes: expenses:approve Parámetros NombreEnObligatorioTipoDescripciónexpense_idpathSístring (uuid) Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2703,"title":2704,"titles":2705,"content":2706,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpensesexpense_idedits","GET \u002Fpayments\u002Fexpenses\u002F{expense_id}\u002Fedits",[2494],"Historial de un gasto F4-74. Cada corrección, aprobación, rechazo o anulación del gasto, de la más vieja a la más nueva: quién (actor_type user o api_key, actor_id), cuándo y los campos que cambiaron con su valor anterior y el nuevo (ids y fechas como texto). Solo se agrega: no se edita ni se borra. Sin cierre de período. Owner\u002Fmanager o scope expenses:read; staff (expenses:record_own) solo el de los gastos que cargó (uno ajeno da 404). Autenticación: Clave de API o sesión del panelScopes: expenses:read Parámetros NombreEnObligatorioTipoDescripciónexpense_idpathSístring (uuid) Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseEdits)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2708,"title":2709,"titles":2710,"content":2711,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsexpensesexpense_idreject","POST \u002Fpayments\u002Fexpenses\u002F{expense_id}\u002Freject",[2494],"Rechazar un gasto pendiente F4-74. Un gasto del staff en pending_approval pasa a rejected con motivo obligatorio (review_reason), revisor y fecha; emite expense.rejected y queda en el historial y la auditoría. Rechazado es final: no suma, no se corrige ni se anula (409 expense.rejected); se carga uno nuevo. Repetir con el mismo motivo devuelve el mismo resultado; con otro, 409 expense.review_conflict. Nadie rechaza lo que cargó (409 expense.self_review). Owner\u002Fmanager o scope expenses:approve. Autenticación: Clave de API o sesión del panelScopes: expenses:approve Parámetros NombreEnObligatorioTipoDescripciónexpense_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpenseReject Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2713,"title":2714,"titles":2715,"content":2716,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsexpensesexpense_idvoid","POST \u002Fpayments\u002Fexpenses\u002F{expense_id}\u002Fvoid",[2494],"Anular un gasto F4-73. Un gasto nunca se borra: anular deja motivo, autor y fecha y emite expense.voided. Repetir con el mismo motivo devuelve el mismo resultado; con otro motivo, 409 payment.void_conflict. Un gasto rechazado no se anula (409 expense.rejected). Owner\u002Fmanager o scope expenses:void. Autenticación: Clave de API o sesión del panelScopes: expenses:void Parámetros NombreEnObligatorioTipoDescripciónexpense_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExpenseVoid Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpenseView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2718,"title":2719,"titles":2720,"content":2721,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpenseshigh-amount","GET \u002Fpayments\u002Fexpenses\u002Fhigh-amount",[2494],"Umbral de monto alto de la carga conversada (segunda confirmación) F4-83. Desde cuánto un gasto cargado conversando (Wagy, MCP, bot de equipo) pide una segunda confirmación: el doble del precio mensual del plan del proyecto en su moneda (decisión del dueño, no un número fijo). Sin precio publicado para la moneda, threshold_minor es nulo y todo monto cuenta como alto. Con amount_minor responde además si ese monto alcanza el umbral (inclusive). No escribe nada. Owner\u002Fmanager, staff (que carga los suyos) o scope expenses:record. El número (threshold_minor) solo lo recibe el owner o una API key que emitió el owner (rol vigente): ver el plan es solo suyo. Manager, staff y las demás keys reciben threshold_minor: null y usan high. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripciónamount_minorqueryNointegerMonto a comparar, en unidad menor de la moneda del proyecto (PYG y CLP sin decimales). Respuestas EstadoDescripción200Umbral en unidades menores de la moneda del proyecto (ExpenseHighAmount)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2723,"title":2724,"titles":2725,"content":2726,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsexpensespending","GET \u002Fpayments\u002Fexpenses\u002Fpending",[2494],"Contar los gastos por aprobar F4-74. Contador de quien aprueba: cantidad y suma de los gastos del staff en pending_approval, sin los de prueba, en unidad menor de la moneda del proyecto. Owner\u002Fmanager o scope expenses:approve. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: expenses:approve Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (ExpensePending)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2728,"title":2729,"titles":2730,"content":2731,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceaccounts","GET \u002Fpayments\u002Ffinance\u002Faccounts",[2494],"Cuentas que componen el saldo actual o el crédito del Resumen Proyección canónica F4-35, sin filtro de período. Owner\u002Fmanager o scope finance:analyze; nunca staff. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónbalancequeryNostring debt, credit default debtcursorqueryNostring (null) (uuid)limitqueryNointeger default 50 Respuestas EstadoDescripción200Cuentas con saldo del signo seleccionado, paginadas por cliente (FinanceAccounts)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2733,"title":2734,"titles":2735,"content":2736,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceavailability","GET \u002Fpayments\u002Ffinance\u002Favailability",[2494],"Finance Availability Tenant desde credencial; unidades menores de la moneda del negocio. Staff solo recibos y caja propios. Ver docs\u002Fapi\u002Ffinanciero.md. Autenticación: Clave de API o sesión del panelScopes: payments:read Respuestas EstadoDescripción200Successful Response (FinanceAvailability)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2738,"title":2739,"titles":2740,"content":2741,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancecollections","GET \u002Fpayments\u002Ffinance\u002Fcollections",[2494],"Finance Collections F4-26. Números de cobros del período por fecha local de cobro, en la moneda y zona del proyecto: bruto, devuelto, comisión del proveedor (Mercado Pago, fee_details), comisión de Fiuit y neto; por método, servicio y día\u002Fsemana; y lo estimado (completado sin ningún cobro). Solo lectura. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Sin anulados ni de prueba. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)service_idqueryNostring \u002F null (null)resource_idqueryNostring \u002F null (null)granularityqueryNostring day, week default day Respuestas EstadoDescripción200Successful Response (Collections)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2743,"title":2744,"titles":2745,"content":2746,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancecollectionsexport","GET \u002Fpayments\u002Ffinance\u002Fcollections\u002Fexport",[2494],"Finance Collections Export F4-26. CSV de conciliación de cobros por fecha local de cobro: bruto, devuelto, comisión del proveedor (y si fue informada), comisión de Fiuit, neto e id del pago en el proveedor. Owner\u002Fmanager o API key con finance:analyze y finance:export; staff\u002Fviewer cerrados. Sin anulados ni de prueba. Autenticación: Clave de API o sesión del panelScopes: finance:analyze, finance:export Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)service_idqueryNostring \u002F null (null)resource_idqueryNostring \u002F null (null) Respuestas EstadoDescripción200CSV auditado (finance.collections_exported), un cobro por fila, en streaming. Máximo 50000 filas; si las supera responde 409 finance.export_too_large antes de enviar datos. (string)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2748,"title":2749,"titles":2750,"content":2751,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancecustomers","GET \u002Fpayments\u002Ffinance\u002Fcustomers",[2494],"Finance Customers Lectura de valores congelados y cuenta F4-35. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Importes en unidad menor, sin PII adicional. Datos actuales, estimaciones rotuladas. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónoffsetqueryNointeger default 0limitqueryNointeger default 50at_riskqueryNoboolean default false Respuestas EstadoDescripción200Successful Response (CustomerFinancePage)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2753,"title":2754,"titles":2755,"content":2756,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancecustomerscustomer_id","GET \u002Fpayments\u002Ffinance\u002Fcustomers\u002F{customer_id}",[2494],"Finance Customer Lectura de valores congelados y cuenta F4-35. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Importes en unidad menor, sin PII adicional. Datos actuales, estimaciones rotuladas. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (CustomerFinancePage)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2758,"title":2759,"titles":2760,"content":2761,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancedebt","GET \u002Fpayments\u002Ffinance\u002Fdebt",[2494],"Finance Debt Lectura de valores congelados y cuenta F4-35. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Importes en unidad menor, sin PII adicional. Datos actuales, estimaciones rotuladas. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónoffsetqueryNointeger default 0limitqueryNointeger default 50customer_idqueryNostring \u002F null (null)completed_onlyqueryNoboolean default false Respuestas EstadoDescripción200Successful Response (FinanceDebt)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2763,"title":2764,"titles":2765,"content":2766,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceexport","GET \u002Fpayments\u002Ffinance\u002Fexport",[2494],"Finance Export Tenant desde credencial; unidades menores de la moneda del negocio. Staff solo recibos y caja propios. Ver docs\u002Fapi\u002Ffinanciero.md. Autenticación: Clave de API o sesión del panelScopes: finance:export, payments:read Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)customer_idqueryNostring \u002F null (null)member_idqueryNostring \u002F null (null)methodqueryNostring \u002F null (null)statusqueryNostring \u002F null (null)kindqueryNostring \u002F null (null)groupqueryNostring \u002F null (null)F4-79, chips de Movimientos: collections = cobros y caja (sin gastos ni comisiones de cobro), expenses = gastos cargados, commissions = comisiones de cobro. Sin valor: todo.searchqueryNostring \u002F null (null)tag_idqueryNostring \u002F null (null)FIU-324. Solo los gastos con esa etiqueta (cobros y comisiones no llevan etiquetas). La búsqueda (search) también encuentra gastos por el nombre de sus etiquetas.cursorqueryNostring \u002F null (null)limitqueryNointeger default 50 Respuestas EstadoDescripción200CSV auditado con filtros, permisos y orden idénticos al libro, enviado en streaming (una sola consulta leída por lotes). Máximo 50000 filas; si las supera responde 409 finance.export_too_large antes de enviar datos. (string)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2768,"title":2769,"titles":2770,"content":2771,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceforecast","GET \u002Fpayments\u002Ffinance\u002Fforecast",[2494],"Finance Forecast Lectura de valores congelados y cuenta F4-35. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Importes en unidad menor, sin PII adicional. Datos actuales, estimaciones rotuladas. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Respuestas EstadoDescripción200Successful Response (FinanceForecast)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2773,"title":2774,"titles":2775,"content":2776,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancemovements","GET \u002Fpayments\u002Ffinance\u002Fmovements",[2494],"Finance Movements Tenant desde credencial; unidades menores de la moneda del negocio. Staff solo recibos y caja propios. Ver docs\u002Fapi\u002Ffinanciero.md. Autenticación: Clave de API o sesión del panelScopes: payments:read Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)customer_idqueryNostring \u002F null (null)member_idqueryNostring \u002F null (null)methodqueryNostring \u002F null (null)statusqueryNostring \u002F null (null)kindqueryNostring \u002F null (null)groupqueryNostring \u002F null (null)F4-79, chips de Movimientos: collections = cobros y caja (sin gastos ni comisiones de cobro), expenses = gastos cargados, commissions = comisiones de cobro. Sin valor: todo.searchqueryNostring \u002F null (null)tag_idqueryNostring \u002F null (null)FIU-324. Solo los gastos con esa etiqueta (cobros y comisiones no llevan etiquetas). La búsqueda (search) también encuentra gastos por el nombre de sus etiquetas.cursorqueryNostring \u002F null (null)limitqueryNointeger default 50 Respuestas EstadoDescripción200Successful Response (FinanceMovements)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2778,"title":2779,"titles":2780,"content":2781,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceoverview","GET \u002Fpayments\u002Ffinance\u002Foverview",[2494],"Resumen mensual de Dinero F4-80. Para el gráfico del Inicio: Entró \u002F Salió \u002F Quedó realizados de los 2 períodos anteriores y del actual (hasta hoy) y, en el actual y el siguiente, lo que falta, siempre una suma de cosas con fecha: tareas agendadas (lo ya recibido de pago o seña antes del período es «seguro»; el saldo, «previsto»), gastos recurrentes que vencen («seguros»), comisión del equipo estimada sobre esas tareas y gastos por aprobar («previstos»). period: month, week (lunes a domingo) o day (solo hoy). La comisión de cobro no se estima y los saldos por cobrar no tienen vencimiento: ambos se avisan en notes. Solo lectura. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónperiodqueryNostring day, week, month default month Respuestas EstadoDescripción200Successful Response (FinanceOverview)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2783,"title":2784,"titles":2785,"content":2786,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancereport-evidence","GET \u002Fpayments\u002Ffinance\u002Freport-evidence",[2494],"Finance Report Evidence Lectura de valores congelados y cuenta F4-35. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Importes en unidad menor, sin PII adicional. Datos actuales, estimaciones rotuladas. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)dimensionqueryNostring service, customer, member, method, weekday, hour, zone, channel, origin, cohort default servicekeyqueryNostring \u002F null (null)offsetqueryNointeger default 0limitqueryNointeger default 50 Respuestas EstadoDescripción200Successful Response (ReportEvidence)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2788,"title":2789,"titles":2790,"content":2791,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancereports","GET \u002Fpayments\u002Ffinance\u002Freports",[2494],"Finance Reports Lectura de valores congelados y cuenta F4-35. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. Importes en unidad menor, sin PII adicional. Datos actuales, estimaciones rotuladas. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)dimensionqueryNostring service, customer, member, method, weekday, hour, zone, channel, origin, cohort default servicekeyqueryNostring \u002F null (null)offsetqueryNointeger default 0limitqueryNointeger default 50 Respuestas EstadoDescripción200Successful Response (FinanceReport)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2793,"title":2794,"titles":2795,"content":2796,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceresult","GET \u002Fpayments\u002Ffinance\u002Fresult",[2494],"Resultado del período F4-76. Resultado con base caja en la moneda y zona del proyecto: Entró (cobrado menos devuelto, misma población que finance\u002Fcollections: sin anulados, de prueba, en revisión ni cobros con devolución parcial de monto desconocido), Salió (gastos aprobados + línea calculada de comisiones del equipo + línea calculada de comisiones de cobro informadas) y Quedó, con margen, vendido como dato secundario y comparación contra el período anterior. group_by period (día o semana), resource, service o category; filtros service_id y resource_id. Gastos sin recurso o servicio = «General» (key null), sin prorrateo; los ajustes manuales de comisión van al recurso de la persona ese día (por servicio, a «General»). Advertencias: missing_expenses, refund_amount_unavailable, provider_fee_unknown, resource_overlap. Solo lectura. Owner\u002Fmanager o scope finance:analyze; staff\u002Fviewer cerrados. 409 finance.invalid_period. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)service_idqueryNostring \u002F null (null)resource_idqueryNostring \u002F null (null)group_byqueryNostring period, resource, service, category default periodgranularityqueryNostring day, week default day Respuestas EstadoDescripción200Successful Response (FinanceResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2798,"title":2799,"titles":2800,"content":2801,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceresultexport","GET \u002Fpayments\u002Ffinance\u002Fresult\u002Fexport",[2494],"Exportar el Resultado (XLSX para el contador o CSV) F4-81. Los números del Resultado (GET \u002Fpayments\u002Ffinance\u002Fresult) como archivo, sin recalcular. CSV: un movimiento por renglón (cobro, devolución, comisión de cobro, comisión del equipo, gasto) con kind, category, resource, service, member, customer, amount en decimales legibles y amount_minor; la suma de amount_minor es el result_minor del período. UTF-8 con BOM; separador ; y coma decimal si la moneda usa coma (BRL, ARS, CLP, COP, PYG, UYU, EUR), , y punto si no (MXN, PEN, USD). PYG y CLP sin decimales. Fechas: día local del proyecto. XLSX: hojas Resumen, Movimientos, Por categoría, Por recurso, Por servicio, Comisiones y Cobros electrónicos (bruto, comisión, neto e id del pago en Mercado Pago). Textos con = + - @ al inicio llevan apóstrofo. Owner\u002Fmanager o API key con finance:analyze y finance:export; staff\u002Fviewer cerrados. receipt_url va vacío: el comprobante de cada gasto viaja en el paquete ZIP (POST \u002Fpayments\u002Ffinance\u002Fresult\u002Fpackages), donde la columna dice su archivo. PDF (F4-82): una hoja A4 con Entró, Salió y Quedó, el detalle, las 5 categorías que más salieron, los avisos y un espacio para firma; importes con el formato de la moneda (PYG con su código). Autenticación: Clave de API o sesión del panelScopes: finance:analyze, finance:export Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)service_idqueryNostring \u002F null (null)resource_idqueryNostring \u002F null (null)formatqueryNostring xlsx, csv, pdf default xlsxxlsx: libro con 7 hojas; csv: solo los movimientos (UTF-8 con BOM); pdf: resumen de una hoja (Entró, Salió, Quedó, top categorías y firma, F4-82)langqueryNostring \u002F null (null)Idioma de hojas, encabezados del XLSX y etiquetas; por defecto, el del proyecto Respuestas EstadoDescripción200Archivo auditado (finance.exported con report: result), transmitido en partes. Máximo 50000 renglones; si los supera responde 409 finance.export_too_large antes de enviar datos. El encabezado X-Export-Rows trae la cantidad de movimientos. (string)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2803,"title":2804,"titles":2805,"content":2806,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceresultlines","GET \u002Fpayments\u002Ffinance\u002Fresult\u002Flines",[2494],"Composición de un número del Resultado F4-80. Los renglones que suman un número del Resultado (los mismos que exporta finance\u002Fresult\u002Fexport): cobros (income), devoluciones (refund), comisiones de cobro (payment_fee), comisiones del equipo calculadas (staff_commission) y gastos aprobados (expense), con signo y por día local. Mismos filtros que finance\u002Fresult; row abre una fila de group_by (general = «General»), side el lado Entró (in) o Salió (out) y kind un renglón del DRE. total_minor suma todos los que cumplen el filtro (data trae hasta limit, más reciente primero): Entró, -Salió, Quedó o el resultado de la fila. Solo lectura. Owner\u002Fmanager o scope finance:analyze; customer_name con API key solo con customer_account:read. 409 finance.invalid_period. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)service_idqueryNostring \u002F null (null)resource_idqueryNostring \u002F null (null)group_byqueryNostring period, resource, service, category default periodgranularityqueryNostring day, week default dayrowqueryNostring \u002F null (null)key de una fila de group_by (fecha, id de recurso o servicio, key de categoría); general = la fila «General» (key null). Sin row, todo el períodosidequeryNostring \u002F null (null)in: lo que compone Entró (cobros y devoluciones); out: lo que compone SaliókindqueryNostring \u002F null (null)Solo un tipo de renglón (un renglón del DRE)limitqueryNointeger default 200Renglones a devolver; el total suma todos Respuestas EstadoDescripción200Successful Response (FinanceResultLines)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2808,"title":2809,"titles":2810,"content":2811,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceresultpackages","GET \u002Fpayments\u002Ffinance\u002Fresult\u002Fpackages",[2494],"Mis paquetes para el contador F4-82. Cada persona (o key) ve solo sus paquetes. Owner\u002Fmanager o API key con finance:analyze y finance:export. Autenticación: Clave de API o sesión del panelScopes: finance:analyze, finance:export Respuestas EstadoDescripción200Los últimos 20 paquetes de quien consulta (sesión o API key), los más nuevos primero (FinancePackages)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2813,"title":2814,"titles":2815,"content":2816,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsfinanceresultpackages","POST \u002Fpayments\u002Ffinance\u002Fresult\u002Fpackages",[2494],"Pedir el paquete ZIP para el contador del período F4-82. Un ZIP con el XLSX de GET \u002Fpayments\u002Ffinance\u002Fresult\u002Fexport (las 7 hojas, con la columna «Comprobante» apuntando al archivo dentro del ZIP), el PDF de resumen de una hoja (format=pdf) y los comprobantes de los gastos aprobados del período, con nombre AAAA-MM-DD_\u003Cmonto>_\u003Ccategoria>.\u003Cext> en la carpeta comprovantes\u002F, comprobantes\u002F o receipts\u002F según lang. Mismos números que el Resultado, sin recalcular. Los comprobantes solo van si lo pide una sesión (owner\u002Fmanager): con API key el paquete lleva XLSX y PDF (receipts_included: false). Si es chico (hasta 2000 renglones y 20 comprobantes que suman 5 MB) responde 201 listo; si no, 202 pending y lo arma el worker. Topes: 50000 renglones (409 finance.export_too_large), 1000 comprobantes y 100 MB de comprobantes (409 finance.package_too_large); un paquete abierto por persona (409 finance.package_in_progress). El archivo vence a las 48 h. Auditado (finance.exported con report: package). Autenticación: Clave de API o sesión del panelScopes: finance:analyze, finance:export Cuerpo de la solicitud (obligatorio) application\u002Fjson: FinancePackageInput Respuestas EstadoDescripción201Paquete chico, armado en el momento (status done, con download_url) (FinancePackageView)202Paquete grande, lo arma el worker (status pending); se avisa a quien lo pidió al terminar (FinancePackageView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2818,"title":2819,"titles":2820,"content":2821,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceresultpackagespackage_id","GET \u002Fpayments\u002Ffinance\u002Fresult\u002Fpackages\u002F{package_id}",[2494],"Estado de un paquete F4-82. El paquete de otra persona o de otro proyecto responde 404 finance.package_not_found. Autenticación: Clave de API o sesión del panelScopes: finance:analyze, finance:export Parámetros NombreEnObligatorioTipoDescripciónpackage_idpathSístring (uuid) Respuestas EstadoDescripción200Estado y, si está listo, un link de descarga firmado nuevo (vale 5 minutos) (FinancePackageView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2823,"title":2824,"titles":2825,"content":2826,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinanceresultpackagespackage_iddownload","GET \u002Fpayments\u002Ffinance\u002Fresult\u002Fpackages\u002F{package_id}\u002Fdownload",[2494],"Bajar el ZIP con el link firmado F4-82. Usá el download_url de GET \u002Fpayments\u002Ffinance\u002Fresult\u002Fpackages\u002F{package_id} tal cual, con la misma sesión o API key que lo pidió. Link vencido o adulterado → 403 finance.package_link_invalid; paquete vencido → 404 finance.package_expired; todavía armándose → 404 finance.package_not_ready. Autenticación: Clave de API o sesión del panelScopes: finance:analyze, finance:export Parámetros NombreEnObligatorioTipoDescripciónpackage_idpathSístring (uuid)expiresquerySíintegersignaturequerySístring Respuestas EstadoDescripción200El ZIP (verificado por sha256). Auditado como finance.package_downloaded. (string)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2828,"title":2829,"titles":2830,"content":2831,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancesummary","GET \u002Fpayments\u002Ffinance\u002Fsummary",[2494],"Finance Summary Tenant desde credencial; unidades menores de la moneda del negocio. Staff solo recibos y caja propios. Ver docs\u002Fapi\u002Ffinanciero.md. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripcióngranularityqueryNostring day, week default daystartquerySístring (date)endquerySístring (date) Respuestas EstadoDescripción200Successful Response (FinanceSummary)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2833,"title":2834,"titles":2835,"content":2836,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsfinancetasks","GET \u002Fpayments\u002Ffinance\u002Ftasks",[2494],"Finance Tasks Tenant desde credencial; unidades menores de la moneda del negocio. Staff solo recibos y caja propios. Ver docs\u002Fapi\u002Ffinanciero.md. Autenticación: Clave de API o sesión del panelScopes: finance:analyze Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)customer_idqueryNostring \u002F null (null)member_idqueryNostring \u002F null (null)methodqueryNostring \u002F null (null)statusqueryNostring \u002F null (null)kindqueryNostring \u002F null (null)groupqueryNostring \u002F null (null)F4-79, chips de Movimientos: collections = cobros y caja (sin gastos ni comisiones de cobro), expenses = gastos cargados, commissions = comisiones de cobro. Sin valor: todo.searchqueryNostring \u002F null (null)cursorqueryNostring \u002F null (null)limitqueryNointeger default 50 Respuestas EstadoDescripción200Successful Response (FinanceTasks)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2838,"title":2839,"titles":2840,"content":2841,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsmanual","POST \u002Fpayments\u002Fmanual",[2494],"Record Manual Cobro unificado (F3-492), el único comando para registrar un pago recibido fuera de la pasarela, de una tarea o seña (allocations) o a cuenta del cliente (sin allocations); la venta y renovación de un plan lo usan por dentro. method es obligatorio (cash, card, transfer, pix, mercadopago = recibido por Mercado Pago fuera de Fiuit, other). audit_log payment.recorded guarda quién, monto, forma de pago, propósito y origen (task, account o plan). Tenant desde credencial. Scope payments:record; cookie + CSRF. Bearer exige Idempotency-Key en todos los POST (máximo 128 caracteres); conflicto del ledger Bearer es 422, conflicto de dominio 409. Owner\u002Fmanager; staff solo tareas asignadas (no anula ni ajusta) y solo si el dueño no apagó «El repartidor puede cobrar» (staff_can_collect, encendido por defecto; apagado por el dueño, 403). Sin llamadas a proveedores. Montos enteros minor units, PYG exponente 0. Clave de registro permanente; misma clave con otros datos devuelve 409. Duplicados por tarea\u002Fmonto\u002Fmétodo en ventana UTC de 5 minutos se rechazan. Los cobros paid aplicados a una tarea se suman con los de pasarela; al cubrir la seña requerida, pending_payment pasa a confirmed de forma auditada e idempotente. El crédito a cuenta sin asignar no confirma. Una tarea cubierta rechaza ajustes de cobro y asignaciones manuales (409 payment_conflict, detail payment.booking_covered_by_plan); primero quitar el plan. Una tarea que queda pagada por completo con este cobro (efectivo o transferencia) también hace avanzar la etapa con la salida «Avanza sola al recibir el pago» (#1064), igual que un cobro de Mercado Pago; un pago parcial no la mueve. FIU-473 impide imputar un adicional de presupuesto sin aprobar (409 payment_conflict, detail payment.quote_pending), incluso con allow_overpayment. Se puede registrar dinero recibido sin imputarlo a esa diferencia; lo ya imputado se conserva. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: RecordManual Respuestas EstadoDescripción201Successful Response (ManualView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2843,"title":2844,"titles":2845,"content":2846,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsmanualcharge_idallocations","POST \u002Fpayments\u002Fmanual\u002F{charge_id}\u002Fallocations",[2494],"Allocate Manual Tenant desde credencial. Scope payments:record; cookie + CSRF. Bearer exige Idempotency-Key en todos los POST (máximo 128 caracteres); conflicto del ledger Bearer es 422, conflicto de dominio 409. Owner\u002Fmanager; staff solo tareas asignadas (no anula ni ajusta) y solo si el dueño no apagó «El repartidor puede cobrar» (staff_can_collect, encendido por defecto; apagado por el dueño, 403). Sin llamadas a proveedores. Montos enteros minor units, PYG exponente 0. Clave de registro permanente; misma clave con otros datos devuelve 409. Duplicados por tarea\u002Fmonto\u002Fmétodo en ventana UTC de 5 minutos se rechazan. Asignar un recibo paid concilia la seña; el total manual aplicado más pasarela debe alcanzar la seña para confirmar; replay no duplica confirmación ni avisos. Una tarea cubierta rechaza ajustes de cobro y asignaciones manuales (409 payment_conflict, detail payment.booking_covered_by_plan); primero quitar el plan. En FIU-473, la imputación respeta el último presupuesto aceptado; un adicional pendiente o rechazado devuelve 409 payment_conflict con detail payment.quote_pending, incluso con allow_overpayment. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid)Idempotency-KeyheaderNostring \u002F null (null) Cuerpo de la solicitud (obligatorio) application\u002Fjson: AllocationInput Respuestas EstadoDescripción200Successful Response (ManualView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2848,"title":2849,"titles":2850,"content":2851,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsmanualcharge_idvoid","POST \u002Fpayments\u002Fmanual\u002F{charge_id}\u002Fvoid",[2494],"Void Manual Tenant desde credencial. Scope payments:void; cookie + CSRF. Bearer exige Idempotency-Key en todos los POST (máximo 128 caracteres); conflicto del ledger Bearer es 422, conflicto de dominio 409. Owner\u002Fmanager; staff solo tareas asignadas (no anula ni ajusta). Sin llamadas a proveedores. Montos enteros minor units, PYG exponente 0. Clave de registro permanente; misma clave con otros datos devuelve 409. Duplicados por tarea\u002Fmonto\u002Fmétodo en ventana UTC de 5 minutos se rechazan. Si el total válido queda debajo de la seña, una tarea confirmed con payment_status paid vuelve a pending_payment únicamente antes de iniciar y antes de start_at (si existe). Conserva horario y capacidad, sin nuevo vencimiento; no reabre estados iniciados o terminales. Reembolso parcial sin monto conciliado impide deducir el faltante. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripcióncharge_idpathSístring (uuid)Idempotency-KeyheaderNostring \u002F null (null) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ReasonInput Respuestas EstadoDescripción200Successful Response (ManualView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2853,"title":2854,"titles":2855,"content":2856,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentspayment-linksavailability","GET \u002Fpayments\u002Fpayment-links\u002Favailability",[2494],"¿Se puede cobrar con link? F4-20. Permiso y scope payments:link. Solo available y el motivo (reason, los de MercadoPagoMethodView); sin datos de la cuenta. El panel muestra «Cobrar» solo si está disponible. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Successful Response (PaymentLinkAvailability)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)",{"id":2858,"title":2859,"titles":2860,"content":2861,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentsrecurring-expenses","GET \u002Fpayments\u002Frecurring-expenses",[2494],"Gastos que se repiten F4-75. Los gastos recurrentes del proyecto (alquiler, sueldos fijos, servicios) con su próxima fecha (next_on, día local) y status (active, paused, ended). Owner\u002Fmanager o scope expenses:read. Autenticación: Clave de API o sesión del panelScopes: expenses:read Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (RecurringPage)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2863,"title":2864,"titles":2865,"content":2866,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsrecurring-expenses","POST \u002Fpayments\u002Frecurring-expenses",[2494],"Crear un gasto que se repite cada semana o cada mes F4-75. cadence weekly (day 1 lunes … 7 domingo) o monthly (day 1-31; en meses más cortos, el último día). Importe en unidad menor de la moneda del proyecto (currency obligatoria e igual; mismo tope que los gastos). starts_on por defecto hoy, como mucho un año para atrás (409 expense_recurring.starts_too_early); ends_on opcional. Cada fecha que toca carga un gasto aprobado con source: recurring y recurring_id, el mismo día (lo que ya tocaba desde starts_on se carga al crear); nunca dos veces la misma fecha, aunque haya reintentos o dos procesos a la vez. Sin nómina: un sueldo fijo es un recurrente de «Sueldos». «Comisiones del equipo» no se carga (409 expense.computed_category). Idempotency-Key obligatoria: misma clave y cuerpo devuelve el mismo recurrente; otro cuerpo, 409 payment.idempotency_conflict. Auditado. Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: RecurringInput Respuestas EstadoDescripción201Importes en unidades menores de la moneda del proyecto (RecurringView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2868,"title":2869,"titles":2870,"content":2871,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#patch-paymentsrecurring-expensesrecurring_id","PATCH \u002Fpayments\u002Frecurring-expenses\u002F{recurring_id}",[2494],"Cambiar, pausar, reanudar o terminar un gasto que se repite F4-75. Cambia lo que viene de acá en adelante: los gastos ya cargados no se tocan (se corrigen o anulan como cualquier gasto). paused: true no genera; al reanudar sigue desde hoy (lo pausado no se recupera). Cambiar cadence o day recalcula desde hoy; ends_on termina (status: ended) y quitarlo lo retoma. Auditado con antes y después. Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripciónrecurring_idpathSístring (uuid)Idempotency-KeyheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: RecurringPatch Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (RecurringView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2873,"title":2874,"titles":2875,"content":2876,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentsrecurring-expensesrecurring_idskip","POST \u002Fpayments\u002Frecurring-expenses\u002F{recurring_id}\u002Fskip",[2494],"Saltear la próxima fecha de un gasto que se repite F4-75. on tiene que ser la próxima fecha (next_on): pasa a la siguiente sin cargar el gasto. Repetirlo no saltea otra; una fecha posterior da 409 expense_recurring.not_next, una ya cargada 409 expense_recurring.already_recorded (se anula el gasto) y un recurrente terminado 409 expense_recurring.ended. Auditado. Owner\u002Fmanager o scope expenses:record. Autenticación: Clave de API o sesión del panelScopes: expenses:record Parámetros NombreEnObligatorioTipoDescripciónrecurring_idpathSístring (uuid)Idempotency-KeyheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: RecurringSkip Respuestas EstadoDescripción200Importes en unidades menores de la moneda del proyecto (RecurringView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2878,"title":2879,"titles":2880,"content":2881,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#get-paymentstask-margins","GET \u002Fpayments\u002Ftask-margins",[2494],"Margen por tarea (líneas con costo) FIU-472: finance:analyze y, desde FIU-597, tasks:costs (por defecto solo el dueño; una API key, con payments:read_balance). Precio - costo de las líneas con costo cargado, por\ntarea; una tarea sin ningún costo no aparece (no se muestra 100 % de margen). FIU-472: margen por tarea en Dinero, finance:analyze y tasks:costs (FIU-597: por defecto solo el dueño; el resto, 403). Precio menos costo de las líneas con costo cargado; una tarea sin ningún costo no aparece (nunca un 100 %). margin_bp: puntos básicos (2500 = 25,00 %). Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Successful Response (TaskMargins)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2883,"title":2884,"titles":2885,"content":2886,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentstips","POST \u002Fpayments\u002Ftips",[2494],"Registrar una propina Propina para un profesional: no es venta del negocio ni base de comisión. Staff solo para sí (si el negocio permite que cobre); una API key debe indicar member_id. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: payments:record Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístringUUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. Cuerpo de la solicitud (obligatorio) application\u002Fjson: TipInput Respuestas EstadoDescripción201Importes en unidades menores de la moneda del negocio (TipView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2888,"title":2889,"titles":2890,"content":2891,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fpayments#post-paymentstipstip_idvoid","POST \u002Fpayments\u002Ftips\u002F{tip_id}\u002Fvoid",[2494],"Anular una propina Con motivo; resta el día en que se anula. Owner\u002Fmanager. No usa workspace_id externo. Autenticación: Clave de API o sesión del panelScopes: payments:void Parámetros NombreEnObligatorioTipoDescripcióntip_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ReasonInput Respuestas EstadoDescripción200Importes en unidades menores de la moneda del negocio (TipView)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2893,"title":2894,"titles":2895,"content":2896,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats","API · stats",[],"Operaciones de stats del contrato OpenAPI que aceptan una clave de API.",{"id":2898,"title":2899,"titles":2900,"content":2901,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-controlsummary","GET \u002Fcontrol\u002Fsummary",[2894],"Panel de control - snapshot con filtros (owner y manager; staff y viewer 403) Snapshot de solo lectura del proyecto (F3-234), calculado en el servidor en una transacción con el tenant de la credencial, con una única vista temporal REPEATABLE READ para todos los bloques. Filtros (service_id, resource_id, from, to; días locales incluidos, por defecto hoy, máximo el mismo tope que \u002Fteam\u002Foverview, 422 invalid_stats_range) para todos los bloques: servicio y persona limitan las tareas, los montos, los pagos en revisión y la saturación; las fechas, lo que tiene fecha. Atención ahora (es «ahora», sin fechas) - conversaciones que esperan respuesta (misma regla que «Necesita atención» del Inbox; no pertenecen a un servicio ni a una persona, no se filtran) y las derivadas por el bot (bot_handoff\u002Fbot_fallback), tareas por motivo con los mismos filtros de GET \u002Fwork-items que usa Hoy (pueden solaparse: no se suman) y cobros electrónicos pending. En curso - tareas del período en pending_payment, confirmed o checked_in, por etapa nativa de cada servicio (service_id identifica la clave), según el estado real de la tarea. Números del período - agendadas, completadas y, con finance:analyze, vendido por fecha de trabajo y cobrado por fecha del pago (incluye tareas trabajadas fuera del período). Pagos en revisión sin fechas. (sin filtro, GET \u002Fpayments\u002Ffinance\u002Fsummary; con servicio o persona, atribuidos a esas tareas) y por cobrar (saldo de cuentas al momento; null con filtro de servicio o persona), en unidad menor de currency. Saturación - ocupación (minutos reservados sobre disponibles del horario, como \u002Fresources\u002F{id}\u002Fstats) por día de la semana y hora local, sumando los recursos activos con horario o el recurso filtrado. Permisos por bloque - sesión, control:read y la matriz por rol; API key, bookings:read, el bloque de conversaciones exige messages:read y el de dinero finance:analyze (sin ellos llegan null). Sin PII. Autenticación: Clave de API o sesión del panelScopes: bookings:read, control:read, messages:read Parámetros NombreEnObligatorioTipoDescripciónservice_idqueryNostring (uuid)resource_idqueryNostring (uuid)Persona o recurso (staff = su recurso)fromqueryNostring (date)Primer día local (por defecto hoy)toqueryNostring (date)Último día local incluido (por defecto from) Respuestas EstadoDescripción200OK (ControlSummary)defaultError (RFC 9457) (Problem)",{"id":2903,"title":2904,"titles":2905,"content":2906,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-productsidperformance","GET \u002Fproducts\u002F{id}\u002Fperformance",[2894],"Rendimiento de un producto en unidades y tareas por día, semana o mes, con el período anterior F3-328. Rendimiento de un producto en CANTIDADES (nunca dinero: vive en Financiero). Panel: permiso performance:read (owner, manager y colaborador; no es de dinero; el colaborador solo sobre lo suyo: scope: own, las tareas asignadas a los recursos enlazados a su usuario, nunca los totales del negocio); API key: scope bookings:read (totales del negocio). Líneas del pedido de tareas completadas, no de prueba, con el criterio de GET \u002Fproducts\u002Fstats: units (por defecto, Σ qty) y tasks. Período anterior y tramos como en GET \u002Fservices\u002F{id}\u002Fperformance. Máximo 366 días; una consulta agrupada. Autenticación: Clave de API o sesión del panelScopes: performance:read, bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)fromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido)granularityqueryNostring day, week, month default dayTramo de la serie: day, week (lunes) o month Respuestas EstadoDescripción200Successful Response (ItemPerformanceOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2908,"title":2909,"titles":2910,"content":2911,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-resourcesidstats","GET \u002Fresources\u002F{id}\u002Fstats",[2894],"Estadísticas de un recurso (owner, manager, staff solo el suyo; viewer 403) Ocupación por día y, con granularity=hour, matriz día de la semana × hora local (mapa de calor); cantidad de agendas por estado y tasas de ausencia y cancelación; mezcla de servicios; y facturación (suma de price_cents de servicios completados, seña cobrada y pendiente, moneda del negocio). revenue es null para el rol staff. Las reservas is_test se excluyen. Otro tenant o, para staff, un recurso ajeno: 404. Mismas reglas de rango y ocupación que \u002Fteam\u002Foverview. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringfromquerySístring (date)toquerySístring (date)granularityqueryNostring hour, day default day Respuestas EstadoDescripción200OK (ResourceStats)defaultError (RFC 9457) (Problem)",{"id":2913,"title":2914,"titles":2915,"content":2916,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-servicesidperformance","GET \u002Fservices\u002F{id}\u002Fperformance",[2894],"Rendimiento de un servicio en cantidades por día, semana o mes, con el período anterior F3-328. Rendimiento de un servicio en CANTIDADES (nunca dinero: vive en Financiero). Tenant desde la credencial, RLS. Panel: permiso performance:read (owner, manager y colaborador; no es de dinero). El colaborador lo tiene solo sobre lo suyo (scope: own: tareas asignadas a los recursos enlazados a su usuario; sin recurso propio, cero), nunca los totales del negocio, que son de owner y manager (scope: business); API key: scope bookings:read (totales del negocio). Tareas sin held\u002Fexpired ni de prueba, atribuidas al día local de inicio\u002Fvencimiento. Métricas: completed (por defecto), tasks y cancelled (cancelada o no vino). previous: el mismo período corrido hacia atrás tantos tramos como abarca (día: N días; semana: N semanas; mes: N meses), así previous_series tiene los mismos tramos que series. Máximo 366 días; una consulta agrupada. Autenticación: Clave de API o sesión del panelScopes: performance:read, bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)fromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido)granularityqueryNostring day, week, month default dayTramo de la serie: day, week (lunes) o month Respuestas EstadoDescripción200Successful Response (ItemPerformanceOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2918,"title":2919,"titles":2920,"content":2921,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-servicesidstats","GET \u002Fservices\u002F{id}\u002Fstats",[2894],"Ventas y tendencia de un servicio F3-90. Tenant desde credencial, RLS. Owner\u002Fmanager o API key con bookings:read. Staff\u002Fviewer: 403. Fecha local de inicio\u002Fvencimiento; moneda del workspace. Dinero estimado con precio actual del catálogo y señas retenidas (F2-44\u002F45), no charges. Máximo 366 días. Excluye datos de prueba, held y expired. units_sold informa un único campo con x-fiuit-unit; null si hay varios campos o ninguna unidad. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)fromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido)granularityqueryNostring day, week, month default day Respuestas EstadoDescripción200Successful Response (ServiceSalesOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2923,"title":2924,"titles":2925,"content":2926,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-servicesstats","GET \u002Fservices\u002Fstats",[2894],"Resultados del período de todos los servicios F3-90. Tenant desde credencial, RLS. Owner\u002Fmanager o API key con bookings:read. Staff\u002Fviewer: 403. Fecha local de inicio\u002Fvencimiento; moneda del workspace. Dinero estimado con precio actual del catálogo y señas retenidas (F2-44\u002F45), no charges. Máximo 366 días. Excluye datos de prueba, held y expired. units_sold informa un único campo con x-fiuit-unit; null si hay varios campos o ninguna unidad. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónfromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido) Respuestas EstadoDescripción200Successful Response (SalesOverviewOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":2928,"title":2929,"titles":2930,"content":2931,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-teamoverview","GET \u002Fteam\u002Foverview",[2894],"Resumen del equipo (owner, manager, staff solo lo suyo; viewer 403) Una fila por recurso activo, con su persona si existe (solo los de tipo staff la tienen). Por defecto solo los de tipo staff (un negocio sin personas, con canchas o lugares, usa kind=all); kind=all devuelve todos los tipos activos y kind=\u003Ctipo> uno solo (Equipo y recursos). Staff solo ve sus recursos asignados. from\u002Fto son días locales del negocio, ambos incluidos (máximo 92 días, configurable; 422 invalid_stats_range si se pasa). occupancy = minutos reservados dentro del horario ÷ minutos disponibles (horario semanal con excepciones y bloqueos, en la zona horaria del negocio; los días de cambio de hora duran 23 o 25 h). Cuentan las reservas pending_payment, confirmed, checked_in y completed; no las canceladas, vencidas, ausencias, holds ni las de prueba. En recursos pooled son minutos-unidad (unidades × minutos ÷ capacidad × minutos disponibles). next_available_at: primer hueco libre de 15 min en los próximos 30 días (null si no hay horario); next_available_free_units dice cuántos lugares quedan ahí (un recurso pooled puede estar libre con tareas ya cargadas en esa hora). days: la ocupación de cada día del período. open_today: confirmadas o en curso que empiezan hoy. Sin facturación. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónfromquerySístring (date)toquerySístring (date)kindqueryNostring staff, space, equipment, table, vehicle, zone, all default staff Respuestas EstadoDescripción200OK (TeamOverview)defaultError (RFC 9457) (Problem)",{"id":2933,"title":2934,"titles":2935,"content":2936,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fstats#get-work-itemsoutcomes","GET \u002Fwork-items\u002Foutcomes",[2894],"Cierres y cancelaciones por flujo y motivo Cuenta entradas de historial en días locales del negocio (ambos incluidos), excluye pruebas. Agrupa claves estables por flujo y salida; etiquetas históricas, sin texto libre ni datos de clientes. Reintentar no duplica; reabrir y cerrar vuelve a contar. Owner\u002Fmanager con finance:analyze; API key bookings:read. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónstartquerySístring (date)endquerySístring (date)service_idqueryNostring (uuid)resource_idqueryNostring (uuid) Respuestas EstadoDescripción200Cierres agrupados, sin paginación de tareas (OutcomeReasonReport)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":2938,"title":2939,"titles":2940,"content":2941,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers","API · customers",[],"Operaciones de customers del contrato OpenAPI que aceptan una clave de API.",{"id":2943,"title":2944,"titles":2945,"content":2946,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customer-asset-types","GET \u002Fcustomer-asset-types",[2939],"Tipos de bien del negocio FIU-609 (ADR 0059 §2 y §8). Owner\u002Fmanager o API key con customers:read. Primero «Direcciones» (address, system: true, sin id: sus bienes son las direcciones guardadas), después los tipos del negocio y al final los de fábrica sin activar (active: false, sin id). Autenticación: Clave de API o sesión del panelScopes: customers:read Respuestas EstadoDescripción200Tipos de bien (CustomerAssetTypePage)defaultError (RFC 9457) (Problem)",{"id":2948,"title":2949,"titles":2950,"content":2951,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#post-customer-asset-types","POST \u002Fcustomer-asset-types",[2939],"Activar un tipo de fábrica o crear un tipo de bien FIU-609. Owner\u002Fmanager con CSRF o API key con config:write. {\"preset\": \"vehicle\"} activa Vehículos (patente, marca, modelo, año, km y color, ninguno obligatorio): idempotente, devuelve 200 con el mismo tipo si ya estaba activo y lo reactiva si estaba desactivado. Sin preset, un tipo propio con key, name, name_one y fields (hasta 12; 409 asset_type_exists si la key ya existe). Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerAssetTypeCreate Respuestas EstadoDescripción200El tipo de fábrica ya estaba activo (o se reactivó) (CustomerAssetType)201Tipo activado o creado (CustomerAssetType)defaultError (RFC 9457) (Problem)",{"id":2953,"title":2954,"titles":2955,"content":2956,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customer-asset-typestype_id","GET \u002Fcustomer-asset-types\u002F{type_id}",[2939],"Ver un tipo de bien FIU-609. Owner\u002Fmanager o API key con customers:read. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripcióntype_idpathSístring (uuid) Respuestas EstadoDescripción200El tipo (CustomerAssetType)defaultError (RFC 9457) (Problem)",{"id":2958,"title":2959,"titles":2960,"content":2961,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#patch-customer-asset-typestype_id","PATCH \u002Fcustomer-asset-types\u002F{type_id}",[2939],"Editar o desactivar un tipo de bien FIU-609. Owner\u002Fmanager con CSRF o API key con config:write. active: false desactiva el tipo: sus bienes quedan en solo lectura y nada se borra. Quitar un campo de fields no borra los valores guardados (vuelven si vuelve la misma key). identifier_key debe ser un campo del tipo. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripcióntype_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerAssetTypePatch Respuestas EstadoDescripción200Tipo actualizado (CustomerAssetType)defaultError (RFC 9457) (Problem)",{"id":2963,"title":2964,"titles":2965,"content":2966,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#delete-customer-asset-typestype_id","DELETE \u002Fcustomer-asset-types\u002F{type_id}",[2939],"Borrar un tipo de bien sin bienes FIU-609. Owner\u002Fmanager con CSRF o API key con config:write. 409 asset_type_in_use si tiene bienes (desactivarlo con active=false). Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripcióntype_idpathSístring (uuid) Respuestas EstadoDescripción204BorradodefaultError (RFC 9457) (Problem)",{"id":2968,"title":2969,"titles":2970,"content":2971,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customers","GET \u002Fcustomers",[2939],"Listar y buscar clientes reales (owner\u002Fmanager; sesión staff con vista mínima) Excluye is_test; cursor por última actividad descendente y UUID. q busca por nombre, email, empresa, etiqueta y teléfono (también el segundo); sirve al selector de cliente con escritura progresiva. Scope de API key customers:read. Actividad mutable puede cambiar el orden entre páginas. Sesión staff (F1-29): recibe CustomerStaffItem (id, name, phone_masked, tags, no_show_count; sin email, notas, documento, dirección, empresa ni segundo teléfono), solo con q de mínimo 3 caracteres (sin q, con phone\u002Ftag\u002Fcursor o con término corto ⇒ 422), tope 10 resultados y next_cursor null (sin paginación), y rate limit propio de 30 búsquedas\u002Fmin por actor con headers RateLimit y 429 customer_search_rate_limited. Cada búsqueda de staff audita customer.search (solo el término, sin contenido de resultados). Alcance del repartidor (F2-52): solo encuentra clientes con tareas en sus recursos propios (vigentes o cerradas hace menos de 48 h). Viewer sigue en 403. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripciónphonequeryNostringqqueryNostringNombretagqueryNostringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (owner\u002Fmanager y API key: CustomerProfile; sesión staff: CustomerStaffItem con tope 10) (object)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":2973,"title":2974,"titles":2975,"content":2976,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#post-customers","POST \u002Fcustomers",[2939],"Alta manual de un cliente (owner\u002Fmanager\u002Fstaff; CSRF y auditoría) Exige al menos nombre, teléfono o email. El teléfono se normaliza a E.164; si ya existe un cliente con ese teléfono responde 409 customer_exists. Idempotency-Key opcional deduplica 24 h (sesión de panel y Bearer). Todos los datos ampliados son opcionales y personales (LGPD). Scope de API key customers:write. Escribe audit_log (customer.created, solo los nombres de los campos) y emite el evento customer.created. Respuesta (F1-29, cierre de hallazgo de seguridad): owner\u002Fmanager y API keys con customers:read reciben el CustomerProfile completo; la sesión staff y las API keys solo con customers:write reciben solo {\"id\"}, sin PII. En el 409, la extensión customer_id solo se expone a quien tiene lectura. Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerCreate Respuestas EstadoDescripción201Creado (CustomerProfile completo para lectores; {\"id\"} para staff o API key write-only) (CustomerProfile` \u002F `CustomerWriteAck)409Ya existe un cliente con ese teléfono (code=customer_exists); la extensión customer_id solo para quien tiene customers:read (``Problem \u002F object)defaultError (RFC 9457) (Problem)",{"id":2978,"title":2979,"titles":2980,"content":2981,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customerscustomer_idaddresses","GET \u002Fcustomers\u002F{customer_id}\u002Faddresses",[2939],"Direcciones guardadas del cliente Owner\u002Fmanager o API key con customers:read. Tenant desde credencial; sin direcciones archivadas por rollback. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid) Respuestas EstadoDescripción200Colección ordenada por predeterminada y fecha (object)defaultError (RFC 9457) (Problem)",{"id":2983,"title":2984,"titles":2985,"content":2986,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#post-customerscustomer_idaddresses","POST \u002Fcustomers\u002F{customer_id}\u002Faddresses",[2939],"Agregar una dirección del cliente Owner\u002Fmanager con CSRF o API key con customers:write y customers:read. Idempotency-Key admite reintentos. La primera es predeterminada; guardar una dirección no modifica tareas anteriores. Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)Idempotency-KeyheaderNostringOpcional con cookie\u002FCSRF y obligatorio con API key; evita duplicados en reintentos Cuerpo de la solicitud (obligatorio) application\u002Fjson: SavedCustomerAddressCreate Respuestas EstadoDescripción201Dirección creada (SavedCustomerAddress)defaultError (RFC 9457) (Problem)",{"id":2988,"title":2989,"titles":2990,"content":2991,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#patch-customerscustomer_idaddressesaddress_id","PATCH \u002Fcustomers\u002F{customer_id}\u002Faddresses\u002F{address_id}",[2939],"Editar dirección o elegir predeterminada Owner\u002Fmanager con CSRF o API key customers:write y customers:read. is_default admite solamente true; no altera el snapshot de tareas existentes. Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)address_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: SavedCustomerAddressPatch Respuestas EstadoDescripción200Dirección actualizada (SavedCustomerAddress)defaultError (RFC 9457) (Problem)",{"id":2993,"title":2994,"titles":2995,"content":2996,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#delete-customerscustomer_idaddressesaddress_id","DELETE \u002Fcustomers\u002F{customer_id}\u002Faddresses\u002F{address_id}",[2939],"Borrar dirección del cliente Owner\u002Fmanager con CSRF o API key customers:write. Si se borra la predeterminada se elige la siguiente; el snapshot de las tareas no cambia. Autenticación: Clave de API o sesión del panelScopes: customers:write Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)address_idpathSístring (uuid) Respuestas EstadoDescripción204BorradadefaultError (RFC 9457) (Problem)",{"id":2998,"title":2999,"titles":3000,"content":3001,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customerscustomer_idassets","GET \u002Fcustomers\u002F{customer_id}\u002Fassets",[2939],"Bienes del cliente FIU-609 (ADR 0059). Los vehículos (u otros bienes) de un cliente. Owner\u002Fmanager o API key con customers:read. El predeterminado primero; sin archivados salvo include_archived=true. Los bienes de un tipo desactivado vienen con read_only: true. Dato personal: la lectura se audita. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)typequeryNostringkey del tipo (vehicle)include_archivedqueryNoboolean default false Respuestas EstadoDescripción200Bienes del cliente (CustomerAssetPage)defaultError (RFC 9457) (Problem)",{"id":3003,"title":3004,"titles":3005,"content":3006,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#post-customerscustomer_idassets","POST \u002Fcustomers\u002F{customer_id}\u002Fassets",[2939],"Agregar un bien del cliente FIU-609. Owner\u002Fmanager con CSRF o API key con customers:write y customers:read. type es la key del tipo: un tipo de fábrica sin activar (vehicle) se activa al vuelo. Para un auto alcanza con la patente o el modelo (422 asset_invalid si no viene ninguno). El primero es el predeterminado. 409 asset_duplicate (con asset_id) si el cliente ya tiene esa patente viva; 409 asset_type_archived si el tipo está desactivado. Una patente con formato desconocido para el país se acepta con warnings: [\"plate_format\"]. Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)Idempotency-KeyheaderNostringOpcional con cookie\u002FCSRF y obligatorio con API key; evita duplicados en reintentos Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerAssetCreate Respuestas EstadoDescripción201Bien creado (CustomerAsset)defaultError (RFC 9457) (Problem)",{"id":3008,"title":3009,"titles":3010,"content":3011,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customerscustomer_idassetsasset_id","GET \u002Fcustomers\u002F{customer_id}\u002Fassets\u002F{asset_id}",[2939],"Ver un bien del cliente FIU-609. Owner\u002Fmanager o API key con customers:read. 404 asset_not_found si no es de ese cliente. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)asset_idpathSístring (uuid) Respuestas EstadoDescripción200El bien (CustomerAsset)defaultError (RFC 9457) (Problem)",{"id":3013,"title":3014,"titles":3015,"content":3016,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#patch-customerscustomer_idassetsasset_id","PATCH \u002Fcustomers\u002F{customer_id}\u002Fassets\u002F{asset_id}",[2939],"Editar un bien, elegirlo como predeterminado o archivarlo FIU-609. Owner\u002Fmanager con CSRF o API key customers:write y customers:read. data se mezcla con lo guardado (una clave con null borra ese valor). is_default admite solo true; archived: true lo saca de la lista y elige otro predeterminado. Para pasar un auto a otro cliente: crearlo en el otro y archivarlo acá. 409 asset_type_archived si el tipo está desactivado (solo lectura). Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)asset_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerAssetPatch Respuestas EstadoDescripción200Bien actualizado (CustomerAsset)defaultError (RFC 9457) (Problem)",{"id":3018,"title":3019,"titles":3020,"content":3021,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#delete-customerscustomer_idassetsasset_id","DELETE \u002Fcustomers\u002F{customer_id}\u002Fassets\u002F{asset_id}",[2939],"Borrar un bien del cliente FIU-609. Owner\u002Fmanager con CSRF o API key customers:write y customers:read. Borrado definitivo (dato personal); sus fotos se borran del almacenamiento. Si era el predeterminado se elige el siguiente. Para dejar de usarlo sin borrarlo, archivarlo. Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid)asset_idpathSístring (uuid) Respuestas EstadoDescripción204BorradodefaultError (RFC 9457) (Problem)",{"id":3023,"title":3024,"titles":3025,"content":3026,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#post-customerscustomer_idconversations","POST \u002Fcustomers\u002F{customer_id}\u002Fconversations",[2939],"Abrir la conversación del cliente por un canal (mensaje en frío) Devuelve la conversación activa del cliente por ese canal (200, created: false) o crea una vacía en la conexión conectada (201, created: true); no envía nada, el mensaje se redacta con POST \u002Fconversations\u002F{id}\u002Fmessages. Permiso conversations:operate (owner, manager, staff con clientes de sus tareas; API key con messages:write; sesión con CSRF); tenant desde la credencial; 404 si el cliente no existe o el staff no lo ve. Idempotente por naturaleza (una conversación por conexión y cliente). Auditado conversation.opened_cold. 409 channel_unavailable con reason cerrado: no_channel_connection (sin conexión conectada o canal pausado), no_contact (WhatsApp sin teléfono válido; Telegram sin tg_user), channel_not_supported (webchat e Instagram no admiten iniciar: en Instagram solo el cliente abre la ventana de 24 h), channel_not_implemented (reservado), outside_window (ventana vencida) y test_customer. Cloud respeta ventana de 24 h\u002Fplantilla al enviar; WAHooks permite primer contacto sin ventana oficial, con aviso y límite por proyecto\u002Fdía UTC (20 por defecto, COLD_OPEN_DAILY_LIMIT; 429 cold_open_rate_limited). Reintentos no consumen cupo. Autenticación: Clave de API o sesión del panelScopes: messages:write Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200Ya existía una conversación activa por ese canal (CustomerConversationOpened)201Conversación vacía creada (CustomerConversationOpened)409Canal sin destinatario enrutable, no implementado o fuera de ventana (ColdOpenProblem)429Límite diario de aperturas WAHooks del proyecto alcanzado (ColdOpenRateLimitProblem)defaultError (RFC 9457) (Problem)",{"id":3028,"title":3029,"titles":3030,"content":3031,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customerscustomer_idtask-addresses","GET \u002Fcustomers\u002F{customer_id}\u002Ftask-addresses",[2939],"Direcciones mínimas para capturar un destino operativo Owner\u002Fmanager o API key customers:read. Staff solo clientes visibles por tareas asignadas y ventana operativa vigente (404 fuera de alcance). No expone perfil ni timestamps. Seleccionar no concede consentimiento para guardar. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid) Respuestas EstadoDescripción200Destinos operativos mínimos (object)defaultError (RFC 9457) (Problem)",{"id":3033,"title":3034,"titles":3035,"content":3036,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customersid","GET \u002Fcustomers\u002F{id}",[2939],"Ficha del cliente (owner\u002Fmanager completa y auditada; sesión staff mínima) Owner\u002Fmanager y API key con customers:read reciben CustomerDetail completo (audita customer.viewed). La sesión de staff (F1-29) recibe solo id, name, phone_masked, tags y no_show_count (sin email, notas, documento, dirección, empresa, segundo teléfono, reservas ni conversaciones) y audita customer.read. Viewer sigue en 403. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (owner\u002Fmanager y API key: CustomerDetail; sesión staff: vista mínima como CustomerStaffItem) (CustomerDetail)defaultError (RFC 9457) (Problem)",{"id":3038,"title":3039,"titles":3040,"content":3041,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#patch-customersid","PATCH \u002Fcustomers\u002F{id}",[2939],"Editar datos del cliente (owner\u002Fmanager\u002Fstaff; CSRF y auditoría) phone cambia el teléfono principal (identificador único del workspace): se normaliza a E.164 con la región del workspace y, si ya es de otro cliente (en cualquier formato, incluido el 9 móvil de BR\u002FAR), responde 409 customer_exists con customer_id solo para quien tiene lectura; phone: null es 422. address solo se escribe por owner\u002Fmanager o API key con customers:write y sincroniza la predeterminada; reemplaza la dirección completa; null o vacío la borra. Scope de API key customers:write. Respuesta como POST (F1-29): CustomerProfile completo solo para quien tiene lectura (customers:read); staff y API key write-only reciben solo {\"id\"}. Autenticación: Clave de API o sesión del panelScopes: customers:write, customers:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200Actualizado (CustomerProfile completo para lectores; {\"id\"} para staff o API key write-only) (CustomerProfile` \u002F `CustomerWriteAck)409El teléfono nuevo ya es de otro cliente (code=customer_exists); la extensión customer_id solo para quien tiene customers:read (``Problem \u002F object)defaultError (RFC 9457) (Problem)",{"id":3043,"title":3044,"titles":3045,"content":3046,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customersidbookings","GET \u002Fcustomers\u002F{id}\u002Fbookings",[2939],"Historial mínimo de reservas (owner\u002Fmanager todo; staff solo las suyas finalizadas; lectura auditada) Permisos finished_tasks:read_all (owner, manager, API key con customers:read) y finished_tasks:read_own (staff), ver docs\u002Fsecurity\u002Fmatriz-de-permisos.md. Con read_own la lista trae solo tareas terminadas (completed, cancelled, no_show, failed) asignadas a los recursos del staff, y solo de clientes con los que trabaja; cualquier otro cliente responde 404 igual que uno inexistente. viewer responde 403. Cada lectura queda en el audit log con su alcance. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200Reservas sin notas, intake_data ni mensajes (object)defaultError (RFC 9457) (Problem)",{"id":3048,"title":3049,"titles":3050,"content":3051,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcustomers#get-customersidsummary","GET \u002Fcustomers\u002F{id}\u002Fsummary",[2939],"Resumen del cliente, calculado en vivo (owner\u002Fmanager) Una consulta agrupada por (workspace, cliente, estado); sin tablas de estadísticas ni caché. total excluye held\u002Fexpired. upcoming = confirmed\u002Fchecked_in cuyo fin es posterior a ahora (futuras o en curso; las de modo cola no cuentan). last_visit_at = última completada. next_booking = la próxima de esas (id, inicio, servicio) o null. Un cliente real nunca cuenta reservas de prueba; un cliente de prueba devuelve su propio resumen con is_test=true. Solo owner\u002Fmanager (PII, como \u002Fcustomers); staff\u002Fviewer 403; cross-tenant 404. Scope de API key customers:read (solo GET). Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200Resumen (object)defaultError (RFC 9457) (Problem)",{"id":3053,"title":3054,"titles":3055,"content":3056,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fsearch","API · search",[],"Operaciones de search del contrato OpenAPI que aceptan una clave de API.",{"id":3058,"title":3059,"titles":3060,"content":3061,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsearch#get-search","GET \u002Fsearch",[3054],"Búsqueda global agrupada por tipo (solo sesión de panel) Busca q en clientes (nombre, teléfono, email), conversaciones (cliente o último mensaje), tareas (cliente, servicio o código: el prefijo hexadecimal del id, con o sin #) y recursos y servicios (nombre). Devuelve un grupo por tipo con tope limit (por defecto 5, máximo 10); un término de menos de 2 caracteres (3 para el repartidor) devuelve todos los grupos vacíos. Sin dinero en ningún tipo. Respeta la visibilidad de cada pantalla: clientes, recursos y servicios solo para owner\u002Fmanager (el viewer y el repartidor no tienen esas pantallas: sus grupos vienen vacíos); conversaciones para owner, manager, viewer y repartidor; tareas para todos. El repartidor (staff) solo ve las conversaciones de sus clientes (contacto enmascarado) y las tareas asignadas a sus recursos, con el mismo rate limit de 30 búsquedas\u002Fmin que la búsqueda de clientes del repartidor (429 customer_search_rate_limited). Cada tipo corre con un statement_timeout corto; si alguno se pasa del tiempo se omite y partial es true. Solo cookie de sesión: no tiene scope de API key (un bearer recibe 403). El término es PII: no se loguea ni se audita crudo. Índices pg_trgm (migración f7a0b1c2d3e4). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónqquerySístringNombrelimitqueryNointeger default 5Tope por tipo Respuestas EstadoDescripción200OK (SearchResults)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3063,"title":3064,"titles":3065,"content":3066,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows","API · flows",[],"Operaciones de flows del contrato OpenAPI que aceptan una clave de API. Flujos (ADR 0040): el recorrido de etapas que eligen los servicios. Lectura: owner y manager; escritura: owner (API key con settings:write).",{"id":3068,"title":3069,"titles":3070,"content":3071,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-base-states","GET \u002Fbase-states",[3064],"Estados base del motor flows:read: owner\u002Fmanager por sesión, o API key config:read. Catálogo de estados base del motor. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Respuestas EstadoDescripción200Successful Response (object)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3073,"title":3074,"titles":3075,"content":3076,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flow-examples","GET \u002Fflow-examples",[3064],"Ejemplos de flujo para copiar flows:read: owner\u002Fmanager por sesión, o API key config:read. El flujo de sistema y los de cada blueprint, con la forma del cuerpo de POST \u002Fflows (key más format, stages y exits). Reemplaza a \u002Fstage-templates. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Respuestas EstadoDescripción200Successful Response (object)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3078,"title":3079,"titles":3080,"content":3081,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flow-message-catalog","GET \u002Fflow-message-catalog",[3064],"Variables y textos por defecto del mensaje al cliente de una etapa flows:read: owner\u002Fmanager por sesión, o API key config:read. Ayuda para editar el mensaje al cliente de una etapa (on_enter.notify_customer.texts, F3-534): las variables protegidas con datos de ejemplo ya formateados (zona horaria, moneda e idioma) y el texto por defecto de cada plantilla en pt, es y en. Las variables son las únicas que el servidor acepta al publicar el flujo (PATCH \u002Fflows\u002F{id}, flows:write): otra variable, llaves sueltas o formatos devuelven 422 message_variable_unknown | message_braces_invalid | message_text_empty | message_text_too_long | message_variable_not_available (cola, sin horario), con la etapa y el campo. Fecha\u002Fhora, monto y link de seguimiento los arma el core; el texto guardado es el que sale (nunca generado). Sin texto en el idioma del cliente, o con una variable sin valor, sale la plantilla. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read, flows:write Respuestas EstadoDescripción200Successful Response (FlowMessageCatalog)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3083,"title":3084,"titles":3085,"content":3086,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flows","GET \u002Fflows",[3064],"Listar flujos flows:read: owner\u002Fmanager por sesión, o API key config:read. Los de sistema primero; include_inactive=true agrega los desactivados. Sin purpose no incluye la raíz «Atención del bot» (no es un recorrido, F3-467): purpose=entry la trae (una por proyecto, sin etapas, con greeting y order en GET \u002Fflows\u002F{id}). Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Parámetros NombreEnObligatorioTipoDescripciónpurposequeryNostring catalog, intent, entryinclude_inactivequeryNoboolean default false Respuestas EstadoDescripción200Successful Response (FlowDefinitionList)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3088,"title":3089,"titles":3090,"content":3091,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flows","POST \u002Fflows",[3064],"Crear un flujo flows:write: owner por sesión con CSRF, o API key settings:write (mismos roles que tenía service_stages:write). Flujo propio con su versión 1 (note opcional). purpose=entry: 422 entry_flow_unique (la raíz «Atención del bot» es una por proyecto y la crea el proyecto, F3-467; también al copiarla). purpose=intent exige mode=queue (422 flow_mode_mismatch): sus tareas no tienen servicio ni horario (F3-457). Flujo v2 con ítems y botones. confirm_moves=true es obligatorio si hay tareas que mover: 409 stage_moves_unconfirmed. Identidad estable contra todo el historial: 422 stage_key_reinterpreted; v1 no se restaura: 422 version_format_unsupported. 422 bot_offer_unknown_item si bot_offers nombra un ítem inexistente o de otro tipo. Campos v3\u002Fv4: 422 field_reserved, item_type_not_available (payment, products y offer con kind plan; offer y timer sin su configuración: invalid_offer, invalid_timer), effect_not_available, variable_not_available (, , ), con ruta del campo. 422 flow_mode_mismatch si un servicio del flujo es de otro modo, item_key_reserved si un ítem repite un campo del formulario de un servicio. Un flujo de sistema (system_key) no se publica: 422 flow_system_readonly al editarlo; se edita su copia propia (POST \u002Fflows\u002F{id}\u002Fcustomize, F3-731) o se crea uno propio con POST \u002Fflows y se asigna con flow_id en POST|PATCH \u002Fservices. Publicar mueve tareas y escribe auditoría (flow.updated) en su transacción (outbox, F3-184). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: FlowInput Respuestas EstadoDescripción201Successful Response (FlowDefinition)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3093,"title":3094,"titles":3095,"content":3096,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flowsid","GET \u002Fflows\u002F{id}",[3064],"Leer un flujo con su versión vigente flows:read: owner\u002Fmanager por sesión, o API key config:read. Incluye los servicios que lo usan. Un flujo lo comparten varios servicios (ADR 0040): publicar una versión mueve las tareas abiertas de todos (impact.by_service) y impact.shared_with lista los servicios que cambian; el cliente (panel, MCP) pide confirmar. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (FlowDefinition)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3098,"title":3099,"titles":3100,"content":3101,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#patch-flowsid","PATCH \u002Fflows\u002F{id}",[3064],"Renombrar, activar o publicar un flujo task_view (FIU-584) cambia «Cómo se ve la tarea» sin versión nueva ni mover tareas, también en un flujo de sistema. flows:write: owner por sesión con CSRF, o API key settings:write (mismos roles que tenía service_stages:write). Un flujo lo comparten varios servicios (ADR 0040): publicar una versión mueve las tareas abiertas de todos (impact.by_service) y impact.shared_with lista los servicios que cambian; el cliente (panel, MCP) pide confirmar. Con format, exits y stages publica una versión nueva (base_version evita pisar; 409 stale_version). Desactivar no cancela tareas ni cambia las de los servicios que ya lo usan: solo impide asignarlo. Flujo v2 con ítems y botones. confirm_moves=true es obligatorio si hay tareas que mover: 409 stage_moves_unconfirmed. Si hay varios servicios, shared_with_ack incluye todos los IDs revisados de impact.shared_with (incluido el editado); si falta alguno, 409 stage_shared_unconfirmed con impact actualizado exige validar y confirmar otra vez. Identidad estable contra todo el historial: 422 stage_key_reinterpreted; v1 no se restaura: 422 version_format_unsupported. 422 bot_offer_unknown_item si bot_offers nombra un ítem inexistente o de otro tipo. Campos v3\u002Fv4: 422 field_reserved, item_type_not_available (payment, products y offer con kind plan; offer y timer sin su configuración: invalid_offer, invalid_timer), effect_not_available, variable_not_available (, , ), con ruta del campo. 422 flow_mode_mismatch si un servicio del flujo es de otro modo, item_key_reserved si un ítem repite un campo del formulario de un servicio. Un flujo de sistema (system_key) no se publica: 422 flow_system_readonly al editarlo; se edita su copia propia (POST \u002Fflows\u002F{id}\u002Fcustomize, F3-731) o se crea uno propio con POST \u002Fflows y se asigna con flow_id en POST|PATCH \u002Fservices. Publicar mueve tareas y escribe auditoría (flow.updated) en su transacción (outbox, F3-184). Raíz «Atención del bot» (purpose=entry, ADR 0040 §4.4, F3-467): solo cambian greeting y order (versión nueva y auditoría flow.entry_root_changed); 422 entry_branch_unknown (con key) si una clave de order no es services, products, subscriptions, faq, mine, handoff ni flow: de un flujo por intención activo con entry y la etapa en la que nace su tarea (pausado o no: una rama propia pausada conserva su lugar, F3-467b); 422 entry_branch_duplicate si se repite; 422 invalid_entry_greeting si el saludo no es pt\u002Fes\u002Fen de hasta 300; active=false → 422 entry_flow_required (no se desactiva ni se borra); name, entry, etapas o restaurar una versión → 422 entry_flow_readonly. greeting u order en otro flujo → 422 root_fields_only_for_entry. La raíz se edita con bot:configure (owner, manager o colaborador) por sesión con CSRF o con una API key config:write (el mismo permiso que «Qué vende el bot», F3-467b); settings:write no alcanza para la raíz. Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write, config:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: FlowPatchInput Respuestas EstadoDescripción200Successful Response (FlowDefinition)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3103,"title":3104,"titles":3105,"content":3106,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#delete-flowsid","DELETE \u002Fflows\u002F{id}",[3064],"Borrar un flujo sin uso flows:write: owner por sesión con CSRF, o API key settings:write. F3-731: borra un flujo propio que ningún servicio usa y que nunca tuvo tareas (has_tasks falso), con sus versiones. 409 flow_in_use si un servicio lo usa (elegile otro antes); 409 flow_has_tasks si tiene tareas, abiertas o cerradas (desactivalo en su lugar); 422 flow_system_readonly para un flujo de sistema; 422 entry_flow_required para «Atención del bot». 404 si no existe en el proyecto. Escribe auditoría (flow.deleted). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción204Successful Response401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3108,"title":3109,"titles":3110,"content":3111,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flowsidcopy","POST \u002Fflows\u002F{id}\u002Fcopy",[3064],"Copiar un flujo flows:write: owner por sesión con CSRF, o API key settings:write. Crea un flujo propio e independiente con la versión vigente del origen como su versión 1 (note opcional): ningún servicio pasa a usarlo y cambiar uno no cambia el otro. El origen puede ser de sistema, propio o desactivado; la copia conserva modo y propósito, queda activa y sin system_key. Se asigna a un servicio con flow_id en POST|PATCH \u002Fservices. 404 si el flujo no existe en el proyecto; 422 con un nombre inválido. Escribe auditoría (flow.copied). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: FlowCopyInput Respuestas EstadoDescripción201Successful Response (FlowDefinition)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3113,"title":3114,"titles":3115,"content":3116,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flowsidcustomize","POST \u002Fflows\u002F{id}\u002Fcustomize",[3064],"Editar un flujo de sistema en la copia propia del negocio flows:write: owner por sesión con CSRF, o API key settings:write. F3-731: el negocio edita su copia de un flujo de sistema (turno_simple, pedido_simple, alta_simple, cuota_simple). La primera vez la crea con la versión vigente de la base (copy_of dice de cuál, mismo nombre que se ve) y le pasa todos los servicios que usaban la base; los servicios nuevos de ese modo nacen en la copia. Las tareas abiertas siguen en el suyo. Si ya existe, la devuelve sin cambios (idempotente). Después se publica con PATCH \u002Fflows\u002F{copia}. 422 flow_not_system si el flujo no es de sistema; 404 si no existe en el proyecto. Escribe auditoría (flow.customized). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (FlowDefinition)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3118,"title":3119,"titles":3120,"content":3121,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flowsidrestore","POST \u002Fflows\u002F{id}\u002Frestore",[3064],"Volver al flujo de sistema original flows:write: owner por sesión con CSRF, o API key settings:write. F3-731: «Volver al original» desde la copia propia (copy_of): sus servicios vuelven al flujo de sistema y los nuevos nacen ahí. Las tareas abiertas no se mueven: terminan con la versión del flujo que tenían. La copia nunca se borra (decisión B): queda como flujo propio «… (anterior)», sin copy_of ni servicios («Sin uso»), y se borra a mano con DELETE \u002Fflows\u002F{id} si no tiene tareas. Devuelve el flujo de sistema. 422 flow_not_copy si el flujo no es una copia propia; 404 si no existe en el proyecto. Escribe auditoría (flow.restored). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (FlowDefinition)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3123,"title":3124,"titles":3125,"content":3126,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flowsidsimulate","POST \u002Fflows\u002F{id}\u002Fsimulate",[3064],"Probar dónde cae cada frase de entrada sin escribir flows:write: owner por sesión con CSRF, o API key settings:write. Simulacro de entrada (ADR 0040 §6, F3-460) de un flujo por intención: corre los examples y not_when de entry (el del cuerpo, sin guardarlo, o el guardado) y todos los ejemplos de cada otro flujo por intención que el bot ofrece por el mismo elegidor del bot de clientes: palabras clave sin IA y, si no deciden, una elección barata con lista cerrada por frase, con la IA del proyecto (cuenta en su uso de IA). results dice dónde cae cada frase (landed: flow, service, action, reply o ask con options) y ok=false si choca: un ejemplo que no cae en este flujo (fix add_example_or_keyword) o una frase que no es de este flujo y cae en él o en una pregunta que lo incluye (fix add_not_when). catalog_clash: una palabra clave choca con el catálogo (al guardar, 422 flow_entry_keyword_catalog). No simula el catálogo por reglas (un mensaje que nombra un servicio lo toma su plantilla antes). 422 entry_only_for_intent si el flujo no es por intención; 422 flow_entry_missing sin entry dada ni guardada. No guarda nada ni crea tareas. Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: FlowSimulateInput Respuestas EstadoDescripción200Successful Response (FlowSimulation)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3128,"title":3129,"titles":3130,"content":3131,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flowsidusage","GET \u002Fflows\u002F{id}\u002Fusage",[3064],"Uso de un flujo por día y dónde se traban sus tareas days: tareas que entraron (día local de su alta) y que se completaron, por día. stages: tareas abiertas por etapa y su espera desde que entraron a ella; bottleneck, la de más espera promedio. El colaborador ve solo lo suyo (scope: own, F3-729). Tenant desde la credencial, RLS. Panel: permiso flows:usage (owner, manager y colaborador); el colaborador lo tiene solo sobre lo suyo (scope: own: tareas asignadas a los recursos enlazados a su usuario; sin recurso propio, cero), nunca los totales del negocio (scope: business). API key: scope bookings:read. Entran las tareas por el día local de su alta, sin las de prueba ni los holds que no se concretaron (held, expired). Solo lectura: no guarda nada nuevo. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)daysqueryNointeger default 84Días hasta hoy inclusive (84 = 12 semanas) Respuestas EstadoDescripción200Successful Response (FlowUsageOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":3133,"title":3134,"titles":3135,"content":3136,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flowsidvalidate","POST \u002Fflows\u002F{id}\u002Fvalidate",[3064],"Validar un flujo sin escribir flows:write: owner por sesión con CSRF, o API key settings:write (mismos roles que tenía service_stages:write). Un flujo lo comparten varios servicios (ADR 0040): publicar una versión mueve las tareas abiertas de todos (impact.by_service) y impact.shared_with lista los servicios que cambian; el cliente (panel, MCP) pide confirmar. Devuelve impact: tareas que se moverían (count, moves, by_service) y shared_with. En un flujo de sistema valida solo el formato. Flujo v2 con ítems y botones. confirm_moves=true es obligatorio si hay tareas que mover: 409 stage_moves_unconfirmed. Identidad estable contra todo el historial: 422 stage_key_reinterpreted; v1 no se restaura: 422 version_format_unsupported. 422 bot_offer_unknown_item si bot_offers nombra un ítem inexistente o de otro tipo. Campos v3\u002Fv4: 422 field_reserved, item_type_not_available (payment, products y offer con kind plan; offer sin su configuración: invalid_offer), effect_not_available, variable_not_available (, , ), con ruta del campo. 422 flow_mode_mismatch si un servicio del flujo es de otro modo, item_key_reserved si un ítem repite un campo del formulario de un servicio. Un flujo de sistema (system_key) es de solo lectura: 422 flow_system_readonly al editarlo; se crea uno propio con POST \u002Fflows y se asigna con flow_id en POST|PATCH \u002Fservices. Publicar mueve tareas y escribe auditoría (flow.updated) en su transacción (outbox, F3-184). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: FlowValidateInput Respuestas EstadoDescripción200Successful Response (FlowValidation)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3138,"title":3139,"titles":3140,"content":3141,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flowsidversions","GET \u002Fflows\u002F{id}\u002Fversions",[3064],"Historial de versiones del flujo flows:read: owner\u002Fmanager por sesión, o API key config:read. Paginado hacia atrás con before; next_before es el cursor. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)limitqueryNointeger default 25beforequeryNointeger Respuestas EstadoDescripción200Successful Response (FlowVersionPage)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3143,"title":3144,"titles":3145,"content":3146,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flowsidversionsversion","GET \u002Fflows\u002F{id}\u002Fversions\u002F{version}",[3064],"Leer una versión del flujo flows:read: owner\u002Fmanager por sesión, o API key config:read. Versión inmutable del flujo. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)versionpathSíinteger Respuestas EstadoDescripción200Successful Response (FlowVersion)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3148,"title":3149,"titles":3150,"content":3151,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#post-flowsidversionsversionrevert","POST \u002Fflows\u002F{id}\u002Fversions\u002F{version}\u002Frevert",[3064],"Restaurar una versión del flujo creando otra flows:write: owner por sesión con CSRF, o API key settings:write (mismos roles que tenía service_stages:write). Un flujo lo comparten varios servicios (ADR 0040): publicar una versión mueve las tareas abiertas de todos (impact.by_service) y impact.shared_with lista los servicios que cambian; el cliente (panel, MCP) pide confirmar. Crea una versión nueva con el contenido de la elegida (reverted_from); mismas confirmaciones que publicar. Flujo v2 con ítems y botones. confirm_moves=true es obligatorio si hay tareas que mover: 409 stage_moves_unconfirmed. Si hay varios servicios, shared_with_ack incluye todos los IDs revisados de impact.shared_with (incluido el editado); si falta alguno, 409 stage_shared_unconfirmed con impact actualizado exige validar y confirmar otra vez. Identidad estable contra todo el historial: 422 stage_key_reinterpreted; v1 no se restaura: 422 version_format_unsupported. 422 bot_offer_unknown_item si bot_offers nombra un ítem inexistente o de otro tipo. Campos v3\u002Fv4: 422 field_reserved, item_type_not_available (payment, products y offer con kind plan; offer y timer sin su configuración: invalid_offer, invalid_timer), effect_not_available, variable_not_available (, , ), con ruta del campo. 422 flow_mode_mismatch si un servicio del flujo es de otro modo, item_key_reserved si un ítem repite un campo del formulario de un servicio. Un flujo de sistema (system_key) no se publica: 422 flow_system_readonly al editarlo; se edita su copia propia (POST \u002Fflows\u002F{id}\u002Fcustomize, F3-731) o se crea uno propio con POST \u002Fflows y se asigna con flow_id en POST|PATCH \u002Fservices. Publicar mueve tareas y escribe auditoría (flow.updated) en su transacción (outbox, F3-184). Autenticación: Clave de API o sesión del panelScopes: flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)versionpathSíinteger Cuerpo de la solicitud (opcional) application\u002Fjson: FlowRevertInput Respuestas EstadoDescripción200Successful Response (FlowVersion)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3153,"title":3154,"titles":3155,"content":3156,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fflows#get-flowsusage","GET \u002Fflows\u002Fusage",[3064],"Uso de los flujos en los últimos 7 días Por flujo: tareas que entraron cada uno de los últimos 7 días (hoy al final), su total y el de los 7 anteriores, y si se usó alguna vez (used). Día local del proyecto; sin tareas de prueba (F3-729). Tenant desde la credencial, RLS. Panel: permiso flows:usage (owner, manager y colaborador); el colaborador lo tiene solo sobre lo suyo (scope: own: tareas asignadas a los recursos enlazados a su usuario; sin recurso propio, cero), nunca los totales del negocio (scope: business). API key: scope bookings:read. Entran las tareas por el día local de su alta, sin las de prueba ni los holds que no se concretaron (held, expired). Solo lectura: no guarda nada nuevo. Autenticación: Clave de API o sesión del panelScopes: bookings:read Respuestas EstadoDescripción200Successful Response (FlowUsageList)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":3158,"title":3159,"titles":3160,"content":3161,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments","API · comments",[],"Operaciones de comments del contrato OpenAPI que aceptan una clave de API.",{"id":3163,"title":3164,"titles":3165,"content":3166,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#get-bookingsidcomments","GET \u002Fbookings\u002F{id}\u002Fcomments",[3159],"Comentarios internos de una reserva (más nuevo primero) Owner, manager y viewer ven todas; staff solo reservas con un recurso suyo (si no, 404). Scope de API key bookings:read (solo lectura). Un comentario es una nota del equipo y nunca se envía al cliente por ningún canal. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (CommentPage)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3168,"title":3169,"titles":3170,"content":3171,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#post-bookingsidcomments","POST \u002Fbookings\u002F{id}\u002Fcomments",[3159],"Comentar de una reserva Solo sesión de panel con CSRF (las API keys no escriben). Límite de tasa por usuario (429 comment_rate_limited) y máximo de comentarios por entidad (422 comment_limit_reached). Auditado. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommentCreate Respuestas EstadoDescripción201Creado (Comment)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3173,"title":3174,"titles":3175,"content":3176,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#get-bookingsidtimeline","GET \u002Fbookings\u002F{id}\u002Ftimeline",[3159],"Línea de tiempo de una reserva (más nuevo primero) Comentarios, auditoría minimizada de estado\u002Fetapa\u002Fhorario, ubicación puntual vigente y metadatos de adjuntos privados; nunca contenido del archivo ni storage keys. Cursor por (fecha, id). Owner, manager y viewer ven todas; staff solo reservas con un recurso suyo (si no, 404). Scope de API key bookings:read. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (TimelinePage)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3178,"title":3179,"titles":3180,"content":3181,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#patch-commentsid","PATCH \u002Fcomments\u002F{id}",[3159],"Editar un comentario (autor, owner o manager) El texto original queda en el diff de auditoría. Solo sesión de panel con CSRF. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommentCreate Respuestas EstadoDescripción200Actualizado (Comment)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3183,"title":3184,"titles":3185,"content":3186,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#delete-commentsid","DELETE \u002Fcomments\u002F{id}",[3159],"Borrar un comentario (borrado lógico; autor, owner o manager) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204Borrado403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3188,"title":3189,"titles":3190,"content":3191,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#get-customersidcomments","GET \u002Fcustomers\u002F{id}\u002Fcomments",[3159],"Comentarios internos de un cliente (más nuevo primero) Solo owner\u002Fmanager (PII, como \u002Fcustomers); staff\u002Fviewer reciben 403. Scope de API key customers:read (solo lectura). Un comentario es una nota del equipo y nunca se envía al cliente por ningún canal. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (CommentPage)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3193,"title":3194,"titles":3195,"content":3196,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#post-customersidcomments","POST \u002Fcustomers\u002F{id}\u002Fcomments",[3159],"Comentar de un cliente Solo sesión de panel con CSRF (las API keys no escriben). Límite de tasa por usuario (429 comment_rate_limited) y máximo de comentarios por entidad (422 comment_limit_reached). Auditado. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: CommentCreate Respuestas EstadoDescripción201Creado (Comment)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3198,"title":3199,"titles":3200,"content":3201,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fcomments#get-customersidtimeline","GET \u002Fcustomers\u002F{id}\u002Ftimeline",[3159],"Línea de tiempo de un cliente (más nuevo primero) Comentarios + auditoría relevante (cambios de ficha y de sus reservas). Cursor por (fecha, id). Cuando exista booking_stage_event (F1-19) se suma como fuente. Solo owner\u002Fmanager (PII, como \u002Fcustomers); staff\u002Fviewer reciben 403. Scope de API key customers:read. Autenticación: Clave de API o sesión del panelScopes: customers:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200OK (TimelinePage)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3203,"title":3204,"titles":3205,"content":3206,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations","API · conversations",[],"Operaciones de conversations del contrato OpenAPI que aceptan una clave de API.",{"id":3208,"title":3209,"titles":3210,"content":3211,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#get-conversations","GET \u002Fconversations",[3204],"Listar conversaciones del inbox (más recientes primero) Array sin envoltorio; se pagina con limit + offset (F2-03). El panel lo adapta a Page (F3-16). Rol staff (F2-52): solo las conversaciones de clientes con tareas vigentes (o cerradas hace menos de 48 h) en un recurso propio; sin tareas, lista vacía. Los filtros se combinan entre sí (AND) y siempre dentro de ese alcance. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónmodequeryNobot, human, pausedlifecyclequeryNoarray\u003CConversationLifecycle>Filtro por estado del ciclo de vida (F2-35). Multi-valor (?lifecycle=pending&lifecycle=waiting_team): une los estados con OR. Valor desconocido: 422.channel_typequeryNoarray\u003C—>Filtro por canal visible (el mismo valor que channel_type de cada conversación). Multi-valor (?channel_type=whatsapp&channel_type=telegram): une los canales con OR. Valor desconocido: 422.last_message_fromqueryNostring (date-time)Solo conversaciones cuyo último mensaje (last_message_at) es igual o posterior a este instante (ISO 8601 con zona). Sin mensajes no entra en ningún rango.last_message_toqueryNostring (date-time)Solo conversaciones cuyo último mensaje es anterior a este instante (límite exclusivo, [from, to)).bot_pausedqueryNobooleantrue: el bot no responde (una persona tomó la conversación, human, o se pausó, paused). false: solo las que atiende el bot.replied_by_mequeryNobooleantrue: conversaciones donde quien consulta (sesión del panel) mandó al menos un mensaje; false: las demás. Con API key no hay persona: true devuelve una lista vacía.needs_attentionqueryNobooleantrue: solo las conversaciones que necesitan atención; false: solo las que no (F3-487). Se calcula en la consulta con la misma regla que el campo needs_attention y que el conteo de \u002Fconversations\u002Fcounts, así que paginar con offset recorre exactamente ese número de conversaciones.limitqueryNointeger default 50offsetqueryNointeger default 0 Respuestas EstadoDescripción200OK (array\u003CConversation>)defaultError (RFC 9457) (Problem)",{"id":3213,"title":3214,"titles":3215,"content":3216,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#get-conversationsid","GET \u002Fconversations\u002F{id}",[3204],"Detalle de una conversación Rol staff (F2-52): conversación de un cliente sin tareas suyas ⇒ 404 (no revela que existe). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (Conversation)defaultError (RFC 9457) (Problem)",{"id":3218,"title":3219,"titles":3220,"content":3221,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#patch-conversationsid","PATCH \u002Fconversations\u002F{id}",[3204],"Actualizar etiquetas y\u002Fo estado del ciclo de vida de una conversación contact_action (F3-143) permite release\u002Freport_spam\u002Fblock\u002Funblock solo con sesión owner\u002Fmanager (contacts:moderate; API key 403). No ejecuta ni confirma tareas retenidas. Parcial: al menos uno de contact_action, tags (reemplaza las etiquetas) o lifecycle (transición manual, F2-35); sin ninguno, 422. Transiciones permitidas: entre pending, waiting_customer, waiting_team hacia cualquiera de ellas, resolved o closed; open solo desde resolved\u002Fclosed (reabrir); desde resolved también a pending\u002Fclosed; desde closed solo a open\u002Fpending. Otra combinación: 409 lifecycle_transition_not_allowed. Mismo estado = no-op idempotente (sin evento). resolution_reason solo con resolved\u002Fclosed (422 si no) y se limpia al reabrir. Cada cambio se audita (sin datos personales) y emite conversation.lifecycle_changed. Roles owner\u002Fmanager\u002Fstaff; viewer 403. API key: scope messages:write. El ciclo de vida es ortogonal al modo bot\u002Fhumano. lifecycle: resolved equivale a POST \u002Fresolve sobre el último entrante (fija resolved_at, emite conversation.resolved); salir de resolved limpia resolved_at. \"Archivar\" = closed (sale de la lista principal con ?lifecycle= de los estados activos; \"desarchivar\" = open). Un mensaje nuevo del cliente reabre una conversación resolved o closed (pasa a pending). Autenticación: Clave de API o sesión del panelScopes: messages:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200Conversación actualizada (Conversation)defaultError (RFC 9457) (Problem)",{"id":3223,"title":3224,"titles":3225,"content":3226,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#get-conversationsidmessages","GET \u002Fconversations\u002F{id}\u002Fmessages",[3204],"Mensajes de una conversación (cronológico ascendente) Rol staff (F2-52): conversación de un cliente sin tareas suyas ⇒ 404. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 50beforequeryNostring (date-time)Solo mensajes anteriores a este instante (paginación hacia atrás) Respuestas EstadoDescripción200OK (array\u003CMessage>)defaultError (RFC 9457) (Problem)",{"id":3228,"title":3229,"titles":3230,"content":3231,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidmessages","POST \u002Fconversations\u002F{id}\u002Fmessages",[3204],"Enviar mensaje manual (pone la conversación en modo humano) Persiste una salida delivery_status=pending y el takeover en la misma transacción. El worker entrega después del commit; 201 no confirma aceptación del proveedor. Idempotency-Key opcional deduplica 24 h para sesión de panel y Bearer; una misma clave con otro actor, conversación o texto devuelve 422. Un replay devuelve la respuesta original (puede seguir indicando pending); GET messages muestra el estado actual. Un cliente is_test sólo puede usar simulator, nunca una conexión real. Entrega externa at-least-once: sin idempotencia del proveedor existe ventana ambigua. Rol staff (F2-52): solo a clientes con tareas vigentes en un recurso propio; otra conversación ⇒ 404 y no se envía nada. 409 channel_paused si el dueño pausó ese canal a nivel channel (el equipo tampoco envía hasta reanudarlo). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción201Persistido, pendiente de despacho durable (Message)defaultError (RFC 9457) (Problem)",{"id":3233,"title":3234,"titles":3235,"content":3236,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidmessagesmessage_idintent","POST \u002Fconversations\u002F{id}\u002Fmessages\u002F{message_id}\u002Fintent",[3204],"Registrar una intención explícitamente clasificada por el operador Owner\u002Fmanager con sesión y CSRF, o API key messages:write. Mensaje entrante real de esta conversación y tenant. Clasificación cerrada e inmutable; mismo valor es replay y distinto devuelve 409. No usa texto LLM, no ejecuta la intención ni modifica estado de reservas. Autenticación: Clave de API o sesión del panelScopes: messages:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringmessage_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200Clasificación persistida (o replay) (MessageIntent)defaultError (RFC 9457) (Problem)",{"id":3238,"title":3239,"titles":3240,"content":3241,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidmode","POST \u002Fconversations\u002F{id}\u002Fmode",[3204],"Cambiar el modo (takeover \u002F devolver al bot \u002F pausar) Rol staff (F2-52): solo conversaciones de sus clientes; otra ⇒ 404. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":3243,"title":3244,"titles":3245,"content":3246,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidnotes","POST \u002Fconversations\u002F{id}\u002Fnotes",[3204],"Agregar un aviso de sistema a la conversación (nunca se envía al cliente) F3-222. Deja un mensaje type=system en el hilo (p. ej. el contexto de un caso de soporte): nace delivery_status=sent, sin destinatario, así que el worker nunca lo despacha por el canal. No cambia el modo (bot\u002Fhumano) ni el ciclo de vida y no cuenta como respuesta del equipo. Roles owner\u002Fmanager (sesión con CSRF) o API key con messages:write; tenant desde la credencial; 404 si la conversación no es de este proyecto. Idempotente por contenido: el mismo texto ya presente como aviso en la conversación devuelve ese aviso (sin otro mensaje ni otra auditoría), con cualquier clave o key. Con API key, Idempotency-Key además deduplica 24 h (la misma clave con otro cuerpo da 409). Auditado conversation.system_note (solo el largo del texto). Autenticación: Clave de API o sesión del panelScopes: messages:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístringIdempotency-KeyheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción201Aviso guardado en el hilo (Message)defaultError (RFC 9457) (Problem)",{"id":3248,"title":3249,"titles":3250,"content":3251,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidread","POST \u002Fconversations\u002F{id}\u002Fread",[3204],"Marcar la conversación como leída Rol staff (F2-52): solo conversaciones de sus clientes; otra ⇒ 404. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":3253,"title":3254,"titles":3255,"content":3256,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidresolve","POST \u002Fconversations\u002F{id}\u002Fresolve",[3204],"Resolver explícitamente la conversación leída Owner\u002Fmanager con sesión y CSRF, o API key messages:write. Tenant de la credencial. message_id debe ser el último entrante persistido del tenant; snapshot obsoleto devuelve 409. Repetir sobre el mismo mensaje no cambia fecha ni duplica audit\u002Fevento. Una nueva entrada real reabre; un replay del webhook no reabre. No cambia el modo ni ejecuta reservas. Autenticación: Clave de API o sesión del panelScopes: messages:write Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200Resuelto (o replay de la misma resolución) (ConversationResolution)defaultError (RFC 9457) (Problem)",{"id":3258,"title":3259,"titles":3260,"content":3261,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#get-conversationsidsummary","GET \u002Fconversations\u002F{id}\u002Fsummary",[3204],"Último resumen con IA de la conversación (sin llamar al LLM) Owner, manager y staff. Devuelve el resumen guardado (summary: null si nunca se generó) y stale: true si llegaron mensajes después. Nunca consume IA. Rol staff (F2-52): conversación de un cliente sin tareas suyas ⇒ 404. Viewer ⇒ 403. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (ConversationSummary)defaultError (RFC 9457) (Problem)",{"id":3263,"title":3264,"titles":3265,"content":3266,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#post-conversationsidsummary","POST \u002Fconversations\u002F{id}\u002Fsummary",[3204],"Resumir la conversación con IA (acotado y cacheado) Owner, manager y staff con sesión de panel y CSRF. Texto de lectura para el equipo: el LLM no decide nada. Pasa por el AI gateway (cuota del proyecto, pausa de IA manual y por spam, freno de ráfaga, registro de uso summary.conversation). Solo se leen los últimos 40 mensajes, con tope de caracteres de entrada y 2048 tokens de salida (incluido razonamiento), con un único reintento de hasta 4096 tokens si el contenido llega vacío; los teléfonos y emails se enmascaran ([tel], [email]) antes y después. El último resumen se guarda con el id del último mensaje considerado: sin mensajes nuevos se devuelve el guardado (cached: true) sin llamar al LLM, aunque la IA esté pausada. Rol staff: fuera de su alcance ⇒ 404. 409 ai_paused (pausa del dueño o auto_spam), 429 ai_limit_reached (cuota) y demás ai_* de admisión, 409 ai_unavailable (key pendiente), 422 conversation_empty (sin texto), 502 ai_provider_unavailable (error del proveedor, detail con tipo\u002Fstatus\u002Fmotivo seguros) o ai_empty_response (modelo sin texto tras dos intentos). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200Resumen vigente (generado ahora o reutilizado) (ConversationSummary)defaultError (RFC 9457) (Problem)",{"id":3268,"title":3269,"titles":3270,"content":3271,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#get-conversationscounts","GET \u002Fconversations\u002Fcounts",[3204],"Contadores de conversaciones por estado del ciclo de vida Cantidad de conversaciones por lifecycle (siempre las seis claves, con 0) y total, para los contadores de la Bandeja. Excluye las sesiones de prueba (is_test), igual que la lista. mode opcional restringe por modo bot\u002Fhumano. Lectura para cualquier rol; API key: scope messages:read (F2-35). Autenticación: Clave de API o sesión del panelScopes: messages:read Parámetros NombreEnObligatorioTipoDescripciónmodequeryNobot, human, paused Respuestas EstadoDescripción200OK (ConversationLifecycleCounts)defaultError (RFC 9457) (Problem)",{"id":3273,"title":3274,"titles":3275,"content":3276,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fconversations#get-conversationsstream","GET \u002Fconversations\u002Fstream",[3204],"Avisos en vivo del inbox (SSE) text\u002Fevent-stream. Eventos message.received, message.sent y conversation.updated con\n{event, workspace_id, conversation_id, mode, lifecycle, unread_count, channel_type, message_id?, direction?}. channel_type es null si la conversación ya fue eliminada. Son avisos:\nel cliente vuelve a pedir la lista y los mensajes. Rol staff (F2-52): solo recibe los avisos de las\nconversaciones que puede ver en ese momento; el resto se descarta en el servidor. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Stream abiertodefaultError (RFC 9457) (Problem)",{"id":3278,"title":3279,"titles":3280,"content":3281,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator","API · simulator",[],"Operaciones de simulator del contrato OpenAPI que aceptan una clave de API.",{"id":3283,"title":3284,"titles":3285,"content":3286,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#post-simulatorclock","POST \u002Fsimulator\u002Fclock",[3279],"Fijar (o borrar con now = null) el reloj simulado del workspace Solo si ENV != production; en producción responde 403. El instante fijado sigue corriendo en tiempo real. Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":3288,"title":3289,"titles":3290,"content":3291,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#delete-simulatordata","DELETE \u002Fsimulator\u002Fdata",[3279],"Purgar todo lo is_test del workspace Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Purgado (SimulatorPurge)defaultError (RFC 9457) (Problem)",{"id":3293,"title":3294,"titles":3295,"content":3296,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#get-simulatorsessions","GET \u002Fsimulator\u002Fsessions",[3279],"Listar las sesiones de simulador del workspace Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (array\u003CSimulatorSession>)defaultError (RFC 9457) (Problem)",{"id":3298,"title":3299,"titles":3300,"content":3301,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#post-simulatorsessions","POST \u002Fsimulator\u002Fsessions",[3279],"Crear una sesión de simulador (cliente de prueba + conversación) Canal simulator (F2-12, ADR 0013): mismo pipeline que WhatsApp, sin proveedor externo.\nSolo panel (sesión + CSRF), roles owner\u002Fmanager; el tenant sale de la sesión.\nEl cliente queda is_test (fuera de listados reales, automatizaciones y reportes). Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (opcional) application\u002Fjson: SimulatorSessionCreate Respuestas EstadoDescripción201Creada (SimulatorSession)defaultError (RFC 9457) (Problem)",{"id":3303,"title":3304,"titles":3305,"content":3306,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#delete-simulatorsessionssession_id","DELETE \u002Fsimulator\u002Fsessions\u002F{session_id}",[3279],"Borrar una sesión (cliente, conversación, mensajes y reservas de prueba) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsession_idpathSístring (uuid) Respuestas EstadoDescripción204BorradadefaultError (RFC 9457) (Problem)",{"id":3308,"title":3309,"titles":3310,"content":3311,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#get-simulatorsessionssession_idmessages","GET \u002Fsimulator\u002Fsessions\u002F{session_id}\u002Fmessages",[3279],"Mensajes de la sesión con la traza del bot (debug) para el inspector Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsession_idpathSístring (uuid) Respuestas EstadoDescripción200OK (array\u003CSimulatorMessage>)defaultError (RFC 9457) (Problem)",{"id":3313,"title":3314,"titles":3315,"content":3316,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsimulator#post-simulatorsessionssession_idmessages","POST \u002Fsimulator\u002Fsessions\u002F{session_id}\u002Fmessages",[3279],"Enviar un mensaje como el cliente de prueba Mismo camino que el webhook entrante (persistir, SSE, cola). La respuesta del bot llega por GET \u002Fv1\u002Fconversations\u002Fstream. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsession_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción202Aceptado (object)defaultError (RFC 9457) (Problem)",{"id":3318,"title":3319,"titles":3320,"content":3321,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations","API · automations",[],"Operaciones de automations del contrato OpenAPI que aceptan una clave de API.",{"id":3323,"title":3324,"titles":3325,"content":3326,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#get-automations","GET \u002Fautomations",[3319],"Listar automatizaciones del workspace actual Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (array\u003CAutomation>)defaultError (RFC 9457) (Problem)",{"id":3328,"title":3329,"titles":3330,"content":3331,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#post-automations","POST \u002Fautomations",[3319],"Crear una automatización F3-184: los avisos al cliente al entrar en una etapa (workitem.stage_entered) y el de confirmación (booking.confirmed) no son reglas: se configuran como on_enter.notify_customer (con enabled) en las etapas del servicio (PUT \u002Fservices\u002F{id}\u002Fstages). Crear una regla al cliente con esos disparadores responde 422; para demoras o condiciones se usa un flujo sobre workitem.stage_entered. Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: AutomationCreate Respuestas EstadoDescripción201Creada (Automation)defaultError (RFC 9457) (Problem)",{"id":3333,"title":3334,"titles":3335,"content":3336,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#patch-automationsid","PATCH \u002Fautomations\u002F{id}",[3319],"Editar o apagar una automatización y regenerar sus jobs abiertos Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: AutomationPatch Respuestas EstadoDescripción200Actualizada (Automation)defaultError (RFC 9457) (Problem)",{"id":3338,"title":3339,"titles":3340,"content":3341,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#get-automationscustomer-noticesdeliveries","GET \u002Fautomations\u002Fcustomer-notices\u002Fdeliveries",[3319],"Customer Notice Deliveries Owner\u002Fmanager; tenant desde credencial. Bitácora de intentos, sin texto ni datos del canal. Retención 90 días. Políticas por servicio inicialmente apagadas; cambios auditados. PUT exige CSRF para sesión. Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripciónwork_item_idqueryNostring \u002F null (null)customer_idqueryNostring \u002F null (null)statusqueryNostring \u002F null (null)beforequeryNostring \u002F null (null)limitqueryNointeger default 50 Respuestas EstadoDescripción200Successful Response (array\u003CCustomerNoticeDeliveryOut>)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3343,"title":3344,"titles":3345,"content":3346,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#get-automationscustomer-noticespolicies","GET \u002Fautomations\u002Fcustomer-notices\u002Fpolicies",[3319],"Customer Notice Policies Owner\u002Fmanager; tenant desde credencial. Bitácora de intentos, sin texto ni datos del canal. Retención 90 días. Políticas por servicio inicialmente apagadas; cambios auditados. PUT exige CSRF para sesión. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Successful Response (array\u003CCustomerNoticePolicyOut>)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3348,"title":3349,"titles":3350,"content":3351,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#put-automationscustomer-noticespolicies","PUT \u002Fautomations\u002Fcustomer-notices\u002Fpolicies",[3319],"Customer Notice Policy Save Owner\u002Fmanager; tenant desde credencial. Bitácora de intentos, sin texto ni datos del canal. Retención 90 días. Políticas por servicio inicialmente apagadas; cambios auditados. PUT exige CSRF para sesión. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerNoticePolicyIn Respuestas EstadoDescripción200Successful Response (CustomerNoticePolicyOut)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3353,"title":3354,"titles":3355,"content":3356,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#post-automationscustomer-noticespreview","POST \u002Fautomations\u002Fcustomer-notices\u002Fpreview",[3319],"Customer Notice Previews Owner\u002Fmanager + CSRF; tenant desde sesión. Solo lectura, sin enviar ni guardar: texto real de plantilla con datos de ejemplo, vocabulario\u002Fidioma del borrador, canal disponible. Los textos de flujos muestran sus bindings sin resolver. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: CustomerNoticePreviewIn Respuestas EstadoDescripción200Successful Response (CustomerNoticePreviews)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3358,"title":3359,"titles":3360,"content":3361,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#get-automationsrecommended","GET \u002Fautomations\u002Frecommended",[3319],"Automatizaciones recomendadas por rasgos del proyecto Unión sin duplicados de los ejemplos parecidos (F3-409), con su estado real y una vista previa en el idioma del proyecto, con datos de muestra. Sin rasgos también ofrece recomendaciones generales. El alias de transición blueprint identifica el ejemplo más parecido o es nulo. Instalar siempre crea inactivas y conserva las ediciones existentes. Owner\u002Fmanager. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (RecommendedAutomations)defaultError (RFC 9457) (Problem)",{"id":3363,"title":3364,"titles":3365,"content":3366,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#put-automationsrecommendedkeyactivation","PUT \u002Fautomations\u002Frecommended\u002F{key}\u002Factivation",[3319],"Activar o pausar una recomendada La instala antes si el proyecto todavía no la tiene. Idempotente. Activar una regla no reprograma el pasado. 404 recommended_automation_not_found si la clave no es del blueprint. Owner\u002Fmanager. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónkeypathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: RecommendedActivation Respuestas EstadoDescripción200Estado resultante (RecommendedAutomation)defaultError (RFC 9457) (Problem)",{"id":3368,"title":3369,"titles":3370,"content":3371,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#post-automationsrecommendedinstall","POST \u002Fautomations\u002Frecommended\u002Finstall",[3319],"Instalar las recomendadas que falten (inactivas) Idempotente; no duplica ni pisa lo que el negocio editó. installed cuenta las creadas por esta llamada. Los proyectos nuevos ya las traen instaladas e inactivas. Owner\u002Fmanager. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (RecommendedAutomations)defaultError (RFC 9457) (Problem)",{"id":3373,"title":3374,"titles":3375,"content":3376,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#get-automationsstage-options","GET \u002Fautomations\u002Fstage-options",[3319],"Etapas y acciones válidas para las reglas por etapa Claves y etiquetas pt\u002Fes\u002Fen del blueprint vigente del workspace (vacío si no tiene). Son los valores admitidos por stage y action_key. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (AutomationStageOptions)defaultError (RFC 9457) (Problem)",{"id":3378,"title":3379,"titles":3380,"content":3381,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#get-noticesoverview","GET \u002Fnotices\u002Foverview",[3319],"Notices Overview Todo lo que sale al cliente (reglas, política por servicio, etapas y flujos), ordenado en el tiempo del servicio. Cada fila trae su valor efectivo, el motivo si está frenada y dónde se edita. Solo lectura. Dueño o encargado; tenant desde credencial. Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripciónaudiencequeryNostring default customerservice_idqueryNostring \u002F null (null) Respuestas EstadoDescripción200Successful Response (NoticeOverview)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3383,"title":3384,"titles":3385,"content":3386,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#patch-noticesoverview","PATCH \u002Fnotices\u002Foverview",[3319],"Notices Master «Apagar todos los avisos a clientes»: el único interruptor del proyecto; gana sobre el de cada fila. Dueño o encargado; tenant desde credencial. Exige CSRF para sesión. Escribe en la fuente de cada aviso, con su validación y auditoría. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: NoticeMasterPatch Respuestas EstadoDescripción200Successful Response (NoticeOverview)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3388,"title":3389,"titles":3390,"content":3391,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fautomations#patch-noticesoverviewitem_id","PATCH \u002Fnotices\u002Foverview\u002F{item_id}",[3319],"Notices Item Enciende o apaga una fila: escribe en su fuente (regla, política, etapa o flujo) con su validación. Dueño o encargado; tenant desde credencial. Exige CSRF para sesión. Escribe en la fuente de cada aviso, con su validación y auditoría. Las filas stage publican el flujo y requieren además flows:write (solo dueño) o settings:write junto con config:write para API key. Sin el permiso de origen responde 403; la lectura devuelve toggleable=false para esa fila. Autenticación: Clave de API o sesión del panelScopes: config:write, flows:write, settings:write Parámetros NombreEnObligatorioTipoDescripciónitem_idpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: NoticeItemPatch Respuestas EstadoDescripción200Successful Response (NoticeItem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3393,"title":3394,"titles":3395,"content":3396,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform","API · platform",[],"Operaciones de platform del contrato OpenAPI que aceptan una clave de API.",{"id":3398,"title":3399,"titles":3400,"content":3401,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-connectionprojects","GET \u002Fconnection\u002Fprojects",[3394],"Proyectos a los que llega la credencial FIU-498 (ADR 0054). Con un token OAuth del MCP del dueño, los proyectos vigentes de la conexión (los que pasan la revalidación de rol y estado en cada pedido), sin necesitar X-Wagend-Project. Con una API key, su único proyecto. Respalda la herramienta list_projects del MCP. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Proyectos de la credencial (ConnectionProjectList)defaultError (RFC 9457) (Problem)",{"id":3403,"title":3404,"titles":3405,"content":3406,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-demorestore","GET \u002Fdemo\u002Frestore",[3394],"Estado del botón «Restaurar demo» FIU-483. Owner, manager o colaborador del demo de la credencial (nunca un id del path). Dice si el demo tiene foto base (available), de cuándo es, desde cuándo se puede volver a usar el botón (uno cada 10 minutos por demo) y la última restauración a demanda. 404 not_a_demo si el proyecto no es un demo de la suite con la marca de demo (o tiene cobros reales). Cache-Control no-store. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Estado del botón (DemoRestoreStatus)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)",{"id":3408,"title":3409,"titles":3410,"content":3411,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#post-demorestore","POST \u002Fdemo\u002Frestore",[3394],"Restaurar el demo a su foto base FIU-483. El reset liviano de ESTE demo, en segundos (cookie con X-Csrf-Token o API key, p. ej. Wagy por el MCP). Borra todo lo creado desde la foto (tareas, clientes, cobros, conversaciones, gastos, archivos…), vuelve a la foto lo editado o borrado y mueve sus fechas al día; conserva el proyecto, los canales e integraciones, el MCP, las API keys, los miembros con cuenta y la IA. Un demo por vez (409 demo_reset_busy, también mientras corre la limpieza de la noche) y uno cada 10 minutos (429 demo_restore_cooldown, con Retry-After). Si no se puede (sin foto o no quedó igual a la foto) no cambia nada (409 demo_restore_unavailable) y la noche corre el reset completo. Audita demo.restored. Autenticación: Clave de API o sesión del panelScopes: settings:write Respuestas EstadoDescripción200Demo restaurado (DemoRestoreResult)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":3413,"title":3414,"titles":3415,"content":3416,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-demostatus","GET \u002Fdemo\u002Fstatus",[3394],"¿El proyecto es un demo de la suite? (chip «Demo») FIU-514. Solo lectura, para cualquier miembro del proyecto (el panel muestra el chip «Demo» a todos; los controles siguen detrás de demo:restore en \u002Fdemo\u002Frestore). Devuelve is_demo (siempre true) y si el demo tiene foto base (available); sin fechas ni historial. 404 not_a_demo si el proyecto no es un demo de la suite con la marca de demo (o tiene cobros reales). Cache-Control no-store. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Estado del demo (DemoStatus)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)",{"id":3418,"title":3419,"titles":3420,"content":3421,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-me","GET \u002Fme",[3394],"Workspace y scopes de la credencial actual Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (Me)defaultError (RFC 9457) (Problem)",{"id":3423,"title":3424,"titles":3425,"content":3426,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partneractivity","GET \u002Fpartner\u002Factivity",[3394],"Actividad de la cartera del partner Sesión de panel del partner (FIU-434). Hitos de sus clientes, del más nuevo al más viejo: alta, canal conectado, primera tarea (reserva o pedido), primer cobro del plan (solo la fecha, sin monto), prueba que empieza a vencer (a 7 días, con due_at) y cliente que se apagó (14 días sin uso). Paginado por cursor; sin contenido. Con Bearer (FIU-439) exige partner:read y el partner es quien emitió la credencial. Sin caché. Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónlimitqueryNointeger default 30cursorqueryNostring \u002F null (null) Respuestas EstadoDescripción200Actividad de la cartera del partner (ActivityPage)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3428,"title":3429,"titles":3430,"content":3431,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnerclients","GET \u002Fpartner\u002Fclients",[3394],"Mis clientes (cartera del partner) Sesión de panel del partner (FIU-434). El directorio del superadmin (FIU-430) acotado a los proyectos con la etiqueta del partner de la sesión: plan o prueba, semáforo de salud con sus motivos, último uso, tareas y conversaciones en 30 días, canales conectados y alertas (prueba que vence, canal caído, sin uso hace 14 días). Conteos y estados, sin costos ni contenido: el contenido se ve al entrar al proyecto. Orden estable por columna e ID con cursor (otro orden da 422); filtros rápidos como el directorio. Con Bearer (FIU-439) exige partner:read y el partner es quien emitió la credencial. Sin caché. Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónsortqueryNostring last_activity, name, created_at, tasks_30d, conversations_30d default last_activityorderqueryNostring asc, desc default desclimitqueryNointeger default 50cursorqueryNostring \u002F null (null)quickqueryNostring \u002F null (null) Respuestas EstadoDescripción200Mis clientes (cartera del partner) (PartnerClientPage)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3433,"title":3434,"titles":3435,"content":3436,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnerclientsworkspace_id","GET \u002Fpartner\u002Fclients\u002F{workspace_id}",[3394],"Un cliente de la cartera del partner Sesión de panel del partner o Bearer con partner:read (FIU-439). La fila del cliente en «Mis clientes» (mismos conteos, estados y alertas, sin costos ni contenido) y sus hitos de Actividad, del más nuevo al más viejo. Un proyecto que no es de la cartera del partner da 404 client_not_found, igual que uno inexistente. Sin caché. Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónworkspace_idpathSístring (uuid) Respuestas EstadoDescripción200Un cliente de la cartera del partner (PartnerClientDetail)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3438,"title":3439,"titles":3440,"content":3441,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnerclientsworkspace_idaudit","GET \u002Fpartner\u002Fclients\u002F{workspace_id}\u002Faudit",[3394],"Puntaje de puesta a punto de un cliente de la cartera Sesión de panel del partner o Bearer con partner:read (FIU-524). Misma auditoría que GET \u002Fv1\u002Fworkspace\u002Faudit, solo lectura, del proyecto indicado. Un proyecto que no es de la cartera del partner da 404, igual que uno inexistente. Sin caché. Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónworkspace_idpathSístring (uuid)langqueryNostring pt, es, en Respuestas EstadoDescripción200Puntaje y lo que falta (SetupAudit)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3443,"title":3444,"titles":3445,"content":3446,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnercourses","GET \u002Fpartner\u002Fcourses",[3394],"Cursos del partner (Aprendé) Cursos revisados por Javier. Sin ninguno la lista va vacía y el panel no muestra la sección. Con Bearer (API key u OAuth del MCP) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403). Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónlangqueryNostring pt, es, en default pt Respuestas EstadoDescripción200Contenido del panel del partner (CourseList)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3448,"title":3449,"titles":3450,"content":3451,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnerkit","GET \u002Fpartner\u002Fkit",[3394],"Kit para vender del partner Kit para vender: mensajes por rubro y plantillas de proyecto, con el link ?ref del partner ya puesto. Con Bearer (API key u OAuth del MCP) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403). Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónlangqueryNostring pt, es, en default pt Respuestas EstadoDescripción200Contenido del panel del partner (PartnerKit)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3453,"title":3454,"titles":3455,"content":3456,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnernews","GET \u002Fpartner\u002Fnews",[3394],"Novedades para el partner Novedades del sitio con la etiqueta partners primero y la última para negocios, lista para compartir. Con Bearer (API key u OAuth del MCP) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403). Autenticación: Clave de API o sesión del panelScopes: partner:read Parámetros NombreEnObligatorioTipoDescripciónlangqueryNostring pt, es, en default pt Respuestas EstadoDescripción200Contenido del panel del partner (PartnerNews)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3458,"title":3459,"titles":3460,"content":3461,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-partnertoday","GET \u002Fpartner\u002Ftoday",[3394],"Hoy del panel del partner Sesión de panel del partner (FIU-434). Saludo con el nombre de la cuenta, el partner (sin comisión ni contacto), progreso de la cartera (clientes, activos en 30 días y fecha del primero), una sola próxima acción (canal caído, prueba que vence, conectar un canal, cliente que se apaga o, sin clientes, crear el primero) y las alertas con algún cliente (las vacías no vienen). 403 partner_required si la cuenta no es de un partner. Con Bearer (API key u OAuth del MCP, FIU-439) exige partner:read y el partner es quien emitió la credencial, mientras siga siendo miembro activo del proyecto de la credencial (si no, 403). Sin caché. Autenticación: Clave de API o sesión del panelScopes: partner:read Respuestas EstadoDescripción200Hoy del panel del partner (PartnerToday)403Error (RFC 9457) (Problem)",{"id":3463,"title":3464,"titles":3465,"content":3466,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-webhook-endpoints","GET \u002Fwebhook-endpoints",[3394],"Listar endpoints de webhooks (owner\u002Fmanager o scope webhooks:manage) Autenticación: Clave de API o sesión del panelScopes: webhooks:manage Respuestas EstadoDescripción200OK (object)defaultError (RFC 9457) (Problem)",{"id":3468,"title":3469,"titles":3470,"content":3471,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#post-webhook-endpoints","POST \u002Fwebhook-endpoints",[3394],"Crear endpoint (webhooks:manage). El secreto se devuelve una sola vez. URL https obligatoria; se resuelve el DNS y se rechazan IPs privadas, loopback, link-local y metadatos\nde nube (422 unsafe_webhook_url). Máximo 10 por workspace (409 webhook_limit_reached). No admite\nIdempotency-Key (400 idempotency_not_supported): la respuesta contiene el secreto. Cache-Control: no-store.\nSolo los tipos de EventType se pueden suscribir: un tipo desconocido responde 422 invalid_webhook\ncon unsupported_events y supported_events. Las entregas usan data.booking, data.payment,\ndata.message, data.conversation o data.action según la familia del evento; no incluyen texto de mensajes. Autenticación: Clave de API o sesión del panelScopes: webhooks:manage Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción201Creado (``WebhookEndpoint \u002F object)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3473,"title":3474,"titles":3475,"content":3476,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-webhook-endpointsid","GET \u002Fwebhook-endpoints\u002F{id}",[3394],"Ver un endpoint Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200OK (WebhookEndpoint)defaultError (RFC 9457) (Problem)",{"id":3478,"title":3479,"titles":3480,"content":3481,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#patch-webhook-endpointsid","PATCH \u002Fwebhook-endpoints\u002F{id}",[3394],"Cambiar URL, eventos o activar\u002Fdesactivar (reactivar pone en cero los fallos) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: object Respuestas EstadoDescripción200OK (WebhookEndpoint)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3483,"title":3484,"titles":3485,"content":3486,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#delete-webhook-endpointsid","DELETE \u002Fwebhook-endpoints\u002F{id}",[3394],"Borrar el endpoint y su log de entregas Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción204BorradodefaultError (RFC 9457) (Problem)",{"id":3488,"title":3489,"titles":3490,"content":3491,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-webhook-endpointsiddeliveries","GET \u002Fwebhook-endpoints\u002F{id}\u002Fdeliveries",[3394],"Log de entregas del endpoint (más nueva primero) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200Página (object)defaultError (RFC 9457) (Problem)",{"id":3493,"title":3494,"titles":3495,"content":3496,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#post-webhook-endpointsiddeliveriesdelivery_idresend","POST \u002Fwebhook-endpoints\u002F{id}\u002Fdeliveries\u002F{delivery_id}\u002Fresend",[3394],"Reenviar una entrega (vuelve a la cola con los intentos en cero) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringdelivery_idpathSístring Respuestas EstadoDescripción202Reencolada (WebhookDelivery)409El endpoint está deshabilitadodefaultError (RFC 9457) (Problem)",{"id":3498,"title":3499,"titles":3500,"content":3501,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#post-webhook-endpointsidping","POST \u002Fwebhook-endpoints\u002F{id}\u002Fping",[3394],"Encolar un evento de prueba webhook.ping (un solo intento) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción202Entrega encolada (WebhookDelivery)defaultError (RFC 9457) (Problem)",{"id":3503,"title":3504,"titles":3505,"content":3506,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#post-webhook-endpointsidrotate-secret","POST \u002Fwebhook-endpoints\u002F{id}\u002Frotate-secret",[3394],"Rotar el secreto de firma (el anterior deja de valer; se muestra una sola vez) Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring Respuestas EstadoDescripción200Endpoint con el secreto nuevo (Cache-Control: no-store) (``WebhookEndpoint \u002F object)defaultError (RFC 9457) (Problem)",{"id":3508,"title":3509,"titles":3510,"content":3511,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#post-workspaceexamples","POST \u002Fworkspace\u002Fexamples",[3394],"Componer de 1 a 3 ejemplos por parte (owner; requiere X-Csrf-Token) F3-407 (ADR 0036 fase 2). Aplica las partes pedidas (vocabulary, flows, automations, catalog; todas por defecto) de cada ejemplo, idempotente por ejemplo y parte (lo ya aplicado devuelve already_applied) y sin duplicar por nombre. Nunca crea personas ni recursos (decisiones 1, 12 y 13 del dueño); el catálogo son servicios y productos inactivos y sin precio sobre la agenda que el negocio ya tiene (resource_group_id o, si hay uno solo, ese grupo); sin agenda queda skipped con needs_agenda. El vocabulario suma términos ausentes conservando el primer preset y los términos existentes; no modifica uno editado por el negocio (vocabulary_already_set). Tope de 3 ejemplos distintos por proyecto (409 examples_limit); ejemplo desconocido 409 unknown_example. La parte flows del taller y del lavadero activa además Vehículos (created.asset_type, FIU-610; nunca crea bienes) y su deshacer lo desactiva, sin borrarlo, si nadie lo tocó y no tiene bienes (si no, kept.asset_type). Serializa con la fila del workspace y audita workspace.blueprint_applied y workspace.example_applied por parte. Permiso workspace:blueprint; sin API key. Autenticación: Clave de API o sesión del panelScopes: settings:write Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExamplesInput Respuestas EstadoDescripción200Resultado por ejemplo y parte, y estado de rasgos y ejemplos aplicados (ExamplesResult)409Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3513,"title":3514,"titles":3515,"content":3516,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#delete-workspaceexampleskey","DELETE \u002Fworkspace\u002Fexamples\u002F{key}",[3394],"Deshacer una parte (o todas) de un ejemplo (owner; requiere X-Csrf-Token) F3-407. Vocabulario, vuelve al anterior si nadie lo cambió; flujos, desactiva los que nadie editó ni usa; automatizaciones, retira las que siguen inactivas y sin uso; catálogo, borra los servicios que siguen sin ediciones y sin tareas (los productos nunca se borran, ya nacen inactivos). Lo que se queda sale en kept y deja de ser del ejemplo. Una parte no aplicada devuelve not_applied. Audita workspace.example_undone. Permiso workspace:blueprint; sin API key. Autenticación: Clave de API o sesión del panelScopes: settings:write Parámetros NombreEnObligatorioTipoDescripciónkeypathSístringpartqueryNoExamplePart \u002F null (null)X-Csrf-TokenheaderSístring Respuestas EstadoDescripción200Resultado por parte y estado de rasgos y ejemplos aplicados (ExamplesResult)defaultError (RFC 9457) (Problem)",{"id":3518,"title":3519,"titles":3520,"content":3521,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fplatform#get-workspacetemplate","GET \u002Fworkspace\u002Ftemplate",[3394],"Exportar la configuración del proyecto como plantilla (owner) La configuración del proyecto como plantilla JSON (ADR 0042, FIU-523): flujos con la raíz de atención y las intenciones, servicios, productos, planes, base de ayuda, textos del bot, automatizaciones, encadenamientos, vocabulario y tipos de bien del cliente activos (customer_asset_types, FIU-610: uno de fábrica viaja como {key, preset}), todo por ref y sin ids. Nunca clientes ni sus bienes, tareas, cobros, canales, credenciales, API keys ni secretos. Audita template.exported en el origen. Se descarga como archivo (Content-Disposition). Permiso workspace:template_export; con API key, config:read. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Plantilla del proyecto (ProjectTemplate)403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3523,"title":3524,"titles":3525,"content":3526,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fauth","API · auth",[],"Operaciones de auth del contrato OpenAPI que aceptan una clave de API.",{"id":3528,"title":3529,"titles":3530,"content":3531,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fauth#get-authme","GET \u002Fauth\u002Fme",[3524],"Sesión del panel (usuario, workspace activo, rol y membresías) Requiere la cookie de sesión del panel (no acepta API keys). Sin secretos ni hash; el tenant sale de la sesión. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (SessionInfo)401Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3533,"title":3534,"titles":3535,"content":3536,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge","API · knowledge",[],"Operaciones de knowledge del contrato OpenAPI que aceptan una clave de API.",{"id":3538,"title":3539,"titles":3540,"content":3541,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#get-knowledge","GET \u002Fknowledge",[3534],"Listar los ítems de la base de conocimiento del bot Sesión con cualquier rol, o API key con config:read. Sin paginación (lista completa del workspace). Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripcióntypequeryNostring text, faq, catalog_item, file, web, listinginclude_inactivequeryNoboolean default false Respuestas EstadoDescripción200Ítems (array\u003CKnowledgeItem>)defaultError (RFC 9457) (Problem)",{"id":3543,"title":3544,"titles":3545,"content":3546,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledge","POST \u002Fknowledge",[3534],"Crear un ítem de conocimiento (texto, FAQ o ítem de catálogo) Owner\u002Fmanager con CSRF, o API key con config:write. Con AI_LIMITS_ENABLED activo, admisión externa puede devolver 429 (ai_limit_reached, ai_usage_uncertain, ai_busy, ai_request_rate_limited). Calcula el embedding (503 si no hay proveedor de embeddings configurado, 502 si falla). Auditado. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: KnowledgeItemCreate Respuestas EstadoDescripción201Creado (versión 1) (KnowledgeItem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)502Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3548,"title":3549,"titles":3550,"content":3551,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#patch-knowledgeitem_id","PATCH \u002Fknowledge\u002F{item_id}",[3534],"Editar un ítem (nueva versión) o activarlo\u002Fdesactivarlo Owner\u002Fmanager con CSRF, o API key con config:write. Cambiar título o contenido sube version y requiere embedding; con admisión IA activada puede devolver429 ai_limit_reached\u002Fai_usage_uncertain\u002Fai_busy\u002Fai_request_rate_limited sin cambiar el ítem. Cambios de active no usan IA. Auditado. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónitem_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: KnowledgeItemUpdate Respuestas EstadoDescripción200Ítem actualizado (KnowledgeItem)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)502Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3553,"title":3554,"titles":3555,"content":3556,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#delete-knowledgeitem_id","DELETE \u002Fknowledge\u002F{item_id}",[3534],"Dar de baja un ítem (baja lógica) Owner\u002Fmanager con CSRF, o API key con config:write. El ítem deja de responder en el bot pero se conserva su historial; devuelve el ítem con active=false. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónitem_idpathSístring (uuid) Respuestas EstadoDescripción200Ítem dado de baja (KnowledgeItem)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3558,"title":3559,"titles":3560,"content":3561,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgefiles","POST \u002Fknowledge\u002Ffiles",[3534],"Subir un PDF a la base de conocimiento Owner\u002Fmanager con CSRF, o API key con config:write. 422 si el PDF es inválido, ilegible o supera el tamaño máximo. El PDF va como cuerpo crudo con Content-Type application\u002Fpdf (sin multipart, un archivo por llamada); tamaño máximo acotado por el servidor. Se parte en ítems de tipo file. Admisión IA opt-in puede devolver429 con códigos ai_limit_reached\u002Fai_usage_uncertain\u002Fai_busy\u002Fai_request_rate_limited; una denegación revierte la ingesta. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónfilenamequerySístring Cuerpo de la solicitud (obligatorio) application\u002Fpdf: string Respuestas EstadoDescripción201Ítems creados a partir del PDF (array\u003CKnowledgeItem>)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)502Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3563,"title":3564,"titles":3565,"content":3566,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#get-knowledgelive-queries","GET \u002Fknowledge\u002Flive-queries",[3534],"GET consulta HTTP en vivo (F2-49) Solo sesión owner\u002Fmanager; escrituras con CSRF. API keys sin acceso. HTTPS GET público con IP fijada y validación por salto, 3 s totales, 64 KiB descomprimidos y 2 KiB mapeados. Credenciales cifradas de escritura únicamente. Schema cerrado de hasta 8 parámetros escalares, mapeo declarativo. Máximo 10 consultas; expected_version evita sobrescribir cambios. La baja desactiva y conserva historial. Pruebas aplican cache tenant\u002Fconsulta\u002Fversión\u002Fparámetros, cuotas y circuito como el bot; errores externos son resultado ok=false sin contenido crudo. Sin PII en auditoría. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Resultado (array\u003CLiveQueryOut>)defaultError (RFC 9457) (Problem)",{"id":3568,"title":3569,"titles":3570,"content":3571,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgelive-queries","POST \u002Fknowledge\u002Flive-queries",[3534],"POST consulta HTTP en vivo (F2-49) Solo sesión owner\u002Fmanager; escrituras con CSRF. API keys sin acceso. HTTPS GET público con IP fijada y validación por salto, 3 s totales, 64 KiB descomprimidos y 2 KiB mapeados. Credenciales cifradas de escritura únicamente. Schema cerrado de hasta 8 parámetros escalares, mapeo declarativo. Máximo 10 consultas; expected_version evita sobrescribir cambios. La baja desactiva y conserva historial. Pruebas aplican cache tenant\u002Fconsulta\u002Fversión\u002Fparámetros, cuotas y circuito como el bot; errores externos son resultado ok=false sin contenido crudo. Sin PII en auditoría. Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: LiveQueryCreate Respuestas EstadoDescripción201Resultado (LiveQueryOut)defaultError (RFC 9457) (Problem)",{"id":3573,"title":3574,"titles":3575,"content":3576,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#put-knowledgelive-queriesquery_id","PUT \u002Fknowledge\u002Flive-queries\u002F{query_id}",[3534],"PUT consulta HTTP en vivo (F2-49) Solo sesión owner\u002Fmanager; escrituras con CSRF. API keys sin acceso. HTTPS GET público con IP fijada y validación por salto, 3 s totales, 64 KiB descomprimidos y 2 KiB mapeados. Credenciales cifradas de escritura únicamente. Schema cerrado de hasta 8 parámetros escalares, mapeo declarativo. Máximo 10 consultas; expected_version evita sobrescribir cambios. La baja desactiva y conserva historial. Pruebas aplican cache tenant\u002Fconsulta\u002Fversión\u002Fparámetros, cuotas y circuito como el bot; errores externos son resultado ok=false sin contenido crudo. Sin PII en auditoría. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónquery_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: LiveQueryUpdate Respuestas EstadoDescripción200Resultado (LiveQueryOut)defaultError (RFC 9457) (Problem)",{"id":3578,"title":3579,"titles":3580,"content":3581,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#delete-knowledgelive-queriesquery_id","DELETE \u002Fknowledge\u002Flive-queries\u002F{query_id}",[3534],"DELETE consulta HTTP en vivo (F2-49) Solo sesión owner\u002Fmanager; escrituras con CSRF. API keys sin acceso. HTTPS GET público con IP fijada y validación por salto, 3 s totales, 64 KiB descomprimidos y 2 KiB mapeados. Credenciales cifradas de escritura únicamente. Schema cerrado de hasta 8 parámetros escalares, mapeo declarativo. Máximo 10 consultas; expected_version evita sobrescribir cambios. La baja desactiva y conserva historial. Pruebas aplican cache tenant\u002Fconsulta\u002Fversión\u002Fparámetros, cuotas y circuito como el bot; errores externos son resultado ok=false sin contenido crudo. Sin PII en auditoría. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónquery_idpathSístring (uuid) Respuestas EstadoDescripción200Resultado (LiveQueryOut)defaultError (RFC 9457) (Problem)",{"id":3583,"title":3584,"titles":3585,"content":3586,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgelive-queriesquery_idtest","POST \u002Fknowledge\u002Flive-queries\u002F{query_id}\u002Ftest",[3534],"POST consulta HTTP en vivo (F2-49) Solo sesión owner\u002Fmanager; escrituras con CSRF. API keys sin acceso. HTTPS GET público con IP fijada y validación por salto, 3 s totales, 64 KiB descomprimidos y 2 KiB mapeados. Credenciales cifradas de escritura únicamente. Schema cerrado de hasta 8 parámetros escalares, mapeo declarativo. Máximo 10 consultas; expected_version evita sobrescribir cambios. La baja desactiva y conserva historial. Pruebas aplican cache tenant\u002Fconsulta\u002Fversión\u002Fparámetros, cuotas y circuito como el bot; errores externos son resultado ok=false sin contenido crudo. Sin PII en auditoría. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónquery_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: LiveQueryTest Respuestas EstadoDescripción200Resultado (LiveQueryResult)defaultError (RFC 9457) (Problem)",{"id":3588,"title":3589,"titles":3590,"content":3591,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgesearch","POST \u002Fknowledge\u002Fsearch",[3534],"Buscar en la base de conocimiento (lo mismo que ve el bot) Sesión con cualquier rol, o API key con config:read. Búsqueda semántica; sirve al simulador del panel. Con admisión IA activada puede devolver429 ai_limit_reached\u002Fai_usage_uncertain\u002Fai_busy\u002Fai_request_rate_limited. Autenticación: Clave de API o sesión del panelScopes: config:read Cuerpo de la solicitud (obligatorio) application\u002Fjson: KnowledgeSearch Respuestas EstadoDescripción200Resultados ordenados por score (array\u003CKnowledgeSearchHit>)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)502Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3593,"title":3594,"titles":3595,"content":3596,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#get-knowledgesources","GET \u002Fknowledge\u002Fsources",[3534],"Listar las fuentes web de la base de conocimiento Solo sesión (cualquier rol); las API keys no tienen acceso a las fuentes (traen URLs, se mantienen en el panel). Sin paginación (máximo 10 por workspace). Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Fuentes (array\u003CKnowledgeSource>)defaultError (RFC 9457) (Problem)",{"id":3598,"title":3599,"titles":3600,"content":3601,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgesources","POST \u002Fknowledge\u002Fsources",[3534],"Registrar una página web o un listado como fuente de conocimiento (F2-47, F2-48) Solo sesión owner\u002Fmanager con CSRF. La URL debe ser http(s) pública: se valida contra SSRF (IPs privadas, loopback, link-local\u002Fmetadata, credenciales en la URL, DNS) y vuelve a validarse en cada traída y en cada redirección; 422 unsafe_source_url si no es válida. La URL tampoco puede llevar secretos en el query (?api_key=…, ?token=… y variantes: 422 unsafe_source_url; las credenciales van por fuera de la URL). No hace la traída: queda pending y el worker la importa en su próximo ciclo (≤ 1 min), una sola página, sin JavaScript, respetando robots.txt, solo text\u002Fhtml\u002Ftext\u002Fplain, tope de tamaño. Los ítems importados son de tipo web y el bot los recibe como dato citado no confiable, nunca como instrucción. Tope de 10 fuentes por workspace (409 knowledge_source_limit_reached); URL repetida 409 knowledge_source_duplicate. Auditado. F2-48: kind = csv, json, rss o sheet registra un listado estructurado (misma traída segura, sin robots.txt, tope 2 MiB y 1000 filas) con mapping declarativo y credentials opcionales (cifradas, nunca devueltas); los ítems son de tipo listing. 422 knowledge_invalid_mapping si el mapeo no es válido. kind=site importa una SECCIÓN: url es el prefijo (p. ej. https:\u002F\u002Ffiuit.com\u002Fes\u002Fdocs); el worker lee el sitemap.xml del dominio (y sus índices), toma solo las URLs del mismo host que cuelgan del prefijo (hasta max_pages, 50 por defecto, máx. 200) y trae cada una con la misma traída segura (SSRF, tamaño, tiempo, robots.txt, sin seguir a otros dominios). Cada refresco agrega las páginas nuevas, actualiza las que cambiaron (hash del contenido) y archiva las que desaparecieron. Sin sitemap: last_error=no_sitemap. Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: KnowledgeSourceCreate Respuestas EstadoDescripción201Fuente creada (status=pending) (KnowledgeSource)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3603,"title":3604,"titles":3605,"content":3606,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#get-knowledgesourcessource_id","GET \u002Fknowledge\u002Fsources\u002F{source_id}",[3534],"Ver una fuente web (estado, último refresco, error legible) Solo sesión (cualquier rol). last_error es un código corto (blocked_address, robots_disallowed, too_large, unsupported_content_type, timeout, empty_content...), nunca el texto de una excepción. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsource_idpathSístring (uuid) Respuestas EstadoDescripción200Fuente (KnowledgeSource)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3608,"title":3609,"titles":3610,"content":3611,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#patch-knowledgesourcessource_id","PATCH \u002Fknowledge\u002Fsources\u002F{source_id}",[3534],"Cambiar el intervalo de refresco o pausar\u002Freanudar una fuente Solo sesión owner\u002Fmanager con CSRF. paused=true detiene el refresco (los ítems ya importados siguen disponibles); paused=false la reanuda y la agenda de inmediato. Auditado. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsource_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: KnowledgeSourceUpdate Respuestas EstadoDescripción200Fuente actualizada (KnowledgeSource)404Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3613,"title":3614,"titles":3615,"content":3616,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#delete-knowledgesourcessource_id","DELETE \u002Fknowledge\u002Fsources\u002F{source_id}",[3534],"Borrar una fuente y los ítems que importó Solo sesión owner\u002Fmanager con CSRF. Los ítems manuales no se tocan. Auditado. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsource_idpathSístring (uuid) Respuestas EstadoDescripción204Borrada404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3618,"title":3619,"titles":3620,"content":3621,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#get-knowledgesourcessource_idpages","GET \u002Fknowledge\u002Fsources\u002F{source_id}\u002Fpages",[3534],"Páginas importadas de una fuente de sección (kind=site) Solo sesión (cualquier rol). Una fila por página con su estado (ok o archived). Vacío para los demás tipos de fuente. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsource_idpathSístring (uuid) Respuestas EstadoDescripción200Páginas (array\u003CKnowledgeSourcePage>)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3623,"title":3624,"titles":3625,"content":3626,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgesourcessource_idrefresh","POST \u002Fknowledge\u002Fsources\u002F{source_id}\u002Frefresh",[3534],"Pedir un refresco inmediato de una fuente Solo sesión owner\u002Fmanager con CSRF. Agenda la fuente para el próximo ciclo del worker y reanuda una pausada (reinicia el contador de errores; si la fuente está en error, el contador se conserva para que los reprogramados cortos no reintenten en bucle); la traída no ocurre dentro de la petición. Devuelve 409 knowledge_source_refresh_cooldown si la última traída exitosa fue hace menos de KNOWLEDGE_REFRESH_COOLDOWN_MINUTES (15 por defecto). Sin cambios en el contenido (mismo content_hash) no se vuelven a generar embeddings. Auditado. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsource_idpathSístring (uuid) Respuestas EstadoDescripción202Refresco agendado (KnowledgeSource)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3628,"title":3629,"titles":3630,"content":3631,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fknowledge#post-knowledgesourcespreview","POST \u002Fknowledge\u002Fsources\u002Fpreview",[3534],"Vista previa de un listado, sin guardar (F2-48) Solo sesión owner\u002Fmanager con CSRF. Trae el listado con la misma traída segura que el worker y devuelve las primeras filas ya mapeadas (máx. 10), el total leído y las columnas\u002Fclaves detectadas, para validar el mapeo ANTES de crear la fuente. No guarda nada (ni la fuente ni la credencial) y no devuelve la credencial. Límite: 10 vistas previas por minuto y workspace (429 knowledge_preview_rate_limited). 422 knowledge_listing_failed con reason (código corto: blocked_address, invalid_url, too_large, unsupported_content_type, http_error, timeout, invalid_listing, empty_content, mapping_column_missing, invalid_mapping...) o knowledge_invalid_mapping. Autenticación: Clave de API o sesión del panelScopes: Ninguno Cuerpo de la solicitud (obligatorio) application\u002Fjson: KnowledgeSourcePreview Respuestas EstadoDescripción200Primeras filas mapeadas (KnowledgeSourcePreviewResult)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3633,"title":3634,"titles":3635,"content":3636,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy","API · tenancy",[],"Operaciones de tenancy del contrato OpenAPI que aceptan una clave de API.",{"id":3638,"title":3639,"titles":3640,"content":3641,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#patch-workspace","PATCH \u002Fworkspace",[3634],"Editar negocio (owner o manager; requiere X-Csrf-Token) Bearer settings:write admite solo payments_enabled, completion_payment_required, chat_payment, pay_info y brand_accent, sin otros campos; cookie requiere CSRF. Solo owner cambia payments_enabled\u002Fcompletion_payment_required; chat_payment y pay_info requieren workspace:configure y payments:accounts_configure (owner\u002Fmanager). PATCH atómico de identidad, apariencia, contacto, dirección y perfil fiscal. Solo owner modifica fiscal_data\u002Ffiscal_address; manager lee y edita los demás campos. Cambiar currency se rechaza con 409 future_bookings_conflict si existen cobros o valores financieros congelados. Cambiar currency se rechaza con 409 future_bookings_conflict si existen cobros o valores financieros congelados. Cambiar currency se rechaza con 409 future_bookings_conflict si existen cobros o valores financieros congelados. source_plan_id adopta un plan propio de Wagy en la misma transacción (se revalidan estado, expiración, huella y permisos). Timezone\u002Fmoneda con reservas futuras activas devuelve 409 sin cambios parciales. Datos fiscales solo owner\u002Fmanager; staff recibe null. Respuestas no-store; logo thumbnail PNG\u002FJPEG inline menor de 5 MB, sin URL externa. Autenticación: Clave de API o sesión del panelScopes: settings:write Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: WorkspaceSettingsPatch Respuestas EstadoDescripción200Actualizado (WorkspaceSettings)defaultError (RFC 9457) (Problem)",{"id":3643,"title":3644,"titles":3645,"content":3646,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#get-workspaceaudit","GET \u002Fworkspace\u002Faudit",[3634],"Revisar mi configuración (puntaje de puesta a punto) FIU-524. Reglas fijas sobre el proyecto real, sin IA y sin costo: devuelve un puntaje 0-100, solo lo que falta ordenado por impacto y, por cada ítem, la operación de API que lo arregla con sus parámetros sugeridos (fix.operation, fix.params) y, si hace falta un dato del dueño, la pregunta de una línea (fix.ask). Si no falta nada, all_good es true e items va vacío. Owner y manager; API key con config:read. El idioma sale de lang o del proyecto. Sin caché. Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripciónlangqueryNostring pt, es, en Respuestas EstadoDescripción200Puntaje y lo que falta; Cache-Control no-store (SetupAudit)defaultError (RFC 9457) (Problem)",{"id":3648,"title":3649,"titles":3650,"content":3651,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#get-workspacetrait-catalog","GET \u002Fworkspace\u002Ftrait-catalog",[3634],"Catálogo aprobado completo con versión, cambios y preguntas pt\u002Fes\u002Fen Base versionada más revisiones inmutables aprobadas. API key config:read. No incluye propuestas. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Catálogo exportable como catalog.json (TraitCatalog)defaultError (RFC 9457) (Problem)",{"id":3653,"title":3654,"titles":3655,"content":3656,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#get-workspacetrait-proposals","GET \u002Fworkspace\u002Ftrait-proposals",[3634],"Propuestas y etiquetas propias del proyecto Todos los roles; API key config:read. Hasta 200 por página, orden por UUID; cursor UUID de la última fila. Autenticación: Clave de API o sesión del panelScopes: config:read Parámetros NombreEnObligatorioTipoDescripcióncursorqueryNostring (uuid) Respuestas EstadoDescripción200Propuestas propias (TraitProposalPage)defaultError (RFC 9457) (Problem)",{"id":3658,"title":3659,"titles":3660,"content":3661,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#post-workspacetrait-proposals","POST \u002Fworkspace\u002Ftrait-proposals",[3634],"Proponer un rasgo sin aplicarlo (confirm=true) Permiso workspace:configure; API key settings:write. CSRF para cookie. Máximo 10 pendientes y 3 nuevas por día UTC por negocio; 429 al superar. Deduplicación local por clave o similitud >=0.88 en nombres normalizados pt\u002Fes\u002Fen; devuelve la propuesta existente sin consumir cupo. Una coincidencia en catálogo devuelve 409 trait_already_catalogued. No cambia rasgos, glosario, flujos ni bot. Autenticación: Clave de API o sesión del panelScopes: settings:write Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: TraitProposalInput Respuestas EstadoDescripción200Propuesta pendiente o duplicado existente (TraitProposal)429Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3663,"title":3664,"titles":3665,"content":3666,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#get-workspacetraits","GET \u002Fworkspace\u002Ftraits",[3634],"Rasgos del negocio, etiqueta libre y ejemplos aplicados (todos los roles) F3-407 (ADR 0036). traits son claves del catálogo versionado (catalog_version) en su orden; vacía = todavía no se preguntaron (los proyectos que ya existían arrancan así). business_label es una etiqueta libre de rubro, solo informativa. examples lista los ejemplos compuestos y sus partes. API key config:read. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200OK (TraitsState)defaultError (RFC 9457) (Problem)",{"id":3668,"title":3669,"titles":3670,"content":3671,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#put-workspacetraits","PUT \u002Fworkspace\u002Ftraits",[3634],"Guardar rasgos y etiqueta libre (owner o manager; requiere X-Csrf-Token) Reemplaza la lista completa (sin repetir, se guarda en el orden del catálogo) y la etiqueta (hasta 80 caracteres; vacía la borra). Un rasgo fuera del catálogo es 422 unknown_trait con valid_traits; proponer rasgos nuevos es otra operación (F3-565). Inicializa el glosario por rasgos y ejemplo parecido sin otra pregunta; mientras conserve el valor generado, acompaña cambios posteriores. Conserva ediciones propias. No cambia reglas del bot ni de la agenda. Audita workspace.traits_updated. Permiso workspace:configure; API key settings:write. Autenticación: Clave de API o sesión del panelScopes: settings:write Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderNostring Cuerpo de la solicitud (obligatorio) application\u002Fjson: TraitsInput Respuestas EstadoDescripción200Guardado (TraitsState)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3673,"title":3674,"titles":3675,"content":3676,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#get-workspacevocabulary","GET \u002Fworkspace\u002Fvocabulary",[3634],"Vocabulario del proyecto (owner o manager) Cómo se nombran Servicio, Tarea, Recurso y Cliente (singular, plural y género por idioma) y, opcionalmente, cada tipo de recurso (kinds, p. ej. «cancha» para las salas de un club). Es presentación; no cambia rutas, tablas ni permisos. Sin vocabulario guardado (is_default) todos los textos son los genéricos de siempre. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200OK (Vocabulary)defaultError (RFC 9457) (Problem)",{"id":3678,"title":3679,"titles":3680,"content":3681,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ftenancy#patch-workspacevocabulary","PATCH \u002Fworkspace\u002Fvocabulary",[3634],"Editar el vocabulario (owner o manager; requiere X-Csrf-Token) Elegir preset sin terms\u002Fkinds descarta esas ediciones; terms y kinds (término por tipo de recurso, FIU-470) reemplazan cada uno sus ediciones anteriores. Términos de 1 a 40 caracteres, sin HTML ni llaves. Escribe auditoría workspace.vocabulary_updated. Autenticación: Clave de API o sesión del panelScopes: settings:write Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: VocabularyPatch Respuestas EstadoDescripción200Actualizado (Vocabulary)defaultError (RFC 9457) (Problem)",{"id":3683,"title":3684,"titles":3685,"content":3686,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fsite","API · site",[],"Operaciones de site del contrato OpenAPI que aceptan una clave de API. «Mi web» (F3-622), la web propia del negocio en su subdominio, apagada hasta que se publica.",{"id":3688,"title":3689,"titles":3690,"content":3691,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsite#get-site","GET \u002Fsite",[3684],"Leer «Mi web» (site:read; API key config:read) La web propia del negocio (F3-622, plan web-del-negocio): plantilla, secciones opcionales marcadas, textos del dueño, subdominio y si está publicada. Sin guardar todavía (exists false) devuelve la propuesta: subdominio sugerido desde el nombre del negocio y libre, plantilla booking, apagada y version 0. Lo que la web muestra del catálogo no se elige acá: es lo que ofrece el bot (ADR 0047, GET \u002Fbot\u002Foffer). Autenticación: Clave de API o sesión del panelScopes: site:read, config:read Respuestas EstadoDescripción200«Mi web» (SiteOut)defaultError (RFC 9457) (Problem)",{"id":3693,"title":3694,"titles":3695,"content":3696,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsite#patch-site","PATCH \u002Fsite",[3684],"Cambiar «Mi web» (site:edit; API key config:write) Cambia solo los campos enviados; crea la web (apagada) si todavía no existía. subdomain: de 3 a 40 caracteres a-z, 0-9 y guiones interiores simples, sin nombres reservados (422 site_subdomain_invalid con reason: too_short, too_long, invalid_chars, edge_hyphen, double_hyphen o reserved); si lo usa otro proyecto, 409 site_subdomain_taken. Cambiar el subdominio de una web publicada deja de servir el anterior al instante (sin redirección, ADR 0050 §7). Textos vacíos quedan sin texto (la web usa los datos del negocio). made_with_fiuit: false quita «Hecho con Fiuit» solo si el plan del proyecto lo permite (si no, 409 site_branding_plan_required). Con version distinta de la vigente: 409 site_version_conflict. Audita site.created o site.updated. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (obligatorio) application\u002Fjson: SitePatch Respuestas EstadoDescripción200«Mi web» después del cambio (SiteOut)defaultError (RFC 9457) (Problem)",{"id":3698,"title":3699,"titles":3700,"content":3701,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsite#post-sitepublish","POST \u002Fsite\u002Fpublish",[3684],"Publicar la web (site:publish; API key config:write) Enciende la web en su subdominio. Idempotente: si ya estaba publicada devuelve lo mismo. Crea la web con la propuesta si todavía no existía. Audita site.published. Con version distinta de la vigente: 409 site_version_conflict. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (opcional) application\u002Fjson: SitePublishIn Respuestas EstadoDescripción200«Mi web» publicada (SiteOut)defaultError (RFC 9457) (Problem)",{"id":3703,"title":3704,"titles":3705,"content":3706,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fsite#post-siteunpublish","POST \u002Fsite\u002Funpublish",[3684],"Despublicar la web (site:publish; API key config:write) Apaga la web: su subdominio responde 404 enseguida, igual que uno inexistente. Idempotente. Audita site.unpublished. Autenticación: Clave de API o sesión del panelScopes: config:write Cuerpo de la solicitud (opcional) application\u002Fjson: SitePublishIn Respuestas EstadoDescripción200«Mi web» apagada (SiteOut)defaultError (RFC 9457) (Problem)",{"id":3708,"title":3709,"titles":3710,"content":3711,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications","API · notifications",[],"Operaciones de notifications del contrato OpenAPI que aceptan una clave de API. Notificaciones por usuario (F3-88). Campana del panel, reglas del proyecto y SSE propio.",{"id":3713,"title":3714,"titles":3715,"content":3716,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#get-notification-rules","GET \u002Fnotification-rules",[3709],"Reglas de notificación del proyecto (F3-88) Solo owner. Quién recibe las alertas de canal caído y de spam, y qué tipos de aviso están apagados para todo el proyecto. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (NotificationRules)403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3718,"title":3719,"titles":3720,"content":3721,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#put-notification-rules","PUT \u002Fnotification-rules",[3709],"Guardar las reglas de notificación del proyecto Solo owner; cookie y X-Csrf-Token. Escribe audit_log (notification_rules.updated). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: NotificationRules Respuestas EstadoDescripción200Guardadas (NotificationRules)403Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3723,"title":3724,"titles":3725,"content":3726,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#get-notifications","GET \u002Fnotifications",[3709],"Mis notificaciones del proyecto (campana del panel, F3-88) Sesión de panel de cualquier rol del equipo; las API keys reciben 403. Solo las del usuario de la sesión en el proyecto activo (RLS por proyecto y filtro por usuario), de la más nueva a la más vieja. Título y cuerpo ya vienen en el idioma de la persona (sin datos de clientes); link es la ruta del panel de la entidad. locale permite usar el idioma actual del panel; si se omite, usa el idioma de la cuenta. Retención: lo leído 14 días, todo a los 60. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónlocalequeryNostring pt, es, enIdioma actual del panel; por defecto el de la cuenta.limitqueryNointeger default 30unread_onlyqueryNoboolean default falsebeforequeryNostring (date-time)Cursor por fecha de creación. Respuestas EstadoDescripción200OK (NotificationList)403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3728,"title":3729,"titles":3730,"content":3731,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#delete-notifications","DELETE \u002Fnotifications",[3709],"Borrar todas mis notificaciones del proyecto (F3-326) Cookie y X-Csrf-Token. Vacía la campana de quien llama en el proyecto activo: usa el usuario y el proyecto de la sesión (nunca un parámetro), así que las de las demás personas y las de otros negocios quedan intactas. No toca la auditoría. Las filas de tipos apagados (in_panel = false), que solo existen para la idempotencia del aviso, se conservan. Idempotente. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderSístring Respuestas EstadoDescripción204Campana vacía403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3733,"title":3734,"titles":3735,"content":3736,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#post-notificationsidread","POST \u002Fnotifications\u002F{id}\u002Fread",[3709],"Marcar una notificación como leída Cookie y X-Csrf-Token. Idempotente. 404 si no existe o es de otra persona (misma respuesta). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístring (uuid)X-Csrf-TokenheaderSístring Respuestas EstadoDescripción200OK (devuelve el contador de no leídas) (NotificationUnreadCount)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3738,"title":3739,"titles":3740,"content":3741,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#post-notificationsread-all","POST \u002Fnotifications\u002Fread-all",[3709],"Marcar todas mis notificaciones como leídas Cookie y X-Csrf-Token. Idempotente. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderSístring Respuestas EstadoDescripción200OK (NotificationUnreadCount)403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3743,"title":3744,"titles":3745,"content":3746,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#get-notificationsstream","GET \u002Fnotifications\u002Fstream",[3709],"Aviso en vivo de notificaciones nuevas (SSE) text\u002Fevent-stream, propio de la persona y del proyecto. Evento notification.created con {event, id} (sin\ncontenido): el cliente vuelve a pedir el contador y la lista. Un comentario : cada 15 s mantiene la conexión. Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Stream abierto403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3748,"title":3749,"titles":3750,"content":3751,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fnotifications#get-notificationsunread-count","GET \u002Fnotifications\u002Funread-count",[3709],"Cantidad de notificaciones sin leer Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200OK (NotificationUnreadCount)403Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3753,"title":3754,"titles":3755,"content":3756,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid","API · prepaid",[],"Operaciones de prepaid del contrato OpenAPI que aceptan una clave de API. Paquetes y club con cupo (F3-261); el dinero vive en payments.",{"id":3758,"title":3759,"titles":3760,"content":3761,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#post-prepaidbookingsbooking_idrelease","POST \u002Fprepaid\u002Fbookings\u002F{booking_id}\u002Frelease",[3754],"Release Booking Permiso\u002Fscope prepaid:sell (owner\u002Fmanager). Quita el plan de una tarea cubierta: libera la unidad reservada y la tarea vuelve a su valor a cobrar normal; no se vuelve a cubrir sola. Una tarea cubierta no admite cambiar el cliente ni el servicio (PATCH \u002Fbookings\u002F{id} da 409 booking_covered_by_plan) hasta quitarle el plan. Repetirlo es idempotente. Una unidad ya consumida da 409 prepaid.booking_consumed; una tarea sin plan, 409 prepaid.booking_not_covered. Audita prepaid.booking_removed con el motivo. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónbooking_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ReleaseBooking Respuestas EstadoDescripción200Successful Response (SubscriptionView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3763,"title":3764,"titles":3765,"content":3766,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#get-prepaidcustomerscustomer_id","GET \u002Fprepaid\u002Fcustomers\u002F{customer_id}",[3754],"Customer Plans Permiso\u002Fscope prepaid:read. Paquetes, club y membresía del cliente con su período vigente: unidades totales, usadas, reservadas (tareas confirmadas que lo van a usar) y disponibles (units_left). F3-463: period.booking_id es la cuota del período (la tarea que se cobra), open_fees las cuotas por cobrar y next_due_at el vencimiento de la próxima; status active = al día y past_due = impago, y debt_minor suma las cuotas ya vencidas por cobrar (una que nació antes de vencer todavía no es deuda; con tarjeta: rechazadas por MP o sin cobrar a los 3 días). Staff solo de clientes con tareas en sus recursos; ajeno o inexistente da el mismo 403. Autenticación: Clave de API o sesión del panelScopes: prepaid:read Parámetros NombreEnObligatorioTipoDescripcióncustomer_idpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (CustomerPlans)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3768,"title":3769,"titles":3770,"content":3771,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#get-prepaidplans","GET \u002Fprepaid\u002Fplans",[3754],"List Plans Tenant desde credencial. Permiso\u002Fscope prepaid:read (F3-261). Paquetes (N unidades de ciertos servicios con vencimiento en días), planes de club (N unidades por mes calendario local) y membresías (F3-536, precio fijo por mes, sin unidades; units y unit_minor null) del catálogo. active=true lista solo los vendibles. unit_minor = precio \u002F unidades (redondeado hacia abajo), en unidad menor de la moneda. card_billing_available (F3-553) dice si el proyecto puede cobrar con tarjeta (MP Suscripciones), true solo con el cobro automático habilitado y una cuenta de Mercado Pago conectada; recién ahí se crean planes billing=card (club o membresía) y se venden con payer_email. Autenticación: Clave de API o sesión del panelScopes: prepaid:read Parámetros NombreEnObligatorioTipoDescripciónactivequeryNoboolean default false Respuestas EstadoDescripción200Successful Response (PlanList)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3773,"title":3774,"titles":3775,"content":3776,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#post-prepaidplans","POST \u002Fprepaid\u002Fplans",[3754],"Create Plan Permiso\u002Fscope prepaid:manage (owner\u002Fmanager). Crea un paquete (validity_days obligatorio), un club o una membresía (kind=membership, F3-536: precio fijo por mes sin unidades ni cupo; servicios opcionales, que quedan cubiertos en $0 sin descontar). El cobro con tarjeta (billing=card, MP Suscripciones; solo club y membresía) exige card_billing_available de GET \u002Fprepaid\u002Fplans (F3-553): sin el cobro automático habilitado da 409 prepaid.card_billing_disabled y sin cuenta de Mercado Pago conectada, 409 prepaid.card_account_required. quota: hasta 10 reglas de cupo por día local, opcionalmente en una franja start-end y en ciertos weekdays (0 = lunes); la reserva que no entra en el cupo queda sin cubrir y se cobra normal. Audita prepaid.plan_created. Autenticación: Clave de API o sesión del panelScopes: prepaid:manage Cuerpo de la solicitud (obligatorio) application\u002Fjson: PlanInput Respuestas EstadoDescripción201Successful Response (PlanView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3778,"title":3779,"titles":3780,"content":3781,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#patch-prepaidplansplan_id","PATCH \u002Fprepaid\u002Fplans\u002F{plan_id}",[3754],"Update Plan Permiso\u002Fscope prepaid:manage. Cambia nombre, servicios, cupo, precio, unidades, vencimiento, flujo del alta o primera cuota completa, o lo apaga (active=false). El precio rige para las cuotas que nacen desde ahora en todas las suscripciones vivas: las cuotas ya creadas conservan el suyo y al cliente no se le avisa (lo ve en su próxima cuota, F3-463); la respuesta trae live_subscriptions, cuántas lo verán. Unidades y vencimiento solo afectan ventas nuevas. Una membresía no acepta unidades, vigencia ni cupo (409 prepaid.membership_terms) y un paquete solo due_rule=signup (409 prepaid.package_terms). Audita prepaid.plan_updated (con el precio antes y después). Autenticación: Clave de API o sesión del panelScopes: prepaid:manage Parámetros NombreEnObligatorioTipoDescripciónplan_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: PlanUpdate Respuestas EstadoDescripción200Successful Response (PlanView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3783,"title":3784,"titles":3785,"content":3786,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#get-prepaidplansplan_idperformance","GET \u002Fprepaid\u002Fplans\u002F{plan_id}\u002Fperformance",[3754],"Rendimiento de un plan en cantidades: vendidos por día, semana o mes y activos hoy F3-328. Rendimiento de un plan (paquete o club) en CANTIDADES (nunca dinero: vive en Financiero). Panel: permisos performance:read y prepaid:stats (owner\u002Fmanager); API key: scope prepaid:read. sold (por defecto): ventas nuevas por día de alta, sin pendientes de pago ni clientes de prueba, con el período anterior. active: clientes distintos con el plan activo hoy (previous null). Período anterior y tramos como en GET \u002Fservices\u002F{id}\u002Fperformance. Máximo 366 días. Autenticación: Clave de API o sesión del panelScopes: performance:read, prepaid:read Parámetros NombreEnObligatorioTipoDescripciónplan_idpathSístring (uuid)fromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido)granularityqueryNostring day, week, month default dayTramo de la serie: day, week (lunes) o month Respuestas EstadoDescripción200Successful Response (ItemPerformanceOut)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":3788,"title":3789,"titles":3790,"content":3791,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#get-prepaidplansstats","GET \u002Fprepaid\u002Fplans\u002Fstats",[3754],"Rendimiento por plan: vendidos, activos, consumo y vencimientos F3-315. Rendimiento de cada plan del catálogo (también los sin ventas), en una sola consulta agrupada. Panel: permiso prepaid:stats (owner\u002Fmanager); API key: scope prepaid:read. Sin clientes de prueba. sold: ventas nuevas del período (sin pendientes de pago con tarjeta). active_subscriptions: con el plan activo hoy. units_used\u002Funits_total\u002Fusage_ratio: consumo de los períodos vigentes hoy de clientes con el plan. expiring_30d: paquetes vigentes que vencen en 30 días (null en club). sold_minor (ventas y renovaciones pagas del período, incluye reembolsadas como el resumen de Financiero) y currency solo con finance:analyze; si no, null. Máximo 366 días. Autenticación: Clave de API o sesión del panelScopes: prepaid:read Parámetros NombreEnObligatorioTipoDescripciónfromquerySístring (date)Primer día local del negocio (incluido)toquerySístring (date)Último día local del negocio (incluido) Respuestas EstadoDescripción200Successful Response (PlanStatsList)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)",{"id":3793,"title":3794,"titles":3795,"content":3796,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#get-prepaidsubscriptions","GET \u002Fprepaid\u002Fsubscriptions",[3754],"Listar suscripciones del proyecto Permiso\u002Fscope prepaid:benefits (owner\u002Fmanager). Lista paginada de suscripciones con estado impago y pausa de beneficios; las membresías traen standing (al día, en gracia o bloqueada, F3-537). Con unpaid=true, solo las impagas (la alerta de Hoy y el filtro «Impagos» de Planes). Cada una trae months_due (meses adeudados) y la respuesta unpaid_count, el conteo del servidor de impagas del proyecto (F3-405). Tenant desde la credencial. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónlimitqueryNointeger default 100offsetqueryNointeger default 0unpaidqueryNoboolean default falseF3-537: solo las impagas (alerta de Hoy), con customer_name; primero las membresías bloqueadas, después las de gracia más corta y el club impago al final. Sin clientes de prueba. Respuestas EstadoDescripción200Successful Response (SubscriptionList)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3798,"title":3799,"titles":3800,"content":3801,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#post-prepaidsubscriptions","POST \u002Fprepaid\u002Fsubscriptions",[3754],"Sell Plan Permiso\u002Fscope prepaid:sell (owner\u002Fmanager) y además payments:record: vende un plan. Crea la suscripción, su período 1 y la cuota 1 (F3-463): una tarea sin servicio (subject.type = subscription), en cola y sin horario, que es también el alta (recorre el flujo del plan, flow_id, si tiene) y vence al venderse; su valor es el precio vigente del plan, o la parte proporcional hasta el próximo vencimiento según due_rule (salvo first_fee_full). Con payment registra un recibo purpose=plan sobre esa cuota (cualquier forma de pago manual, misma caja e idempotencia que POST \u002Fpayments\u002Fmanual) y nace pagada; sin payment queda Por cobrar (link de pago desde la tarea o recibo a mano) y es deuda desde ya. Cubre enseguida las tareas confirmadas del cliente dentro de la ventana. Si se vende dentro de los notice_days previos al próximo vencimiento, la cuota 2 nace en el acto. En un flujo de cuota la tarea solo pasa a Pagada con saldo cero: completarla con deuda o pago parcial da 409 prepaid_consumption_failed (reason: membership_unpaid), y anular su recibo o devolver el cobro la vuelve a Por cobrar. El cobro automático aparece en el historial de la tarea; devolverlo desde Fiuit da payment.refund_plan_unsupported (se devuelve en Mercado Pago). Con tarjeta (F3-553; plan billing=card, payer_email = email del cliente; basta prepaid:sell, no registra un recibo) la suscripción nace pending con checkout_url, el link de Mercado Pago donde el cliente autoriza la tarjeta (Fiuit no ve sus datos); al autorizar y cobrarse el primer mes pasa a active. Exige card_billing_available: si no, 409 prepaid.card_billing_disabled o prepaid.card_account_required. Una sola venta con tarjeta vigente por cliente y plan (F3-631): si el cliente ya tiene ese plan con tarjeta esperando autorización (pending), activo o con un cobro rechazado (past_due), responde 409 con code: prepaid_card_sale_exists, detail: prepaid.card_sale_exists y subscription_id (la venta vigente), sin tocar Mercado Pago; cancelada o vencida no bloquea. Idempotency-Key obligatoria (reintentar con la misma clave devuelve la misma venta): la misma clave con otros datos es 409. Las escrituras de dinero desde MCP exigen confirm=true. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónIdempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: SellPlan Respuestas EstadoDescripción201Successful Response (SubscriptionView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3803,"title":3804,"titles":3805,"content":3806,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#put-prepaidsubscriptionssubscription_idbenefits","PUT \u002Fprepaid\u002Fsubscriptions\u002F{subscription_id}\u002Fbenefits",[3754],"Pausar o reactivar beneficios Permiso\u002Fscope prepaid:benefits (owner\u002Fmanager). paused=true exige club past_due; paused=false reactiva un club activo o impago. No cambia deuda ni cobra. Idempotente por estado y auditado. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsubscription_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: BenefitsUpdate Respuestas EstadoDescripción200Successful Response (SubscriptionView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3808,"title":3809,"titles":3810,"content":3811,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#post-prepaidsubscriptionssubscription_idcancel","POST \u002Fprepaid\u002Fsubscriptions\u002F{subscription_id}\u002Fcancel",[3754],"Cancel Plan Permiso\u002Fscope prepaid:sell; con refund=true también payments:void y payments:record. Cancela con la regla única de ADR 0040 §5.5 (F3-463): no nacen más cuotas y las ya creadas no se tocan (una por cobrar sigue siendo deuda real; se perdona cerrándola sin completar); la respuesta las lista en open_fees. Libera las unidades reservadas por tareas futuras (vuelven a su valor normal). Con refund=true en un paquete o club cobrado en mano, anula los recibos de la cuota del período vigente (abierto y sin vencer) y deja su valor a cobrar en lo ya consumido, cobrado con un recibo nuevo del mismo medio; lo vencido se pierde y no se devuelve. Un recibo que también paga otras tareas da 409 prepaid.refund_shared_receipt y dinero electrónico 409 prepaid.refund_electronic_unsupported (se devuelve desde la tarea); efectivo de un día con caja cerrada, 409 prepaid.refund_cash_closed. Repetir con el mismo motivo es idempotente. Con tarjeta cancela también la suscripción en MP. Membresía con refund=true: 409 prepaid.membership_refund_on_task (lo cobrado se devuelve desde la tarea). Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsubscription_idpathSístring (uuid)Idempotency-KeyheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: CancelPlan Respuestas EstadoDescripción200Successful Response (SubscriptionView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3813,"title":3814,"titles":3815,"content":3816,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#post-prepaidsubscriptionssubscription_idextend","POST \u002Fprepaid\u002Fsubscriptions\u002F{subscription_id}\u002Fextend",[3754],"Extend Plan Permiso\u002Fscope prepaid:sell (owner\u002Fmanager). Extiende a mano el vencimiento del período vigente de un paquete o club (o del último período de un paquete ya vencido, que vuelve a quedar activo y cubre las tareas confirmadas dentro de la ventana). Al vencer, las unidades no usadas se pierden: no hay crédito ni reembolso del remanente; esta es la única forma de darle más tiempo. ends_at debe ser posterior al vencimiento actual y al momento presente (409 prepaid.extend_not_later); repetir el mismo ends_at no cambia nada. Se extiende el período ya empezado (una cuota siguiente que nació antes de vencer no). Una membresía o un plan cancelado da 409 prepaid.not_extendable. Audita prepaid.period_extended con antes, después y motivo. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónsubscription_idpathSístring (uuid) Cuerpo de la solicitud (obligatorio) application\u002Fjson: ExtendPlan Respuestas EstadoDescripción200Successful Response (SubscriptionView)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3818,"title":3819,"titles":3820,"content":3821,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fprepaid#get-prepaidsummary","GET \u002Fprepaid\u002Fsummary",[3754],"Summary Permiso\u002Fscope finance:analyze (owner\u002Fmanager). Ingreso de paquetes y club, sin clientes de prueba: sold_minor (cobrado), consumed_minor (unidades usadas, ingreso reconocido), deferred_minor (unidades por usar de períodos vigentes), expired_minor (no usadas de períodos cerrados o cancelados), refunded_minor y debt_minor (meses de club sin cobrar). Autenticación: Clave de API o sesión del panelScopes: Ninguno Respuestas EstadoDescripción200Successful Response (PrepaidSummary)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)409Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)",{"id":3823,"title":3824,"titles":3825,"content":3826,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fattachments","API · attachments",[],"Operaciones de attachments del contrato OpenAPI que aceptan una clave de API.",{"id":3828,"title":3829,"titles":3830,"content":3831,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fattachments#get-bookingsidattachments","GET \u002Fbookings\u002F{id}\u002Fattachments",[3824],"— Adjuntos vigentes del tenant activo y sus recursos autorizados; URLs relativas firmadas ≤300s también exigen la credencial vigente. Nunca storage_key, nombre del cliente ni URL externa. Viewer solo lee. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200Adjuntos más recientes primero (object)defaultError (RFC 9457) (Problem)",{"id":3833,"title":3834,"titles":3835,"content":3836,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fattachments#get-bookingsidattachmentsattachment_id","GET \u002Fbookings\u002F{id}\u002Fattachments\u002F{attachment_id}",[3824],"Leer metadatos privados de una evidencia Scope bookings:read para API keys; tenant y recurso autorizados, misma reserva, evidencia vigente no borrada. Devuelve una nueva URL firmada ligada al actor que también exige credencial vigente; la firma sola nunca autoriza. Sin storage_key ni contenido. Autenticación: Clave de API o sesión del panelScopes: bookings:read Parámetros NombreEnObligatorioTipoDescripciónidpathSístringattachment_idpathSístring (uuid) Respuestas EstadoDescripción200Metadatos para mostrar una referencia UUID del formulario (Attachment)404Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":3838,"title":3839,"titles":3840,"content":3841,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fattachments#get-bookingsidattachmentsattachment_iddownload","GET \u002Fbookings\u002F{id}\u002Fattachments\u002F{attachment_id}\u002Fdownload",[3824],"— Firma ligada al tenant, actor, adjunto y plazo; se revalida credencial\u002Frol\u002Frecurso y retención. Attachment disposition, nosniff, no-store; no redirects ni URLs de terceros. La firma sola no autoriza. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringattachment_idpathSístring (uuid)expiresquerySíintegersignaturequerySístring Respuestas EstadoDescripción200Blob verificado (string)defaultError (RFC 9457) (Problem)",{"id":3843,"title":3844,"titles":3845,"content":3846,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fattachments#get-bookingsidlocation-events","GET \u002Fbookings\u002F{id}\u002Flocation-events",[3824],"— Capturas puntuales vigentes; mismas restricciones de tenant y recurso de la reserva. No rastreo continuo. También figuran en timeline; nunca se incluyen coordenadas en audit ni stage-history. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónidpathSístringlimitqueryNointeger default 25cursorqueryNostring Respuestas EstadoDescripción200Capturas más recientes primero (object)defaultError (RFC 9457) (Problem)",{"id":3848,"title":3849,"titles":3850,"content":3851,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot","API · bot",[],"Operaciones de bot del contrato OpenAPI que aceptan una clave de API.",{"id":3853,"title":3854,"titles":3855,"content":3856,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#get-bot","GET \u002Fbot",[3849],"Personalidad vigente (owner\u002Fmanager) Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Configuración; sin fila devuelve defaults y versión 0 (BotConfig)defaultError (RFC 9457) (Problem)",{"id":3858,"title":3859,"titles":3860,"content":3861,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#put-bot","PUT \u002Fbot",[3849],"Guardar personalidad versionada (owner\u002Fmanager, CSRF) version opcional permite control optimista (409 bot_version_conflict). Texto del dueño es una preferencia no confiable; nunca cambia reglas, tools ni datos críticos. Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónX-Csrf-TokenheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: BotConfig Respuestas EstadoDescripción200Guardado (BotConfig)defaultError (RFC 9457) (Problem)",{"id":3863,"title":3864,"titles":3865,"content":3866,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#get-botchannel-policies","GET \u002Fbot\u002Fchannel-policies",[3849],"Política del bot por canal (owner\u002Fmanager) Una entrada por canal (webchat, whatsapp); sin fila guardada devuelve los defaults del canal con is_default=true y versión 0. Autenticación: Clave de API o sesión del panelScopes: config:read Respuestas EstadoDescripción200Políticas vigentes (object)defaultError (RFC 9457) (Problem)",{"id":3868,"title":3869,"titles":3870,"content":3871,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#put-botchannel-policieschannel","PUT \u002Fbot\u002Fchannel-policies\u002F{channel}",[3849],"Guardar la política de un canal (owner\u002Fmanager, CSRF) version opcional para control optimista (409 channel_policy_version_conflict). contact_gate distinto de never exige required_contact y solo existe en canales con formulario (webchat; 422 en los demás). unknown_contact_policy = filtered no existe en webchat (422 policy_not_available_for_channel). contact_gate_turns solo aplica a after_turns y no puede superar max_bot_turns. Modo de atención (ADR 0056): attention_mode = by_schedule da 422 attention_mode_not_available hasta que existan las franjas. Los textos libres son preferencias no confiables. Auditado (bot.channel_policy_updated, sin copiar el texto). Autenticación: Clave de API o sesión del panelScopes: config:write Parámetros NombreEnObligatorioTipoDescripciónchannelpathSístring webchat, whatsapp, telegram, instagramX-Csrf-TokenheaderSístring Cuerpo de la solicitud (obligatorio) application\u002Fjson: ChannelPolicyIn Respuestas EstadoDescripción200Guardada (ChannelPolicy)defaultError (RFC 9457) (Problem)",{"id":3873,"title":3874,"titles":3875,"content":3876,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#get-botconversationsconversation_idpath","GET \u002Fbot\u002Fconversations\u002F{conversation_id}\u002Fpath",[3849],"Recorrido de una conversación por el árbol de atención (flows:read; API key config:read) Cada tramo de la conversación del bot de clientes (ADR 0040 §4.4, F3-724): por qué rama pasó (y la sub-salida, si el ítem siguió un flujo distinto del habitual) y dónde se cortó: task_created (con el id de la tarea), answered, handoff, abandoned (con el último paso que el bot pidió, p. ej. destination), expired o in_progress. Del tramo más viejo al más nuevo (los últimos 50). Los nombres salen del árbol de hoy. Sin texto del cliente ni datos personales. 404 si la conversación no es de este proyecto. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Parámetros NombreEnObligatorioTipoDescripciónconversation_idpathSístring (uuid) Respuestas EstadoDescripción200El recorrido de la conversación (BotConversationPath)defaultError (RFC 9457) (Problem)",{"id":3878,"title":3879,"titles":3880,"content":3881,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#get-botoffer","GET \u002Fbot\u002Foffer",[3849],"Qué ofrece el bot por chat hoy (bot:read; API key config:read) La misma regla que usa el bot (ADR 0047): tipo habilitado en «Qué vende el bot» (sells), ítem con bot_offered y activo; nunca el servicio de sistema de la membresía. Sin cliente ni conversación: no aplica la cobertura por zona del cliente. Sin flow_id\u002Fstage tampoco aplica la etapa del flujo (narrowed_by null). Con flow_id y stage (juntos; uno solo da 422 bot_offer_stage_incomplete) devuelve lo que el bot ofrecería a un cliente con su tarea en esa etapa: el bot_offers de la versión vigente del flujo, con la misma regla que la conversación (solo achica; narrowed_by null si la etapa hereda). Flujo que no es del proyecto o etapa que no está en su versión vigente: 404 (service_stages_not_found, detalle flow_not_found o stage_not_found). stages lista las etapas de los flujos activos cuyo bot_offers achica la lista (vacío: ninguna). Productos: hasta 500 por modalidad de pedido, en el orden del catálogo. Autenticación: Clave de API o sesión del panelScopes: bot:read, config:read Parámetros NombreEnObligatorioTipoDescripciónflow_idqueryNostring (uuid)Flujo de la etapa a previsualizar (con stage).stagequeryNostringClave de la etapa en la versión vigente del flujo (con flow_id). Respuestas EstadoDescripción200Lo que el bot ofrece, por tipo (BotOffer)defaultError (RFC 9457) (Problem)",{"id":3883,"title":3884,"titles":3885,"content":3886,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#get-bottree","GET \u002Fbot\u002Ftree",[3849],"Árbol de atención del bot (bot:read; API key config:read) La raíz «Atención del bot» y un nivel de ramas (ADR 0040 §4.4, F3-723), calculadas del catálogo, de «Qué vende el bot» (sells), de la base de conocimiento y de los flujos; no se guarda nada. Ramas estándar: services, products, subscriptions (aparecen solas si el negocio tiene algo para ofrecer), faq (si la base de conocimiento tiene algún ítem activo), mine y handoff (siempre); y una rama flow:\u003Cid> por cada flujo por intención activo. Las ramas de catálogo salen de la misma regla del bot (ADR 0047) sin el nivel de «Qué vende el bot», así que una rama pausada se sigue viendo (paused: true). La pausa de services, products y subscriptions es sells (bookings, orders, plans): se escribe con PUT \u002Fbot (permiso bot:configure), el mismo campo que «Qué vende el bot». Una rama propia se pausa con customer_can_start de su flujo. faq, mine y handoff no se pausan (pausable false). exit es la tarea que crea la rama y su flujo (faq, mine y handoff: null); sub_exits, los ítems con un flujo distinto del habitual; sources, de dónde salen los productos (una integración es fuente, no rama). El orden es el que guardó el dueño en la raíz (order, F3-467; PATCH \u002Fflows\u002F{flow_id} con flows:write) o, sin él, el de §4.4; una rama que aparece después entra en su lugar por defecto. El bot usa este mismo orden, sin las pausadas, para la bienvenida, el menú sin IA, la lista cerrada de la elección y customer.offer. Autenticación: Clave de API o sesión del panelScopes: bot:read, config:read, flows:write Respuestas EstadoDescripción200El árbol de atención (BotTree)defaultError (RFC 9457) (Problem)",{"id":3888,"title":3889,"titles":3890,"content":3891,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fbot#get-bottreefunnel","GET \u002Fbot\u002Ftree\u002Ffunnel",[3849],"Embudo de cada rama del árbol de atención (flows:read; API key config:read) Recorrido de las conversaciones por el árbol de atención (ADR 0040 §4.4, «Recorrido de cada conversación», F3-724), por rama, en los últimos days días locales del proyecto (hoy incluido): cuántos tramos entraron, crearon tarea (task_created), se respondieron sin tarea (answered), derivaron a una persona (handoff), se abandonaron (abandoned; también un tramo quieto más de 30 minutos), vencieron (expired, el TTL de la corrida) o siguen en curso, y en qué paso se cortaron los abandonados y vencidos (cuts). Sin pruebas (simulador y clientes de prueba), con el mismo criterio de días que el uso de flujos. Solo vienen las ramas con algún tramo; root cuenta los que no eligieron rama. Sin texto del cliente ni datos personales. Permiso flows:read (owner y manager) mientras no exista el de uso de flujos. Autenticación: Clave de API o sesión del panelScopes: flows:read, config:read Parámetros NombreEnObligatorioTipoDescripcióndaysqueryNointeger default 7 Respuestas EstadoDescripción200El embudo por rama (BotTreeFunnel)defaultError (RFC 9457) (Problem)",{"id":3893,"title":3894,"titles":3895,"content":3896,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Ffeedback","API · feedback",[],"Operaciones de feedback del contrato OpenAPI que aceptan una clave de API.",{"id":3898,"title":3899,"titles":3900,"content":3901,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ffeedback#get-feedbackkindidentifier","GET \u002Ffeedback\u002F{kind}\u002F{identifier}",[3894],"Consultar evaluación Tenant desde credencial. Owner configura\u002Frevoca; owner\u002Fmanager consultan todas las entidades; staff solo tareas\u002Frecursos propios. Scopes config:read para GET settings, settings:write para PUT\u002FDELETE y bookings:read para indicadores. API keys no leen comentarios privados. Una puntuación baja agrega la etiqueta revisar-evaluacion (requiere revisión en Hoy) y emite feedback_low para owner\u002Fmanager; canales por defecto panel\u002Fpush\u002FTelegram\u002Femail, con preferencias y silencio. Promedio desde 3 respuestas como mínimo, escala 0-100; tendencia compara 30 días con los 30 anteriores. Autenticación: Clave de APIScopes: config:read, settings:write, bookings:read Parámetros NombreEnObligatorioTipoDescripciónkindpathSístring booking, service, customer, resourceidentifierpathSístring (uuid) Respuestas EstadoDescripción200Successful Response (FeedbackSummary)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)413Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)",{"id":3903,"title":3904,"titles":3905,"content":3906,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ffeedback#delete-feedbackbookingidentifier","DELETE \u002Ffeedback\u002Fbooking\u002F{identifier}",[3894],"Revocar enlace de evaluación Tenant desde credencial. Owner configura\u002Frevoca; owner\u002Fmanager consultan todas las entidades; staff solo tareas\u002Frecursos propios. Scopes config:read para GET settings, settings:write para PUT\u002FDELETE y bookings:read para indicadores. API keys no leen comentarios privados. Una puntuación baja agrega la etiqueta revisar-evaluacion (requiere revisión en Hoy) y emite feedback_low para owner\u002Fmanager; canales por defecto panel\u002Fpush\u002FTelegram\u002Femail, con preferencias y silencio. Promedio desde 3 respuestas como mínimo, escala 0-100; tendencia compara 30 días con los 30 anteriores. Autenticación: Clave de APIScopes: config:read, settings:write, bookings:read Parámetros NombreEnObligatorioTipoDescripciónidentifierpathSístring (uuid) Respuestas EstadoDescripción204Operación realizada400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)413Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)",{"id":3908,"title":3909,"titles":3910,"content":3911,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ffeedback#get-feedbacksettings","GET \u002Ffeedback\u002Fsettings",[3894],"Consultar evaluación Tenant desde credencial. Owner configura\u002Frevoca; owner\u002Fmanager consultan todas las entidades; staff solo tareas\u002Frecursos propios. Scopes config:read para GET settings, settings:write para PUT\u002FDELETE y bookings:read para indicadores. API keys no leen comentarios privados. Una puntuación baja agrega la etiqueta revisar-evaluacion (requiere revisión en Hoy) y emite feedback_low para owner\u002Fmanager; canales por defecto panel\u002Fpush\u002FTelegram\u002Femail, con preferencias y silencio. Promedio desde 3 respuestas como mínimo, escala 0-100; tendencia compara 30 días con los 30 anteriores. Autenticación: Clave de APIScopes: config:read, settings:write, bookings:read Respuestas EstadoDescripción200Successful Response (FeedbackSettings)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)413Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)",{"id":3913,"title":3914,"titles":3915,"content":3916,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Ffeedback#put-feedbacksettings","PUT \u002Ffeedback\u002Fsettings",[3894],"Configurar evaluaciones (owner) Tenant desde credencial. Owner configura\u002Frevoca; owner\u002Fmanager consultan todas las entidades; staff solo tareas\u002Frecursos propios. Scopes config:read para GET settings, settings:write para PUT\u002FDELETE y bookings:read para indicadores. API keys no leen comentarios privados. Una puntuación baja agrega la etiqueta revisar-evaluacion (requiere revisión en Hoy) y emite feedback_low para owner\u002Fmanager; canales por defecto panel\u002Fpush\u002FTelegram\u002Femail, con preferencias y silencio. Promedio desde 3 respuestas como mínimo, escala 0-100; tendencia compara 30 días con los 30 anteriores. Autenticación: Clave de APIScopes: config:read, settings:write, bookings:read Cuerpo de la solicitud (obligatorio) application\u002Fjson: FeedbackSettings Respuestas EstadoDescripción200Successful Response (FeedbackSettings)400Error (RFC 9457) (Problem)401Error (RFC 9457) (Problem)403Error (RFC 9457) (Problem)404Error (RFC 9457) (Problem)413Error (RFC 9457) (Problem)422Error (RFC 9457) (Problem)429Error (RFC 9457) (Problem)503Error (RFC 9457) (Problem)",{"id":3918,"title":3919,"titles":3920,"content":3921,"level":257},"\u002Fdocs\u002Fapi\u002Freference\u002Fhelp","API · help",[],"Operaciones de help del contrato OpenAPI que aceptan una clave de API.",{"id":3923,"title":3924,"titles":3925,"content":3926,"level":263},"\u002Fdocs\u002Fapi\u002Freference\u002Fhelp#get-helpsearch","GET \u002Fhelp\u002Fsearch",[3919],"Buscar en la ayuda de Fiuit (guías, «¿Qué pasa si…?» y políticas de producto) FIU-397. La misma búsqueda que usa Wagy: guías de uso del sitio, preguntas frecuentes y el registro de políticas de producto, para que cualquier IA conectada entienda cómo funciona Fiuit. No lee datos del negocio. Sesión con cualquier rol o cualquier API key. Con API key solo salen las políticas vigentes (available=true). documented=false: la ayuda no lo cubre; no inventar pasos ni reglas. Autenticación: Clave de API o sesión del panelScopes: Ninguno Parámetros NombreEnObligatorioTipoDescripciónqquerySístringLa pregunta con sus palabras (incluir «cómo» si es cómo hacer algo).localequeryNostring pt, es, enIdioma de las guías y respuestas; sin él, el del proyecto.limitqueryNointeger default 4 Respuestas EstadoDescripción200Secciones de guía, preguntas frecuentes y políticas que responden la consulta (HelpSearchResult)422Error (RFC 9457) (Problem)defaultError (RFC 9457) (Problem)",{"id":214,"title":213,"titles":3928,"content":3929,"level":257},[],"Conectá Claude, ChatGPT o tu propio agente al servidor MCP de Fiuit para buscar horarios, reservar y operar el negocio con tu clave de API. Fiuit incluye un servidor MCP (Model Context Protocol) para que los agentes de IA usen el mismo motor que el bot de WhatsApp: mismas pre-reservas, misma validación y mismo registro de auditoría. El servidor es un cliente fino de la API: cada herramienta llama a la API con tu misma clave, así que el MCP nunca da más permisos que la clave. El servidor alojado es https:\u002F\u002Fmcp.fiuit.com\u002F (https:\u002F\u002Fmcp.fiuit.com\u002Fmcp es la misma dirección). Para conectar Claude o ChatGPT con un botón, sin copiar claves, seguí Conectar Fiuit a tu IA. Lo que sigue es para conectarlo con una clave de API o correrlo vos.",{"id":3931,"title":3932,"titles":3933,"content":3934,"level":263},"\u002Fdocs\u002Fmcp#material-del-partner","Material del partner",[213],"El conjunto partner incluye partner_courses, partner_kit y partner_news: cursos revisados, mensajes y plantillas con tu link de referido, y novedades listas para compartir. Las tres herramientas son de solo lectura, aceptan lang (pt, es o en) y solo aparecen con el scope partner:read. Funcionan con clave de API o conexión OAuth. Leen el partner de quien creó la clave o autorizó la conexión, mientras siga siendo miembro activo del proyecto. Si todavía no hay cursos revisados, la lista va vacía; el avance queda en el navegador y no se consulta por MCP.",{"id":3936,"title":3937,"titles":3938,"content":3939,"level":263},"\u002Fdocs\u002Fmcp#correr-el-servidor","Correr el servidor",[213],"Necesitás Python 3.12+ y uv. cd packages\u002Fmcp\nuv sync\nWAGEND_API_URL=https:\u002F\u002Fapi.fiuit.com MCP_PORT=8700 uv run python -m wagend_mcp\n# escucha en http:\u002F\u002F127.0.0.1:8700\u002F (Streamable HTTP) Variables: VariablePara quéWAGEND_API_URLURL de la API (por defecto https:\u002F\u002Fapi.fiuit.com)MCP_TOOLSETSConjuntos a exponer: booking, admin, tasks, payments, customers, inbox, finance, partner y setup (configuración que se usa poco: servicios, recursos, horarios, flujos, automatizaciones, web, tienda, zonas y cuentas de cobro). Por defecto, los nueve; sin setup la lista baja a unas 130 herramientasMCP_HOST, MCP_PORTDónde escucha (por defecto 127.0.0.1:8700)MCP_ALLOWED_HOSTSHosts permitidos (protección contra DNS rebinding)",{"id":3941,"title":3942,"titles":3943,"content":3944,"level":263},"\u002Fdocs\u002Fmcp#conectar-un-cliente","Conectar un cliente",[213],"La autenticación es una clave de API en el header Authorization. Sin una clave con formato válido, el servidor responde 401 antes de entrar al protocolo. Con Claude Code: claude mcp add --transport http wagend http:\u002F\u002F127.0.0.1:8700\u002F \\\n  --header \"Authorization: Bearer wg_live_xxx\" O con la configuración JSON de cualquier cliente que soporte HTTP: {\n  \"mcpServers\": {\n    \"wagend\": {\n      \"type\": \"http\",\n      \"url\": \"http:\u002F\u002F127.0.0.1:8700\u002F\",\n      \"headers\": { \"Authorization\": \"Bearer wg_live_xxx\" }\n    }\n  }\n} Para probarlo sin un agente: npx @modelcontextprotocol\u002Finspector (transporte Streamable HTTP, la misma URL y el header).",{"id":3946,"title":3947,"titles":3948,"content":3949,"level":263},"\u002Fdocs\u002Fmcp#mcp-público-para-los-asistentes-de-ia-de-tus-clientes","MCP público para los asistentes de IA de tus clientes",[213],"Además del MCP del negocio (con clave), Fiuit publica un MCP sin clave para los asistentes de IA de las personas (ChatGPT, Claude, Gemini y otros): https:\u002F\u002Fmcp.fiuit.com\u002Fclientes. Con él, un asistente puede encontrar tu negocio, ver lo que ofrece tu bot y pedir un turno para una persona real. claude mcp add --transport http fiuit-clientes https:\u002F\u002Fmcp.fiuit.com\u002Fclientes HerramientaQué hacefind_businessBusca por nombre o subdominio exacto, o por texto del directorio («pádel Uruguaiana»). Hasta 10 resultados por página y 3 páginas, en orden neutral: cercanía, horario libre ese día y abierto ahora.list_offerLo que ofrece el bot, con precios ya formateados.find_slotsHorarios libres de un servicio.quote_orderCotiza un pedido de productos: cada línea con su precio y el total, ya formateados. Solo cotiza (no aparta ni pide nada); para cambiar el carrito, se vuelve a cotizar. Solo en los negocios que la tienen habilitada.my_assetsLos bienes de la persona (su vehículo), solo en una charla verificada. Solo lee: para guardar o corregir uno, la persona se lo cuenta al negocio con talk_to_business. Solo tipos que el negocio ya activó. Solo en los negocios que lo tienen habilitado.request_bookingAparta el horario unos minutos y le manda a la persona un código por WhatsApp (por defecto), Telegram o email.confirm_bookingConfirma con el código que recibió la persona. Sin el código, el horario se libera solo.talk_to_businessConversa con el bot del negocio, como por WhatsApp. Devuelve conversation para seguir la charla y la respuesta con montos y fechas ya formateados.end_conversationCierra la charla antes de que venza, si la persona lo pide: lo que siga empieza sin sus datos.search_knowledgeContesta preguntas sobre tu negocio con lo que dice tu base de conocimiento.handoffPasa la charla a una persona de tu equipo cuando el cliente lo pide.request_taskPide un servicio sin horario (una evaluación, un presupuesto) a nombre de la persona, solo después de que confirmó un código en la charla.my_bookingsMuestra las reservas y pedidos abiertos de la persona, solo después de que confirmó un código en la charla.cancel_booking, reschedule_bookingPiden cancelar o cambiar de horario una reserva de la persona: le llega un código nuevo y recién con ese código se hace. El asistente nunca confirma solo: siempre hace falta el código que le llega a la persona. Solo aparecen los negocios con la web publicada y «Aceptar agentes de IA» encendido; el directorio muestra además solo los que tienen «Aparecer en el directorio de Fiuit». Los dos vienen encendidos y se cambian con update_site (accept_agents, in_directory), por la API (PATCH \u002Fv1\u002Fsite) o pidiéndoselo a Wagy. Los productos y planes se piden por la web del negocio. Las mismas rutas están en la API sin credencial: \u002Fv1\u002Fpublic\u002Fagents\u002F*. Conversar con el bot (talk_to_business). Responde el mismo bot que en WhatsApp, con tus reglas: lo que vende, las etapas, el pase a una persona, el tono y el saludo. La charla aparece en el Inbox marcada «Vía IA» y tu equipo la puede tomar; si la toma, el asistente lee la respuesta de la persona. Para apartar un horario el asistente tiene que mandar el nombre y el teléfono (o el email) de la persona: el «sí» al resumen no confirma, a la persona le llega un código y la reserva queda recién con confirm_booking. Hasta que la persona confirma un código en la charla, pedir sin horario, cancelar o reprogramar no se hace desde un asistente. Cada charla gasta uso de IA de tu plan, como cualquier canal. Rutas en la API: POST \u002Fv1\u002Fpublic\u002Fagents\u002Fbusinesses\u002F{business}\u002Fconversations y ...\u002Fconversations\u002F{conversation_id}\u002Fmessages (POST para mandar, GET para leer, con espera opcional). Sesión verificada. Cuando la persona confirma el código de una reserva pedida en la charla, la charla no se corta: sigue 24 horas en su ficha (verified_until). El bot la saluda por el nombre y conoce sus reservas, pedidos y planes (la deuda, solo el total). Reservar o pedir de nuevo sin cobro no pide otro código; cancelar, reprogramar y pagar piden uno nuevo cada vez, que llega al contacto que la persona confirmó y se usa en confirm_booking. La charla no renueva las 24 horas: solo otro código confirmado. Pasado ese plazo, o en una charla nueva, el asistente empieza sin datos de la persona; con end_conversation (DELETE ...\u002Fconversations\u002F{conversation_id}) la persona la cierra antes.",{"id":3951,"title":3952,"titles":3953,"content":3954,"level":263},"\u002Fdocs\u002Fmcp#herramientas","Herramientas",[213],"Las herramientas de tareas y cobros solo aparecen en la lista si la clave tiene el scope que necesitan (una clave sin permisos de cobros no las ve ni puede usarlas). En el resto, cada una funciona solo si la clave tiene el scope; si no, devuelve el error 403 de la API. Las escrituras quedan auditadas con actor mcp. Cada herramienta trae sus anotaciones MCP: readOnlyHint (solo lee), destructiveHint (cancela, borra, anula o devuelve plata), idempotentHint y openWorldHint (le escribe a un cliente, cobra con un proveedor o publica en internet). Así ChatGPT y Claude saben qué pueden usar sin pedir confirmación. Al conectarse, el servidor se presenta como Fiuit y le dice al modelo por dónde empezar (list_today, list_tasks, list_conversations). Reservas (booking): para asistentes que reservan en nombre de un cliente. HerramientaScopeHacelist_servicesconfig:readServicios con duración y preciofind_slotsslots:readHorarios disponibles de un servicio entre dos fechas o de un día de apertura (day, incluye su noche después de las 00:00)hold_slotbookings:writePre-reserva de 10 minutosconfirm_bookingbookings:writeConfirma una pre-reserva con los datos del clientecancel_bookingbookings:writeCancela una reserva. Exige confirm=true: sin él solo muestra la reserva y no cancelareschedule_bookingbookings:writeMueve una reserva existente a otro horarioget_bookingbookings:readDetalle de una reserva Administración (admin): para que el Dueño opere el negocio desde su asistente de IA. HerramientaScopeHacelist_resourcesconfig:readEquipo, salas, máquinas y equipos, con su ícono y color si los tienenlist_todaybookings:readReservas del díablock_timeconfig:write y bookings:readCierra días completos de un recurso (máx. 31). No cancela reservas existentes: las devuelve para que una persona decidalist_service_pausesconfig:readLista las pausas por fechas de un serviciopause_serviceconfig:writePausa un servicio de una fecha a otra (inclusive) sin bloquear a los recursos que lo atienden: sus otros servicios siguen ofreciéndoseresume_serviceconfig:writeReabre un servicio pausado en un rango de fechascreate_service, update_serviceconfig:writeCrea o cambia un servicio, con su formulario de reservaupdate_scheduleconfig:writeCambia el horario semanal o la zona horarialist_booking_series, get_booking_seriesbookings:readTurnos fijos (reservas que se repiten, «todos los martes a las 20:00») y sus fechas: con tarea, salteadas o con choquecreate_booking_seriesbookings:writeCrea un turno fijo: mismo servicio y cliente cada 1 a 4 semanas, en uno o varios días, hasta una fecha (máx. un año) o una cantidad de veces (máx. 52). Cada fecha es una tarea normal que se cobra ese día. Sin confirm=true devuelve la vista previa (fechas de las próximas 8 semanas y cuáles chocan); las que chocan se saltean con skip_dates o skip_conflictsupdate_booking_series, cancel_booking_seriesbookings:writeEdita o cancela toda la serie o, con from_date, «esta y las siguientes». Las fechas futuras sin iniciar ni cobrar se rehacen (o se cancelan sin aviso); lo pasado o cobrado no se toca. «Solo esta» es reschedule_booking o cancel_booking de esa tarea. Exigen confirm=trueget_coverageconfig:readCobertura del negocio: zonas activas y qué pasa con lo que cae fuera (out_of_coverage)set_coverageconfig:writeElige qué hacer fuera de cobertura (también con una entrega que no llega a esa zona): out_of_coverage = take (tomar y avisar) o reject (no tomar)get_statsbookings:readReservas, ocupación y ausencias por recurso; por defecto solo personas, con canchas o lugares pasá kind=allget_control_summarybookings:read (conversaciones con messages:read, montos con finance:analyze)«¿Cómo vamos?»: atención ahora, tareas en curso por etapa, números del período (vendido, cobrado, por cobrar) y saturación por día de la semana y hora. Filtros opcionales date_from\u002Fdate_to (por defecto hoy), service_id y resource_id. Solo lectura; lo que la key no puede ver llega null Las etapas se cuentan por servicio y por el estado real de la tarea. Cobrado usa la fecha del pago, incluso si el trabajo pertenece a otro día; los pagos en revisión son los pendientes actuales, también de tareas sin fecha. Cada respuesta conserva una única vista temporal del proyecto.list_flows, get_flow, list_flow_versions, get_flow_versionconfig:readFlujos (el recorrido de etapas que eligen los servicios), sus servicios, salidas y requisitos; historial de versionesvalidate_flowsettings:writeValida sin escribir; devuelve impact con las tareas a mover y shared_withsimulate_flowsettings:writeSimulacro de entrada de un flujo por intención: dónde cae cada frase de entry (la dada, sin guardarla) y si choca; usa la IA del proyecto en las frases que las palabras clave no decidencopy_flowsettings:writeCopia un flujo (también de sistema) en uno propio e independiente con otro nombre, tras la confirmación; no cambia a ningún serviciocustomize_flowsettings:writeEdita un flujo de sistema en la copia propia del negocio (la crea la primera vez y le pasa los servicios que usaban la base), tras la confirmaciónrestore_flowsettings:write«Volver al original» desde la copia propia: los servicios vuelven al flujo de sistema y las tareas abiertas terminan con la versión que teníandelete_flowsettings:writeBorra un flujo sin uso y sin tareas, tras la confirmacióncreate_flow, update_flowsettings:writeCrean un flujo o publican una versión tras la vista previa y confirmación; publicar mueve las tareas de todos los servicios del flujo. Cada etapa puede traer bot_offers (qué ofrece el bot mientras la tarea está ahí; un ítem inexistente da 422 bot_offer_unknown_item)revert_flowconfig:read + settings:writeCrea otra versión a partir de la elegida; conserva el historialget_flow_examples, get_base_states, get_flow_message_catalogconfig:readEjemplos de flujo para copiar, estados fijos del motor y las variables protegidas con el texto por defecto del mensaje al cliente de cada etapaget_flow_usagebookings:readCuánto se usa cada flujo: sin flow_id, las tareas que entraron en los últimos 7 días contra los 7 anteriores; con flow_id, entradas y completadas por día y las tareas abiertas por etapa con su espera promedio (bottleneck, la etapa que más traba). Solo lectura.get_business_traits, set_business_traitsconfig:read \u002F settings:writeRasgos del negocio (del catálogo cerrado: «agenda del lugar», «con espacios», «vende productos»…) y su etiqueta libre de rubro, solo informativa. Guardar reemplaza la lista y la etiqueta tras la confirmación; omitir business_label o enviar null borra la etiqueta. Para conservarla, leela con get_business_traits y enviala al guardar; no cambia las reglas de reserva ni la agendaget_item_performancebookings:read (servicio, producto); prepaid:read (plan)Rendimiento de un servicio, producto o paquete\u002Fclub en cantidades (completadas, unidades, vendidos, activos hoy) por día, semana o mes, con el período anterior. Con una clave son los totales del negocio (scope: business). Nunca trae importes: están en Financiero. Tareas (tasks): tareas con y sin horario, el \"por agendar\" y la cola. HerramientaScopeHacelist_tasksbookings:read (y payments:read_balance si pedís saldo)Lista tareas por estado, por agendar (scheduling_state=pending), sin asignar (unassigned=true), atrasadas (late=true), cola, origen (origin=conversation es el pedido por chat) y, opcionalmente, con su saldo y filtro por estado de pago de la página. Con flow_id deja las tareas de un flujo y con group_by (stage, status, resource, priority, type, tag, day, zone, customer o flow) suma los conteos por grupo; con group_by=stage y flow_id trae todas las etapas del flujo en orden, como las columnas del Tablero del panel; statuses y resource_ids filtran por «cualquiera de» esos estados o recursos antes de paginar; group_by=tag expone texto libre de las etiquetas y exige include_sensitive=true con customers:read; match aplica los criterios de una vista de Trabajo: estados múltiples, una fecha con su campo y un rango relativo (hoy, mes pasado, últimos N días…) resuelto en la zona del proyecto, y grupos «o» (any_of)create_taskbookings:writeCrea una tarea con horario, de cola o por agendar sin horario (schedule_later=true); con flow_id de un flujo por intención, una tarea sin servicio (reclamo, presupuesto), sin horario ni monto; con internal=true, una tarea del equipo sin cliente (de un servicio sin precio)schedule_taskbookings:writeDa horario a una tarea sin horario, o cambia el que tiene; la API valida disponibilidadassign_taskbookings:writeAsigna personas o recursos a una tarealist_task_linesbookings:readÍtems de la tarea, sus dos bloques (servicios y productos) y el margen (solo con permiso de costos)add_task_linebookings:writeSuma un servicio o producto del catálogo, o un ítem libre con precio y costo opcional; sube lo que se cobra, exige confirm=trueedit_task_linebookings:writeCorrige cantidad, costo y, en un ítem libre, nombre y precio; exige confirm=trueremove_task_linebookings:writeQuita un ítem y baja lo que se cobra (no por debajo de lo ya cobrado); exige confirm=trueaccept_work_item_offerbookings:writeAcepta una oferta («Ofrecer…») de la etapa actual de la tarea (vienen en offers del detalle de la tarea): un producto se suma a esa tarea con el precio del catálogo y sube lo que se cobra; un servicio crea otra tarea, independiente, para el mismo cliente. Exige confirm=true; nunca acepta un precio Las herramientas de ítems conservan identificadores, cantidades y montos en la respuesta mínima. Para ver nombres y unidades, usá include_sensitive=true con el scope de lectura indicado. Si cambian el total de un presupuesto aceptado, pueden mandar una revisión al cliente; por eso exigen confirmación. Cobros (payments): cobros manuales y saldos. Los saldos los calcula siempre la API; el MCP no suma ni resta. HerramientaScopeHacerecord_paymentpayments:recordRegistra un cobro manual (efectivo, tarjeta, transferencia, Pix, Mercado Pago u otro; la forma de pago es obligatoria y queda en la auditoría), opcionalmente repartido entre tareasvoid_paymentpayments:voidAnula un cobro, con motivo obligatorioexpense_categoriesexpenses:readLas 11 categorías de gasto del proyecto (nombres fijos, tipo y si está oculta). «Comisiones del equipo» es una línea calculada: no se carga a manoexpense_listexpenses:readGastos cargados por período, categoría o recurso; total_minor lo suma la API (solo aprobados: sin pendientes, rechazados, anulados ni de prueba; status filtra por estado). Con tag_id, solo los gastos con esa etiqueta: su total no se suma con el de otra etiqueta, porque un gasto puede tener varias. Sin recurso, el gasto es «General»expense_recordexpenses:recordCarga un gasto en la moneda del proyecto (fecha local, nunca futura). Exige confirm=true; si el monto es alto para el negocio (desde el doble del valor mensual de su plan), también confirm_high_amount=true, una segunda confirmación de la persona. Acepta tags (etiquetas por nombre; las nuevas se crean) y, si no mandás category_id, usa la categoría que recuerda la primera etiqueta que tenga una (si ninguna, 409 expense.category_required)expense_voidexpenses:voidAnula un gasto con motivo; un gasto nunca se borra. Exige confirm=trueexpense_tagsexpenses:readLas etiquetas de gastos del proyecto («moto», «local centro»), las más usadas primero, con la categoría que recuerda cada una y cuántos gastos la tienenexpense_tag_renameexpenses:recordRenombra una etiqueta; si otra ya se llama así, unilas con expense_tag_merge. Exige confirm=trueexpense_tag_mergeexpenses:recordUne dos etiquetas: los gastos de una pasan a la que queda y la otra se borra. No se deshace. Exige confirm=trueexpense_tag_deleteexpenses:recordBorra una etiqueta y la saca de sus gastos; los gastos no se tocan. Exige confirm=trueexpense_pendingexpenses:approveCuántos gastos cargados por el equipo esperan aprobación y cuánto suman (sin los de prueba)expense_historyexpenses:readHistorial de un gasto: quién, cuándo y qué cambió (antes y después). No hay cierre de mesexpense_getexpenses:readUn gasto: monto, categoría, fecha, estado (aprobado, pendiente, rechazado o anulado), comprobante y revisión. Es el detalle de un gasto de Movimientosexpense_approveexpenses:approveAprueba un gasto pendiente del equipo: desde ahora suma. Nadie aprueba lo que cargó. Exige confirm=trueexpense_rejectexpenses:approveRechaza un gasto pendiente con motivo; queda rechazado y no suma. Exige confirm=truerecurring_expense_listexpenses:readGastos que se repiten (alquiler, sueldos fijos), con su próxima fecha y si están activos, en pausa o terminadosrecurring_expense_createexpenses:recordCrea un gasto que se repite cada semana o cada mes; Fiuit lo carga solo cada fecha, una sola vez. Exige confirm=truerecurring_expense_updateexpenses:recordCambia el importe o el día, lo pausa o lo reanuda, o lo termina, de acá en adelante. Exige confirm=truerecurring_expense_skipexpenses:recordSaltea la próxima fecha sin cargar el gasto. Exige confirm=trueapply_refund_due_to_accountpayments:adjust«Usar para otra deuda»: un pago tardío separado «a devolver» (refund_due) pasa al saldo del cliente y cubre sus deudas más antiguas. Exige confirm=true; la API lo rechaza con un reclamo abierto en Mercado Pagorefund_paymentpayments:refundDevuelve al cliente (total o parcial) un cobro de Mercado Pago, con motivo; sin monto, todo lo que queda. Exige confirm=true con la clave de la vista previa: repetirla no devuelve dos veces y nunca se devuelve más de lo cobrado. Responde succeeded, failed (Mercado Pago la rechazó), pending (se reintenta sola, consultando antes a Mercado Pago) o review (Mercado Pago no la confirmó: no se vuelve a pedir, el monto queda reservado y Dueño\u002FEncargado recibe un aviso). Solo Dueño\u002FEncargadoget_payment_refundspayments:refundDevoluciones de un cobro: lo devuelto, lo que está en curso y lo que todavía se puede devolver (o por qué no)charge_fiscal_getpayments:fiscalMarcador fiscal de un cobro y comprobantes del emisor del negocio, si hay. Fiuit nunca emite comprobantes. Solo Dueño\u002FEncargadocharge_fiscal_markpayments:fiscalMarca si un cobro lleva comprobante: no requiere, pendiente o emitido fuera de Fiuit (con número y fecha). Solo cobros con dinero recibido. Exige confirm=true. Solo Dueño\u002FEncargadoget_task_balancepayments:read_balanceSaldo de una tarea y, si querés, su historial de cobrosget_customer_accountcustomer_balance:read (y customer_account:read para el detalle)Cuenta corriente del cliente: saldo, pagos a cuenta y deudas; con include_movements=true, desglose por tarea y cobrosget_commissionscommissions:readComisiones del equipo calculadas por la API sobre lo cobrado: con day, el día por persona (cobrado por método, propinas, comisión, ajustes y caja); sin day, el reporte entre start y end. refund_amount_unavailable lista las tareas con un reembolso parcial sin monto informado, que todavía cuentan completas. Solo lecturaget_commission_settlementscommissions:readLiquidaciones de comisiones de un período: montos congelados, ajustes automáticos que ya congelaron de otros períodos y lo pendiente de pasar al período abierto siguiente. Solo lecturasettle_commissionscommissions:settle«Liquidar comisiones»: congela el período de una persona en un asiento que no se reescribe, con motivo. Un cambio posterior (anulación, devolución o regla) queda como ajuste automático en el primer día sin liquidar. Liquidar otra vez el mismo período devuelve el mismo asiento. Exige confirm=truefinance_overviewfinance:analyzeResumen de Finanzas calculado por la API: Entró, Salió y Quedó realizados de 2 períodos anteriores y el actual, y lo que falta del actual y el siguiente, seguro (ya recibido, gastos fijos) o previsto (saldo sin pagar, comisión del equipo estimada, gastos por aprobar). Solo cosas con fecha.finance_resultfinance:analyzeResultado con base caja calculado por la API: Entró (cobrado menos devuelto), Salió (gastos aprobados, comisiones del equipo y comisiones de cobro informadas) y Quedó, con margen y el período anterior, por período, recurso, servicio o categoría. Los gastos sin recurso o servicio quedan como «General», sin repartir. missing_expenses avisa que entró dinero y no hay gastos cargados. Solo lecturafinance_result_linesfinance:analyzeDe qué se compone un número del Resultado: los cobros, devoluciones, comisiones de cobro, comisiones del equipo y gastos aprobados que suma, con importe con signo, día, categoría, recurso, servicio, persona y cliente. Se abre una fila (row, «General» con general), Entró o Salió (side) o un tipo (kind); total_minor es el número abierto aunque la lista se corte en limit. Solo lecturaexport_finance_result_csvfinance:analyze y finance:exportExporta el Resultado del período como CSV para el contador: un movimiento por renglón (cobro, devolución, comisión de cobro, comisión del equipo o gasto) con categoría, recurso, servicio, persona, cliente, importe legible e importe en unidad menor con signo; la suma es lo que quedó. Mismo separador y decimales que Excel en el país de la moneda. Hasta 50.000 movimientos. El Excel de 7 hojas se baja por la API REST. Queda registradocreate_finance_package · list_finance_packages · get_finance_packagefinance:analyze y finance:exportPide el paquete para el contador del período (Excel de 7 hojas y resumen en PDF de una hoja, con los mismos números del Resultado) y consulta su estado. Si es chico vuelve listo con un link de descarga que vale 5 minutos; si es grande se arma aparte. Con API key no incluye las fotos de los comprobantes: esas solo se bajan desde el panel. El archivo vence a las 48 horas. Queda registrado | list_prepaid_plans | prepaid:read | Paquetes (N sesiones con vencimiento), planes de club (N por mes) y membresías (precio fijo por mes, sin contar usos) del catálogo, con precio, valor por unidad y cupo por día\u002Ffranja |\n| get_customer_plans | prepaid:read | Paquetes, club y membresías de un cliente: unidades que le quedan, reservadas, vencimiento y cuota adeudada. Cada período es una cuota, una tarea que se cobra (period.booking_id); open_fees trae las cuotas por cobrar (tarea, vencimiento e importe) y next_due_at el vencimiento de la próxima. active = al día, past_due = alguna cuota vencida sin cobrar. Pagar una cuota = cobrar su tarea (record_payment con ese booking_id); no hay herramienta aparte |\n| sell_prepaid_plan | prepaid:sell y payments:record | Vende un plan cobrado en mano (efectivo, tarjeta, transferencia, Pix, Mercado Pago u otro; la forma de pago queda en la auditoría). Sin cobrar (unpaid=true), la cuota 1 queda Por cobrar y se cobra como cualquier tarea (record_payment con su booking_id), igual que las cuotas siguientes. Un club o membresía con tarjeta se vende con el email del cliente (payer_email), solo si list_prepaid_plans trae card_billing_available=true: queda esperando autorización y devuelve checkout_url, el link de Mercado Pago para que el cliente autorice su tarjeta (para eso alcanza prepaid:sell). Si el cliente ya tiene ese plan con tarjeta vigente, responde 409 prepaid_card_sale_exists con el subscription_id de esa venta: no se vende otra. Exige confirm=true |\n| cancel_prepaid_plan | prepaid:sell (reembolso: también payments:void y payments:record) | Cancela: no nacen más cuotas y las ya creadas no cambian (una impaga sigue siendo deuda; la respuesta las trae en open_fees); libera las sesiones de tareas futuras. Con refund=true devuelve lo no consumido de la cuota del período vigente de un plan cobrado en mano (lo vencido se pierde). Exige confirm=true |\n| extend_prepaid_plan | prepaid:sell | Extiende a mano el vencimiento de un paquete o club (o reabre un paquete vencido). Al vencer, lo no usado se pierde. Exige confirm=true |\n| remove_task_plan | prepaid:sell | Quita el plan de una tarea: libera la unidad y la tarea vuelve a su valor normal. Hace falta antes de cambiarle el cliente o el servicio. Exige confirm=true | cancel_booking también exige confirm=true: sin él devuelve la reserva y confirmation_required, y no cancela nada. Mostrale la reserva a la persona antes de repetir la llamada con confirm=true.record_payment y void_payment mueven dinero: exigen confirm=true y, sin él, no ejecutan la operación monetaria (el protocolo puede consultar GET \u002Fme). Pasá siempre idempotency_key para reintentar sin cobrar dos veces; los límites de monto y la detección de duplicados son los de la API. received_by es la membresía de quien recibió el dinero: con una clave de API es obligatorio.expense_record, expense_void, expense_approve, expense_reject y los recurring_expense_* que escriben también son dinero: exigen confirm=true e idempotency_key. Renombrar, unir y borrar etiquetas no mueven dinero, pero también exigen confirm=true (sin idempotency_key). Para corregir un gasto desde un agente, anulalo y cargalo de nuevo; la edición con historial se hace en el panel. La foto o el PDF del comprobante de un gasto no pasan por el MCP ni por una clave de API: se adjuntan con la sesión del panel. La preparación sin confirm devuelve idempotency_key; la confirmación exige esa clave o una del agente (1-128 caracteres). Reutilizala con el mismo destino y payload en todos los reintentos, incluso si se pierde la respuesta. Una operación nueva requiere otra clave, aunque el cobro sea idéntico. Por defecto, list_tasks omite contactos, dirección exacta, coordenadas, notas y formulario. include_sensitive=true solicita el detalle y exige además customers:read. Los movimientos de get_customer_account y el historial de get_task_balance omiten nombres de receptores, notas y motivos; el mismo parámetro exige además payments:read. Las claves mode=test solo ven herramientas de lectura. Las escrituras de configuración, de tareas y de cobros exigen confirm=true. Sin él, la herramienta no ejecuta la escritura (puede consultar datos para la vista previa): devuelve confirmation_required con lo que enviaría, para que el agente se lo muestre a una persona y repita con la confirmación.",{"id":3956,"title":3957,"titles":3958,"content":3959,"level":263},"\u002Fdocs\u002Fmcp#conexión-con-oauth-permisos-y-herramientas-que-no-aparecen","Conexión con OAuth: permisos y herramientas que no aparecen",[213],"Cuando el dueño conecta Claude o ChatGPT (ver Conectar tu IA), la IA usa un token con los permisos que marcó en la página de permisos. Qué cambia respecto de una clave de API: Varios proyectos en una conexión. Una clave de API es de un proyecto; una conexión OAuth puede cubrir varios. list_projects los lista (id, nombre, slug, rol y permisos en cada uno) y todas las herramientas aceptan un project opcional con ese id o slug, que el MCP manda como encabezado X-Wagend-Project. Con un solo proyecto no hace falta. Con varios y sin project, la herramienta responde 400 project_required con la lista para que la IA pregunte; un proyecto que no es de la conexión da 403 project_not_in_connection, exista o no. Los permisos y el rol se revisan en cada llamada, en el proyecto elegido. Con una clave de API, list_projects devuelve su único proyecto.La lista de herramientas se recorta. Solo aparecen las que el token puede usar. get_task_balance y list_tasks con include_balance=true piden payments:read_balance (permiso «Ver dinero»): si no está, la herramienta no aparece o responde 403 insufficient_scope. Para sumarlo hay que conectar de nuevo marcando «Ver dinero» (solo lo da el dueño). Los metadatos de \u002F.well-known\u002Foauth-protected-resource publican scopes_supported para que el cliente sepa qué pedir.Editar los productos de un pedido (replace_task_items) pide solo bookings:write («Crear y mover turnos»); no hace falta ver dinero. El valor a cobrar se recalcula y la API no deja bajar el pedido por debajo de lo ya cobrado (409 order_below_paid).Cobros en efectivo: record_payment con method: \"cash\" y el permiso payments:record («Registrar cobros y enviar links de pago»). Ajustar a mano el valor a cobrar (payments:adjust) no se da por OAuth: se hace desde el panel.Zona de una dirección: match_zone necesita coordenadas (lat y lng), barrio, ciudad o código postal; con una dirección en texto libre sola devuelve zone: null. Con coordenadas gana el área dibujada, y la zona de una dirección guardada del cliente usa esa misma regla.Clientes: list_customers sin include_sensitive=true devuelve solo id y locale; para elegir un cliente por nombre hace falta include_sensitive=true (y customers:read).Línea de tiempo: customer.updated y booking.updated traen fields o changed con los nombres de los campos editados, nunca sus valores.",{"id":3961,"title":3962,"titles":3963,"content":3964,"level":263},"\u002Fdocs\u002Fmcp#panel-del-partner-partner","Panel del partner (partner)",[213],"Si sos partner de Fiuit, tu IA puede leer tu cartera con las mismas reglas que tu panel. Todas son de solo lectura (readOnlyHint) y piden el scope partner:read: por OAuth, el permiso «Ver tu cartera de partner», que la página de permisos solo le ofrece a un partner. Sin ese scope, no aparecen en la lista. HerramientaScopeHacepartner_todaypartner:readLa próxima acción, el progreso de la cartera y las alertaspartner_clientspartner:readTus clientes con plan, último uso, conteos y semáforo; orden, cursor y filtro rápido quickpartner_client_detailpartner:readUn cliente y sus hitos. Un proyecto que no es de tu cartera da 404 client_not_foundpartner_activitypartner:readHitos de tus clientes, del más nuevo al más viejo El partner es quien emitió la credencial (creó la clave o autorizó la conexión), nunca un dato del pedido. Una clave con el scope emitida por otra persona da 403 partner_required; si el partner se da de baja o deja el proyecto de la credencial, deja de funcionar en la próxima llamada. Solo conteos y estados: ni el contenido de los negocios ni sus importes. Crear un proyecto para un cliente sigue siendo solo desde el panel.",{"id":3966,"title":3967,"titles":3968,"content":3969,"level":263},"\u002Fdocs\u002Fmcp#ejemplos-de-pedidos","Ejemplos de pedidos",[213],"\"Reservame un corte con Juan mañana a la mañana, a nombre de Carlos.\"\"Bloqueá la máquina de láser el lunes que viene por mantenimiento y decime qué reservas quedan afectadas.\"\"¿Cuántas ausencias tuvimos este mes?\"\"Mostrame las tareas sin asignar y dales horario mañana a las 10.\"\"Registrá un cobro en efectivo de 50.000 a Ana por su última tarea y decime el saldo.\"",{"id":3971,"title":3972,"titles":3973,"content":3974,"level":263},"\u002Fdocs\u002Fmcp#docs-para-llms","Docs para LLMs",[213],"\u002Fllms.txt lista todas las páginas de la documentación.\u002Fllms-full.txt contiene la documentación completa en Markdown. Flujos: las herramientas de un flujo requieren flow_id (list_flows); create_service y update_service aceptan flow_id para elegir el flujo de un servicio. update_flow valida antes de previsualizar (impact y shared_with, los servicios que comparten el flujo y cambian todos); confirm=true crea versión. Los flujos de sistema no se editan directamente: customize_flow da la copia propia (que se edita con update_flow) y restore_flow vuelve al original; o copy_flow (o create_flow) y asignalo. delete_flow borra un flujo sin uso ni tareas. revert_flow crea otra versión (lectura config:read y escritura settings:write). validate_flow, get_flow_examples y get_base_states completan la configuración. «Cómo se ve la tarea»: update_flow con task_view elige qué va arriba en la tarea (main: auto, when = Cuándo, destination = Destino, order = Pedido o none = nada), si se ven los chips del cliente y del cobro (chips.customer, chips.payment) y el interruptor «Ítems» (items: apagado, la tarea no ofrece «+ Agregar ítem»; los ítems cargados se siguen viendo). Lo que no mandás queda igual y clear_task_view=true vuelve a automático. Sin confirm muestra task_view_diff con el antes y el después; no crea versión ni mueve tareas y sirve también en un flujo de sistema. Cada tarea trae el ajuste vigente en task_view. MCP incorpora get_work_item_next_steps, move_work_item_stage y use_work_item_tool. Las escrituras requieren confirm=true e Idempotency-Key. complete_task se elimina. Cobro electrónico pendiente F4-29. get_work_item_stage_history (scope bookings:read) lee el historial inmutable de etapas (máximo 100). Los scopes: lectura bookings:read; mover y usar herramientas bookings:write (más payments:record si hay cobro); editar etapas del servicio settings:write. Un 403 (permiso o scope), 409 (stage_conflict, already_claimed) o 422 (stage_requirements_missing) llega tal cual al agente; un reintento con la misma idempotency_key y cuerpo repite el resultado sin duplicar. Wagy explica la capacidad vigente y el panel incluye Siguiente paso y el editor de etapas. Los efectos habilitados se encolan vía outbox; esto no acredita entrega al cliente. create_service y update_service aceptan price_per_time («Precio por tiempo», con confirm=true): al cambiar la duración de una tarea de ese servicio, su valor se recalcula en proporción, salvo con cobro o seña registrados o un valor ajustado a mano. create_service y update_service aceptan duration_options (las duraciones que elige el cliente al reservar, por ejemplo 1 h, 1 h 30 y 2 h: [{\"minutes\": 90, \"price_cents\": 17000000}], hasta 6; sin precio, en proporción; con confirm=true); clear_duration_options las quita. find_slots y hold_slot aceptan duration_min (una de esas duraciones): la reserva es una sola tarea con esa duración y su precio; otra duración responde 422 duration_not_offered. create_service y update_service aceptan location_mode (local, customer_address, customer_choice o remote: a distancia, sin dirección) y meeting_url, el enlace http(s) de la reunión de un servicio remote que carga el negocio (Fiuit no lo genera); clear_meeting_url lo quita y pasar a otro modo lo borra. El bot y los recordatorios comparten ese enlace en lugar de una dirección. update_service acepta title_template: las piezas del título de las tareas de ese servicio (de 1 a 3: customer, order, address, number o field:\u003Cclave> de un campo del formulario o de una etapa), unidas por « · »; clear_title_template vuelve a «Cliente · Pedido». update_task_metadata acepta title para escribir el título de una tarea a mano (queda fijo) o null para volverlo automático. Las dos son escrituras: muestran la propuesta con el cambio y se aplican con confirm=true. create_service y update_service aceptan booking_payment («Cobro al reservar»: none, deposit o total) y deposit_cents, con confirm=true. Con total el turno cobra el valor completo de la tarea por el flujo de la seña; deposit sin seña da 422. Los valores se validan antes de llamar a la API. También aceptan full_day («Día completo»): se deja y se retira, y el cliente elige el día, no la hora. Hay un solo horario por día, de la apertura al cierre; con un lugar que atiende 3 a la vez, entran 3 por día. No vale para un servicio que asigna una persona (un equipo con un recurso staff): responde 422 service_full_day_invalid. list_tasks(date_from=…, date_to=…, include_carried=true) suma las tareas iniciadas que pasaron su fin y siguen ocupando su lugar en esas fechas (servicio de día completo o sin persona, hasta 7 días después del fin): vienen con carried_over=true y carried_until. Es la misma regla que usa la disponibilidad, con el scope bookings:read. list_tasks muestra por defecto (fees=due) solo las cuotas de clubes y membresías que vencieron o vencen dentro de los días de aviso del plan, como Hoy y Trabajo: no trae las pagadas, las perdonadas ni las que se cobran solas con tarjeta mientras el cobro esté al día. Con fees=all las trae todas (por ejemplo, para ver el historial de cuotas de un cliente). create_service y update_service aceptan chat_payment («Cobro por chat», con confirm=true): mode (on_delivery|ask|link), prepare (anyway|after_payment) unpaid (keep|cancel) y remind (booleano: un único recordatorio al cliente antes de que venza el link); no lleva montos, el link es por el saldo de la tarea que calcula Fiuit y requiere Mercado Pago listo. update_service admite payment_requirement: required|optional|off: muestra una propuesta y con confirm=true aplica el mismo PATCH del catálogo (config:write). Cambiar la regla crea una versión auditada; el ejecutor aplica la política vigente del servicio a los destinos completed. Con payments_enabled=false explícito no exige resolver cobro ni borra saldos (cambio respecto de F3-177).",{"id":3976,"title":3977,"titles":3978,"content":3979,"level":263},"\u002Fdocs\u002Fmcp#mercado-pago","Mercado Pago",[213],"Brasil y Argentina conectan solo con OAuth. Chile, Uruguay, Colombia, México y Perú conectan solo con token desde Pagos, sin comisión Fiuit. Paraguay no ofrece Mercado Pago. Las cuentas existentes se conservan. Con cuenta de producción y servicio con seña, BRL\u002FARS generan un link de pago que vence antes que la reserva temporal. En Brasil, Pix se paga dentro de Mercado Pago. El portal muestra el link y el chat lo envía por la conversación disponible. La reserva queda esperando seña hasta verificar el pago. El prepago aplicado cubre o reduce la seña. Un pago tardío exige revisión del equipo: no reconfirma ni devuelve dinero automáticamente. Un intento rechazado o cancelado permite volver a intentar el checkout. Si un pago tardío deja dinero sin aplicar en revisión, la reserva pendiente vence y libera el horario; el recibo y el aviso se conservan. La conciliación detecta pagos adicionales también cuando llegan juntos en la búsqueda de Mercado Pago. Un cobro tardío, devuelto o con contracargo sin seña aplicada conserva su recibo y revisión al liberar el horario. Un snapshot local cancelado no prueba ausencia de dinero: exige consulta final. La gracia de 24 horas por pérdida de credenciales solo libera una reserva sin cobertura aplicada ni enlaces reemplazados sin verificar. La disponibilidad de MP incluye country (país de cobro según moneda del negocio) aun sin cuenta; Pix solo BR. Sin nuevas herramientas, scopes ni acciones de reembolso. Antes de vencer una reserva, el worker concilia todos sus enlaces electrónicos pendientes de verificación, incluidos los reemplazados y cancelados por cambio de importe, aunque su reintento esté pospuesto. Si alguna consulta falla o falta acceso a un enlace reemplazado, conserva el horario. Los recibos ya verificados conservan su estado financiero. Un pago a tiempo del enlace anterior se aplica aunque sea parcial: reduce el pendiente y genera un enlace por la diferencia. La reserva permanece esperando seña y conserva el horario; el enlace por diferencia conserva el vencimiento original y nunca pasa de dos horas antes del turno. Al agotarse ese plazo queda en revisión, sin más links ni avisos al cliente; Dueño\u002FEncargado recibe un aviso al retener el parcial. Confirmar exige cubrir el total. La falta posterior de credenciales no elimina la cobertura aplicada. El equipo debe completar el cobro o resolver la reserva; no hay devolución automática. Checkout Pro recibe solo contacto y descripción conocidos. El descriptor se normaliza a letras y números ASCII, sin acentos ni símbolos, con hasta 13 caracteres. El retorno abre el portal privado del cliente mediante su enlace existente; si no existe uno vigente o fue revocado, vuelve a \u002Fpayment-return, una página neutra sin datos del cliente. El retorno nunca crea ni revoca portales. El token queda en el fragmento y no confirma ningún pago. El receptor exige HTTPS público y rechaza .test, .example, .invalid y .localhost. Los tests habilitan explícitamente sus dominios reservados; producción no lo hace. Un POST de creación ambiguo libera automáticamente el lugar tras siete días de búsquedas vacías exitosas, con aviso al negocio y auditoría. Error, pago observado o pérdida de credenciales reinicia esa ventana; no se deduce ausencia de dinero sin acceso. Dueño\u002FEncargado puede elegir «Liberar el lugar» junto a la revisión: cancelación auditada y confirmada que conserva los cobros, sin devolución. Usa tasks:work y payments:accounts_configure en sesión de panel; no hay tool de liberación ni API key autorizada para ese motivo.\nF4-25: get_mercadopago_account (payments:read) informa además workspace_currency, mismatch (currency o country si la cuenta cobra en otra moneda o país que el proyecto: no se crean links), methods (link, Pix, QR y tarjeta con available y el motivo reason si no lo están; QR y tarjeta todavía no existen) y deposit_hold_minutes. list_mercadopago_charges (payments:read, solo lectura) lista los últimos cobros de Mercado Pago con estado, monto, propósito y tarea, sin datos del pagador ni link. La cuenta se conecta y la seña de cada servicio se edita en Finanzas → Cobros. F4-23: get_mercadopago_account suma el método point (terminal Point Smart; motivo terminal_required si no hay terminal vinculada) y account.point_terminal_id. Vincular la terminal y «Cobrar con Point» son solo del panel: no hay herramienta MCP (las operaciones no aceptan API key). F4-20: create_payment_link (payments:link) crea el link de Mercado Pago por el saldo de una tarea («Cobrar»); sin amount_minor, el monto lo calcula la API. Sin confirm devuelve una vista previa con idempotency_key; confirm=true exige esa clave. deliver=\"conversation\" lo manda además por la conversación del cliente. Un link abierto por el mismo monto se reutiliza; con otro monto abierto responde 409 payment.link_pending. F4-92: «Cobrar una parte». create_payment_link acepta amount_minor opcional (entero en unidad menor, el que indicó una persona): crea un link propio por esa parte, que convive con otras partes abiertas. La suma de los cobros abiertos nunca pasa el saldo: si no entra, responde 422 payment_part_exceeds_balance con remaining_minor (lo que queda por cubrir) y open_minor. Reintentar con la misma idempotency_key devuelve la misma parte; otra clave es otra parte aunque el monto sea igual. Sin monto, el link cobra lo que queda sin parte. cancel_payment_charge (payments:link, confirm=true) anula un link abierto, sea una parte o el link por el saldo (QR y Point se anulan solo desde el panel); uno ya pagado responde 409 payment.charge_not_open. El historial de get_task_balance con include_charges=true marca cada parte con part=true. El QR y el Point con monto son solo del panel.",{"id":3981,"title":3982,"titles":3983,"content":3984,"level":263},"\u002Fdocs\u002Fmcp#evaluaciones-después-del-servicio","Evaluaciones después del servicio",[213],"get_feedback(kind, identifier) (bookings:read): booking, service, customer, resource; 0–100. get_feedback_settings (config:read). Qué vende el bot: bot_offer (config:read) devuelve lo que el bot ofrece hoy por chat (tipos habilitados, servicios, productos de cada modalidad de pedido, planes y el link «ver todo o contratar»). stages lista las etapas de flujos que achican esa lista; con flow_id y stage juntos, devuelve lo que vería un cliente con su tarea en esa etapa. list_services y search_products traen bot_offered por ítem: apagado, el bot no lo nombra ni lo vende. Link por ítem: create_service y update_service aceptan offer_url (clear_offer_url lo quita) y save_product lo recibe en el producto; https, hasta 500 caracteres. Si está, el bot lo muestra junto al ítem; si no, usa el link del bot. bot_offer lo devuelve en cada servicio, producto y plan. Buscar en tu tienda: get_store_search muestra la búsqueda de productos en vivo en tu tienda online (Tiendanube, WooCommerce, Shopify, Make, n8n o una URL propia): la plantilla, la URL de búsqueda con {q}, el mapeo de campos, el servicio de pedidos por chat al que entran los productos, cuántos resultados muestra el bot y si está activa; de las credenciales solo dice sus nombres. list_store_search_presets trae las plantillas listas. save_store_search la crea o la edita y disable_store_search la apaga: los dos muestran antes y después sin escribir y solo cambian con confirm=true. Las credenciales van en headers, se guardan cifradas y nunca se devuelven. test_store_search hace la misma búsqueda que el bot y muestra los productos con su precio. Todas piden products:write. Atención del bot: bot_tree (config:read) devuelve el árbol de atención del bot: las ramas (servicios, productos, suscripciones, flujos propios, preguntas, mis turnos y hablar con una persona) con si están pausadas, si se pueden pausar y a qué tarea y flujo lleva cada una. Pausar servicios, productos o suscripciones es el campo sells de «Qué vende el bot». Las ramas vienen en el orden en que el bot las ofrece, con el flow_id de la raíz, su saludo (greeting) y el orden guardado (order): update_flow sobre ese flow_id con order o greeting los cambia (config:write, el mismo permiso que «Qué vende el bot»). Una rama propia pausada también se ordena y conserva su lugar. La raíz no se desactiva ni se duplica. Recorrido de las conversaciones: bot_tree_funnel (config:read) dice, por rama del árbol de atención y en los últimos días (days, 7 por defecto), cuántas conversaciones crearon una tarea, se respondieron, pasaron a una persona o se cortaron, y en qué paso; bot_conversation_path muestra por dónde pasó una conversación y dónde se cortó. No incluyen lo que escribió el cliente. Tu web: get_site (config:read) muestra «Atención → Sitio web»: plantilla (booking, catalog o showcase), secciones opcionales marcadas (galería, equipo y recursos, reseñas, planes), los textos de portada y «Quiénes somos», el subdominio (negocio.fiuit.app) y si está publicada. update_site cambia esos campos y publish_site \u002F unpublish_site la encienden o la apagan (config:write); los tres muestran antes y después sin escribir y solo cambian con confirm=true. La web nace apagada. Lo que muestra del catálogo es lo mismo que ofrece el bot (bot_offer), y sus preguntas frecuentes son las del bot. El subdominio va de 3 a 40 letras minúsculas, números y guiones, sin nombres reservados ni repetidos; cambiarlo en una web publicada apaga el link anterior (no hay redirección) y exige confirm_link_break: true dentro de changes; sin él la API responde 409 y no cambia nada. Si Fiuit revoca una web, no se puede volver a publicar hasta que la restaure. «Hecho con Fiuit» aparece al pie de la web: con un plan pago se quita con made_with_fiuit: false (can_hide_made_with_fiuit dice si tu plan lo permite); en el plan gratis la API responde 409 y sigue visible. El Dueño puede activar evaluaciones al completar una tarea: formulario configurable, enlace de un solo uso, marca de la empresa e indicadores de satisfacción con muestra mínima. Los comentarios respetan permisos de privacidad. Una puntuación baja entra en atención y genera aviso por email y Telegram, según preferencias y disponibilidad. Apagado por defecto; el envío depende del canal y de su ventana. La entrega puede repetir el mismo enlace después de una caída del worker; la respuesta sigue siendo única. F3-143 incorpora estado de admisión en lecturas de conversaciones de la API. El Inbox sigue excluido del MCP: bloquear\u002Fliberar contactos exige sesión Dueño\u002FEncargado en el panel (contacts:moderate). No hay una tool externa de moderación ni desafío anti-bot en esta entrega inicial. La política de Telegram se configura en el panel o mediante propuestas confirmadas de Wagy. WebChat puede exigir Turnstile al abrir sesión. Son superficies públicas\u002Fpanel, sin scopes de API key: MCP no abre sesiones WebChat ni modera contactos. La revisión con una seña electrónica ya aplicada no dispara consultas finales repetidas. Los cobros restantes se concilian con reintentos acotados; los webhooks verificados siguen procesándose. Una creación ambigua usa espera exponencial hasta un día entre consultas durante la ventana de siete días de búsquedas vacías exitosas; la liberación ocurre en la siguiente consulta, como máximo un día después de cumplir la ventana. Errores, pagos observados o credenciales perdidas reinician la evidencia vacía. Los turnos guiados, deshacer y reiniciar la entrevista de alta requieren sesión Dueño y CSRF del panel; no son herramientas MCP. La API pública de setup está pendiente (F3-220). confirm_booking aplica las guardas vigentes del core: un hold pendiente cuyo servicio fue retirado devuelve 409 service_inactive. Una confirmación ya comprometida conserva su replay. Turnos, deshacer y reiniciar la entrevista requieren sesión Dueño y CSRF; siguen fuera de MCP. La revisión y fusión de identidad de clientes (F3-154) solo está disponible para sesiones Dueño\u002FEncargado con CSRF en el panel. MCP no ofrece fusión por contactos declarados; coincidencias no verifican identidad. Códigos y fusión con cobros siguen pendientes. Las reglas de reconfirmación y alerta por falta de respuesta (F3-75) se configuran por la API de automatizaciones y siguen excluidas de MCP. Solo avisan tras una solicitud enviada sin respuesta. No hay una tool MCP para responder reconfirmaciones ni liberar horarios por silencio. CSV de productos (F3-153): export_products_csv(template=false), preview_products_csv(csv) y confirm_products_import(import_id, confirm=false) en toolset admin; scope products:write, incluso para exportar. La vista previa no cambia productos. Confirmar exige confirm=true, es atómico e idempotente por ID (resultado retenido 7 días); una vista previa vence en 30 minutos y cambios de catálogo\u002Fmoneda requieren repetir. Máximo 1 MiB \u002F 2000 filas; UTF-8, precios con regla única (PYG\u002FCLP enteros; BRL «1,500» ambiguo). Wagy dirige el archivo al panel; no confirma CSV por chat.",{"id":3986,"title":3987,"titles":3988,"content":3989,"level":263},"\u002Fdocs\u002Fmcp#puesta-a-punto-desde-claude-o-chatgpt-fiu-525","Puesta a punto desde Claude o ChatGPT (FIU-525)",[213],"Guía para el dueño: Configurá Fiuit con Claude o ChatGPT. Prompts (prompts\u002Flist), uno por tarea e idioma, sin argumentos: setup_from_scratch_{pt,es,en} (entrevista corta como la de Wagy: agenda, horario, qué vende, cómo cobra), setup_bot_and_knowledge_{pt,es,en} (bot y base de conocimiento) e import_catalog_{pt,es,en}. Son instrucciones fijas que nombran herramientas existentes; toda escritura sigue con vista previa y confirm=true. La auditoría de puesta a punto (audit_setup) llega cuando la API de la auditoría esté publicada.Recursos: fiuit:\u002F\u002Fsetup\u002F{pt,es,en}\u002Fguide (buenas prácticas y rubros de ejemplo, Markdown) y la plantilla fiuit:\u002F\u002Fsetup\u002F{idioma}\u002Fexamples\u002F{clave} (servicios, flujos, automatizaciones apagadas, preguntas y horario típico de un rubro; se aplica con apply_examples).Importar desde archivos: preview_products_csv acepta csv, xlsx (Excel en base64) o rows (hasta 2000 filas que el modelo leyó de un Excel, PDF o foto) con columns {encabezado: name|short_name|unit|price|category|synonyms|sku|active|featured|sort_order}; devuelve además columns e ignored_columns. undo_products_import(import_id, confirm) deshace una importación confirmada (borra lo creado o lo archiva si tiene historial; lo actualizado vuelve a su valor) mientras el catálogo no cambió (409 products.import_undo_stale), hasta 7 días.Servicios en lote: preview_services_import (mismas fuentes; columnas name, duration_min, price, team, full_day, bot_offered; solo crea), confirm_services_import y undo_services_import, con config:write. La API arma la tabla y valida.Origen: el MCP manda el nombre de la app (clientInfo o User-Agent) en X-Wagend-Client-Name; la auditoría lo guarda como client junto al actor mcp («MCP · Claude»). No da permisos.",{"id":3991,"title":3992,"titles":3993,"content":3994,"level":263},"\u002Fdocs\u002Fmcp#operaciones-del-negocio-f4-45","Operaciones del negocio (F4-45)",[213],"El servidor del repositorio agrega 76 herramientas: clientes\u002Fdirecciones (customers), Inbox (inbox),\nfinanzas solo lectura (finance), transiciones de tarea (tasks) y catálogo, horarios, automatizaciones\ny conocimiento JSON (admin). Los siete conjuntos se habilitan por defecto. tools\u002Flist publica cada herramienta con su scope y los esquemas de path (IDs de ruta), query\n(filtros) y body (comando JSON). No tenés que pasar una URL ni un proyecto. Las nuevas escrituras\nmuestran el envío previsto y una clave; repetí con confirm=true e idempotency_key estable. La API\nvalida permisos, requisitos y disponibilidad al confirmar; la vista previa no garantiza éxito. Área \u002F ejemplosScope baselist_customers, get_customer, direcciones, resumen e historialcustomers:readcreate_customer, update_customer, guardar\u002Fborrar direccióncustomers:writeVehículos del cliente (FIU-609): list_customer_assets, get_customer_asset \u002F create_customer_asset (alcanza con patente o modelo), update_customer_asset, delete_customer_assetcustomers:read \u002F customers:writeTipos de bien: list_customer_asset_types \u002F activar Vehículos con create_customer_asset_type ({\"preset\": \"vehicle\"}) o desactivarlo (active: false: los autos quedan en solo lectura)customers:read \u002F config:writelist_conversations, list_conversation_messages, contadoresmessages:readsend_conversation_message, modo, resolver, leído, intención, abrir conversación y add_conversation_note (aviso de sistema, nunca se envía al cliente)messages:writemove_work_item_stage, use_work_item_tool, quitar horario, metadata e ítemsbookings:writeHistorial, comentarios, adjuntos y ubicación de tareabookings:readDetalle de producto \u002F categorías y sugerenciasproducts:read \u002F products:writeVentas por producto (get_products_stats) \u002F rendimiento por paquete o club (get_prepaid_plans_stats); el dinero solo con finance:analyzebookings:read \u002F prepaid:readHorarios, zonas, recursos, automatizaciones y conocimientoconfig:read \u002F config:writeResumen, informes, deuda, cuentas, clientes y previsión financierosfinance:analyzeNúmeros de cobros (get_finance_collections): bruto, devuelto, comisión de Mercado Pago, comisión de Fiuit y neto por método, servicio y día o semana, más lo estimado sin cobrofinance:analyzeDisponibilidad\u002Fmovimientos financieros; caja; configuración de cajapayments:read; cash:read; cash:configure Clientes omiten nombres, contactos, documentos y direcciones por defecto; las otras vistas sensibles\nomiten texto libre y contactos. include_sensitive=true exige el scope de lectura que indica cada\nherramienta, además del scope base; para mensajes y comentarios habilita su contenido. Las finanzas\nconservan importes, advertencias y estimaciones de la API. Una acción que cobre necesita además el\npermiso financiero que exige el core: bookings:write no basta para cobrar. Las exclusiones bajan de 134 a 58. No hay equivalencia completa con el panel: 26 rutas aún no\nadmiten API key (comentarios de escritura, resúmenes de conversación y otras; seguimiento F4-47).\nTambién quedan fuera sesión\u002Fcampana personal, SSE, simulador, secretos\u002Fwebhooks, transferencias\nbinarias\u002FCSV masivo y nuevas escrituras de dinero. Consultá el catálogo con tu clave para saber qué\npodés usar. La respuesta de un mensaje puede quedar pending: eso no confirma entrega al cliente.",{"id":3996,"title":3997,"titles":3998,"content":3999,"level":301},"\u002Fdocs\u002Fmcp#avisos-al-cliente-y-bitácora","Avisos al cliente y bitácora",[213,3992],"Configurá avisos por servicio para pedidos sin horario, asignación, cambios de datos y progreso. Comienzan apagados. Consultá intentos enviados, omitidos, diferidos o fallidos en Configuración, Actividad y la ficha del cliente. La bitácora conserva 90 días sin copiar mensajes ni datos de contacto; enviado no confirma entrega. Wagy y MCP consultan los mismos resultados. list_customer_notice_deliveries, get_customer_notice_policies: config:read. update_customer_notice_policy: config:write, confirm=true. get_notices_overview (config:read) devuelve el índice «Avisos»: todo lo que recibe el cliente, ordenado desde el turno, con el valor efectivo de cada aviso, por qué está frenado y dónde se edita. Con config:write, set_notice_item_enabled enciende o apaga un aviso en su fuente (regla, política por servicio, etapa o flujo) y set_all_notices_enabled es «apagar todos los avisos a clientes»; ambas piden confirm=true. Manda el más específico: el interruptor de cada aviso decide, y el general gana sobre todo. Las filas de etapa publican el flujo y requieren además settings:write; sin ese permiso, toggleable=false y la escritura devuelve 403. PUT y revert conservan la regla de cobro vigente del catálogo en todas las etapas completed. Volver a guardar payment_requirement repara versiones divergentes; una restauración histórica no cambia el cobro. La revisión de una reserva vencida con enlaces reemplazados comparte la espera creciente de toda la reserva, hasta un día. Cada consulta final lee todas las preferencias pendientes de resolución; un error impide liberar y reinicia la evidencia vacía. Los webhooks verificados siguen activos. El enlace vence 15 minutos antes que la reserva; si el plazo es corto, el margen es la mitad del tiempo disponible, con un mínimo de 5 minutos. La página y el chat muestran la hora del enlace. La reserva conserva su propio plazo para verificar aprobaciones demoradas. Un estado local expired no bloquea un pago verificado y aprobado a tiempo: cubre la seña si la reserva sigue pendiente; si ya está cerrada o el pago llegó tarde, conserva el dinero y solicita revisión, sin reabrir ni devolver automáticamente. Si el enlace viviría menos de 5 minutos (con el margen mínimo, menos de 10 minutos hasta el plazo de la reserva), no se crea: queda el cobro manual. Un pago tardío con el lugar ya liberado queda separado «a devolver» (refund_due) en la tarea, en la cuenta del cliente y en el Financiero, con un aviso al equipo por cada pago: no se descuenta de otras deudas del cliente hasta que llega la devolución de Mercado Pago o el equipo (Dueño\u002FEncargado) lo pasa al saldo con «Usar para otra deuda» (auditado). Con un reclamo abierto en Mercado Pago (in_mediation) no se marca «a devolver»: no devolver hasta que se resuelva. Nada es automático. Las unidades reservadas también se pierden al vencer: la tarea vuelve al precio normal y el equipo recibe un aviso. Un fallo de consumo devuelve prepaid_consumption_failed y conserva la tarea sin completar. Primero quitá el plan para ajustar el importe o el cobro; las notas internas sí se editan. Si la ventana vence durante el envío, se intenta otro canal utilizable del mismo cliente. La marca no-se-pudo-avisar tiene un lugar reservado además de las veinte etiquetas de negocio, sin reemplazarlas. Reconfirmaciones y pedidos de reseña conservan su conversación y no cambian de canal.",{"id":4001,"title":4002,"titles":4003,"content":4004,"level":263},"\u002Fdocs\u002Fmcp#configurar-el-negocio-por-mcp-y-ayuda-de-fiuit-fiu-397","Configurar el negocio por MCP y ayuda de Fiuit (FIU-397)",[213],"Todo lo que arma el onboarding también se configura por MCP, con los permisos de la API key: HerramientaScopeHaceduplicate_serviceconfig:write (settings:write para copiar etapas)Crea una copia pausada de un serviciodelete_scheduleconfig:writeBaja lógica: conserva las reservas futuras y las devuelvedelete_service, delete_resource, delete_resource_groupconfig:writeSin mode pausa (se reactiva con update_* y active=true). mode=remove borra si no tiene historial y archiva si lo tiene; archive archiva; delete borra o falla con 409 catalog_item_has_history. Con tareas futuras falla con 409 catalog_item_future_bookings y su listadelete_productproducts:writeIgual, con remove por defectoget_service_removal, get_resource_removal, get_resource_group_removal, get_product_removalconfig:write \u002F products:writeQué pasaría al eliminar: si se borra o se archiva y qué tareas futuras tienerestore_service, restore_resource, restore_resource_group, restore_productconfig:write \u002F products:writeSaca un ítem de «Archivados»; vuelve pausadoget_bot_settings, update_bot_settingsconfig:read \u002F config:writePersonalidad del bot (nombre, tono, saludo, qué vende, fotos de productos), versionadacreate_prepaid_plan, update_prepaid_planprepaid:manageDefine paquetes y club: precio, unidades, vigencia, cupos y servicios, y sus cuotas: vencimiento (due_rule: signup, month_start, month_end o fixed_day con due_day 1–28), días de aviso (notice_days, 5 por defecto), first_fee_full (sin ella la cuota 1 es proporcional) y flujo del alta (flow_id). Un precio nuevo rige para la próxima cuota de cada suscripción viva (sin aviso al cliente; la respuesta trae live_subscriptions). Vender sigue siendo sell_prepaid_planlist_recommended_automations, install_recommended_automations, set_recommended_automation_activeconfig:read \u002F config:writeAutomatizaciones que recomienda el ejemplo de negocio; se instalan inactivas y se activan una por unaget_automation_stage_optionsconfig:readEtapas y acciones válidas para las reglas por etapapreview_customer_noticesconfig:writeVista previa de los avisos al cliente con datos de ejemplo; no envía ni guardalist_knowledge_sources, get_knowledge_source, list_knowledge_source_pagesconfig:readFuentes web y listados de la base de conocimientopreview_knowledge_source, create_knowledge_source, update_knowledge_source, refresh_knowledge_source, delete_knowledge_sourceconfig:writeRegistran, pausan, refrescan o borran una fuente (borrar también quita lo que importó)list_live_queries, create_live_query, update_live_query, test_live_query, disable_live_queryconfig:writeConsultas HTTP en vivo que usa el botapply_business_templatesettings:writeAplica la plantilla de rubro (barbería, estética, clínica…): vocabulario, automatizaciones y flujos inactivos. Solo en un proyecto nuevo y vacío; no se vuelve a elegirapply_examples, undo_examplesettings:writeCompone de 1 a 3 ejemplos por parte (vocabulario, flujos, automatizaciones, catálogo) y los deshace sin tocar lo que el negocio cambióget_vocabulary, update_vocabularyconfig:read \u002F settings:writeGlosario del proyecto (cómo se llaman las tareas, los clientes, el equipo)export_project_templateconfig:readLa configuración del proyecto como plantilla (flujos, catálogo, planes, ayuda, bot y automatizaciones), sin datos de clientes ni secretosget_bot_channel_policies, update_bot_channel_policyconfig:read \u002F config:writePolítica del bot por canal: contacto exigido, tope de respuestas, derivación e instrucción del canalupdate_feedback_settingssettings:writeConfigura las evaluaciones después del servicio (se leen con get_feedback_settings)search_helpcualquier keyBusca en la ayuda de Fiuit: guías de uso, «¿Qué pasa si…?» y políticas de producto vigentes, con el link a la guía y al contacto. No lee datos del negocio Las credenciales de fuentes y consultas en vivo no viajan por el MCP: se cargan en el panel y la API nunca las devuelve. Sigue afuera solo lo que no tiene sentido abrir: la sesión y el CSRF del panel, los streams, el simulador, los secretos de webhooks y canales, la campana personal, las descargas binarias grandes (se da el link), la charla guiada del onboarding (sus resultados sí están arriba), revocar un enlace de evaluación y la baja de la suscripción. Etiquetas de cada escritura. Toda herramienta que escribe declara en su descripción y en _meta[\"wagend\u002Flabels\"] si avisa al cliente (notifies_customer), si mueve dinero (moves_money) y si es reversible, con la herramienta que la deshace (inverse). Lo que le llega al cliente o mueve plata pedilo siempre con confirmación explícita de una persona.",{"id":4006,"title":447,"titles":4007,"content":4008,"level":263},"\u002Fdocs\u002Fmcp#pausar-y-duplicar",[213],"Pausar deja de ofrecer el servicio para pedidos nuevos en bot, reserva pública, Wagy y MCP. Las tareas ya agendadas siguen su curso normal. Reactivar vuelve a ofrecerlo. Pausar y desactivar son la misma acción. En el detalle abrí ⋯ → Duplicar o Pausar. En escritorio también hay un menú en la lista. Wagy propone ambas acciones y espera la confirmación del plan. MCP permite pausar con update_service(active=false, confirm=true); duplicar es duplicate_service (copia pausada, con confirmación). API: POST \u002Fv1\u002Fservices\u002F{id}\u002Fduplicate, Idempotency-Key, config:write; settings:write para copiar etapas.",{"id":4010,"title":4011,"titles":4012,"content":4013,"level":263},"\u002Fdocs\u002Fmcp#club-impago","Club impago",[213],"list_prepaid_subscriptions lista las suscripciones del proyecto con deuda y pausa (limit\u002Foffset); las membresías traen standing: al día, en gracia (grace, con los días que faltan) o bloqueada (blocked, no cubre hasta pagar y se libera sola al pagar). Con unpaid=true, solo las impagas (club o membresía), con el nombre del cliente y los meses adeudados (months_due), bloqueadas primero y el club al final. La respuesta trae unpaid_count, el total de impagas del proyecto aunque haya más que el limit. set_prepaid_benefits pausa un club impago o reactiva sus beneficios con confirm=true, sin cobrar ni borrar deuda. Ambas requieren prepaid:benefits. Pagar una cuota no reactiva: se reactiva con set_prepaid_benefits. Con la membresía bloqueada, hold_slot y la creación de tareas del socio para los servicios de esa membresía devuelven 409 membership_blocked (con plan): hay que regularizar la cuota y se libera sola al pagar. Si tu proyecto queda «Aguardando pago» (el pago del plan de Fiuit no llegó y venció la gracia), todas las herramientas devuelven 402 workspace_awaiting_payment, también las de lectura, hasta que se acredite el pago.",{"id":4015,"title":4016,"titles":4017,"content":4018,"level":301},"\u002Fdocs\u002Fmcp#flujos-v2","Flujos v2",[213,4011],"Flujos v2: validate_flow, create_flow y update_flow reciben flow con\nformat:2, stages y exits. La vista previa devuelve impact (conteo total, hasta 100 movimientos, by_service y shared_with); confirm=true confirma publicar\u002Frestaurar y mover las tareas\nabiertas a la primera etapa del mismo estado base, sin ejecutar avisos al entrar.\nEl equipo ve todos los ítems; con visible_to cliente, el bot pide esos ítems y aprieta esos botones por el chat donde nació la tarea (origen customer_chat en el historial).\nUna etapa puede avanzar sola: ítem timer con timer: {until: duration|task_start|task_end|no_reply, minutes, to} (to es un botón de la etapa sin ítems obligatorios; task_start y task_end van sin minutes, siguen la hora de inicio o de fin de la tarea y solo existen en flujos con horario) o auto: payment_received en un botón (la tarea pagada por completo con Mercado Pago). La tarea trae stage_deadline para la cuenta regresiva y el avance queda en el historial con origen auto. Si el avance falla, la tarea trae auto_advance_failed hasta que alguien la mueva. Un pago cargado a mano también dispara auto: payment_received. Además, auto: customer_replied (el cliente escribió por cualquier canal después de entrar a la etapa) y auto: form_completed (completos los ítems obligatorios que ve el cliente; la etapa necesita al menos uno), uno por evento en cada etapa; el motivo queda en data.automatic.\nmove_work_item_stage y use_work_item_tool exigen from_stage; enviar también\nconfig_version obtenido al leer la tarea. Un 409 stage_conflict exige recargar.\nLos requisitos de botón usan item.\u003Cclave>; Cerrar sin completar usa exit.reason\ny guarda un motivo privado. Revertir a v1 responde 422 version_format_unsupported.\nV2 no incluye link público del cliente, simulador, ítems de pago\u002Fproductos ni\ncondiciones. El cobro manual actual conserva las reglas del servicio. SLA y escalada (F3-595), solo con until: duration: alert: {roles} o alert: {resource: assignee} en lugar de to avisa al equipo al vencer y la tarea se queda en la etapa (un aviso por entrada; stage_deadline.alert es true); by_item: {item, minutes: {opción: min}} toma los minutos de la respuesta de un ítem de opciones (sin respuesta rige minutes) y from: created cuenta desde el alta. En un flujo en cola, la etapa de entrada (held) admite un temporizador duration para escalar lo que nadie tomó. Tope: 43200 minutos (30 días corridos). get_work_item_stage_history devuelve actor, origen (source), clase (kind) e ítems con las etiquetas históricas, incluidos movimientos por publicación. Son los últimos 100 eventos, del más reciente al más antiguo; la API acepta order=asc para presentarlos cronológicamente. Fotos y firmas son referencias privadas: obtener el archivo exige la descarga autorizada de la tarea. visible_to solo limita al cliente; el equipo conserva el alcance autorizado de sus tareas. Wagy puede explicar este recorrido mediante get_work_item con su alcance vigente. El ítem live_location («Ubicación en vivo») no se completa por MCP ni por formulario: al entrar a esa etapa el bot de equipo de Telegram le pide al responsable compartir su ubicación en tiempo real y el ítem se cumple con la primera posición. La última posición de una tarea se lee con GET \u002Fv1\u002Fbookings\u002F{id}\u002Flocation-events (mismos permisos que la tarea); el mapa del equipo (GET \u002Fv1\u002Ftasks\u002Flive-locations) es solo del panel.",{"id":4020,"title":4021,"titles":4022,"content":4023,"level":263},"\u002Fdocs\u002Fmcp#revisá-todos-los-servicios-antes-de-cambiar-un-flujo","Revisá todos los servicios antes de cambiar un flujo",[213],"Al cambiar etapas compartidas, ves qué otros servicios cambian y confirmás el alcance actualizado. update_flow \u002F revert_flow: Enviá en shared_with_ack los IDs de validation.impact.shared_with revisados y aceptados. Ante 409 stage_shared_unconfirmed, volvé a validar y pedí nueva confirmación; no reintentes automáticamente. La lista incluye todos los servicios del flujo, también el editado. get_work_item_journey (tasks, bookings:read) lee el recorrido completo de una tarea con sus mapas históricos: eventos cronológicos y versiones v2 referenciadas, incluidas etapas retiradas. Conserva el alcance autorizado y no sustituye versiones ausentes por el flujo vigente. Por defecto devuelve claves y fechas; include_sensitive=true permite consultar etiquetas, actores y respuestas históricas con bookings:read. configure_pay_info propone y guarda los datos para pagar sin Mercado Pago (alias, CBU\u002FCVU, Pix), un texto por idioma: texts con pt, es o en, hasta 600 caracteres cada uno; {} los borra (scope settings:write, confirm=true). El bot los muestra cuando el cobro por chat es «preguntar» y Mercado Pago no está listo; «Ya pagué» solo avisa al equipo y nunca registra un cobro. La lectura de estos datos es del panel y de Wagy: la API key no lee GET \u002Fv1\u002Fworkspace; la respuesta confirmada devuelve lo guardado. configure_chat_payment permite proponer y guardar el cobro por chat por defecto del negocio (scope settings:write, confirm=true). update_service usa chat_payment para una regla propia y inherit_chat_payment=true para volver al default (scope config:write, confirm=true). El monto lo calcula el servidor; estas herramientas no crean links. La baja de la suscripción (GET \u002Fv1\u002Fsubscription, POST y DELETE \u002Fv1\u002Fsubscription\u002Fcancellation) es solo para la sesión del Dueño en el panel: una API key recibe 403 y no hay herramienta MCP. Wagy lee el estado y lleva a la pantalla, pero no da de baja. get_control_summary: La atención coincide con Hoy: late respeta la tolerancia del proyecto; notice_undelivered solo abiertas; feedback_review incluye finalizadas; out_of_coverage solo abiertas y excluidas de sin zona. Los motivos pueden solaparse: no sumes sus contadores. list_tasks(attention=\"notice_undelivered\") usa la misma selección que el contador de Control. attention acepta los ocho motivos de atención, se combina con otros filtros antes de paginar y agrupar, y no agrega fechas implícitas. Mantiene el scope bookings:read. Los flujos por intención pueden declarar entry al crearse o editarse: cuándo usarlos, ejemplos, exclusiones, palabras clave y si el cliente puede iniciarlos. MCP permite previsualizar estos cambios antes de confirmar. Como máximo hay ocho intenciones activas. El bot recoge los datos iniciales por chat y pide confirmar antes de crear la tarea; crearla directamente por MCP sigue siendo una acción explícita. Con list_tasks(group_by=\"flow\"), flow_capabilities devuelve solo outcomes y delivery: los estados que permiten los flujos activos del proyecto, incluso sin tareas, sin nombres ni IDs. Una cola de atención en el local no implica entregas. Al guardar rasgos, el glosario se arma automáticamente si no hay uno guardado; conserva tus ediciones. Para cambiar sus nombres, usá Configuración → Vocabulario o pedíselo a Wagy y confirmá la propuesta. La edición del glosario requiere sesión del panel; no se ofrece por MCP.",{"id":4025,"title":4026,"titles":4027,"content":4028,"level":301},"\u002Fdocs\u002Fmcp#proponé-una-característica-nueva-con-wagy","Proponé una característica nueva con Wagy",[213,4021],"get_trait_catalog (config:read): pt\u002Fes\u002Fen. list_trait_proposals(cursor) (config:read). propose_trait(trait, confirm=false) \u002F confirm=true (settings:write). Wagy prepara un nombre y preguntas en tres idiomas. Revisá la propuesta y confirmá el envío: queda como etiqueta propia hasta que el equipo la aprueba, rechaza o une a otra. No cambia cómo atendés a tus clientes.",{"id":4030,"title":4031,"titles":4032,"content":4033,"level":263},"\u002Fdocs\u002Fmcp#qué-pasa-si-se-agota-el-canal-de-asistentes-de-ia","¿Qué pasa si se agota el canal de asistentes de IA?",[213],"El cupo es por negocio: 600 llamadas de IA y 200 conversaciones nuevas por día, y hasta 10 horarios apartados a la vez. Distintas personas comparten esos cupos, por lo que también pueden agotarlos. Te avisamos en las notificaciones de Atención → Canales; el canal vuelve cuando se renueva el cupo o se liberan los horarios. Los demás canales siguen funcionando. Si el límite de IA se alcanza durante una respuesta, el bot pide esperar y no deriva la charla por ese motivo.",{"id":4035,"title":4036,"titles":4037,"content":4038,"level":263},"\u002Fdocs\u002Fmcp#motivos-de-cierre","Motivos de cierre",[213],"get_flow → exits.close.reasons \u002F exits.cancel.reasons: {key, label: {pt, es, en}}; update_flow → confirm=true. get_outcome_reasons(start, end, service_id?, resource_id?) → bookings:read. Configurá los motivos en Mi negocio → Etapas. Al cerrar elegí uno u Otro con una explicación. Cancelar permite omitirlo. En Resultados ves la cantidad por flujo, salida y motivo. html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":218,"title":217,"titles":4040,"content":4041,"level":257},[],"Recetas de API (clientes, tareas, acciones, webhooks) y cómo modelar una barbería, estética, clínica, restaurante y entregas.",{"id":4043,"title":4044,"titles":4045,"content":4046,"level":263},"\u002Fdocs\u002Frecipes#recetas-de-api","Recetas de API",[217],"Todas usan $WAGEND_KEY como en el inicio rápido.",{"id":4048,"title":4049,"titles":4050,"content":4051,"level":301},"\u002Fdocs\u002Frecipes#crear-un-cliente-y-reservarle-de-una-vez","Crear un cliente y reservarle de una vez",[217,4044],"Necesita customers:write y bookings:write. El teléfono es el identificador único del cliente: si ya existe, la API responde 409 customer_exists. curl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fcustomers \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"name\": \"Marina\", \"phone\": \"+5521988887777\", \"locale\": \"pt\", \"tags\": [\"vip\"],\n        \"address\": { \"street\": \"Rua das Flores\", \"number\": \"120\", \"city\": \"Rio de Janeiro\", \"formatted\": \"Rua das Flores 120, Rio de Janeiro\" } }'\n\ncurl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fbookings \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Idempotency-Key: $(uuidgen)\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"service_id\": \"svc_corte\", \"start\": \"2026-10-15T09:45:00-03:00\",\n        \"customer\": { \"name\": \"Marina\", \"phone\": \"+5521988887777\" } }' POST \u002Fbookings hace la pre-reserva y la confirmación en una sola llamada.",{"id":4053,"title":4054,"titles":4055,"content":4056,"level":301},"\u002Fdocs\u002Frecipes#leer-lo-que-toca-hoy","Leer lo que toca hoy",[217,4044],"Necesita bookings:read. GET \u002Fwork-items es la misma consulta que usa la pantalla Hoy. curl \"https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fwork-items?view=today&limit=50\" \\\n  -H \"Authorization: Bearer $WAGEND_KEY\"\n\n# Solo lo que nadie tomó todavía\ncurl \"https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fwork-items?unassigned=true&limit=50\" \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" Cada tarea trae su stage y sus available_actions.",{"id":4058,"title":4059,"titles":4060,"content":4061,"level":301},"\u002Fdocs\u002Frecipes#asignar-y-cerrar-una-entrega-con-acciones","Asignar y cerrar una entrega con acciones",[217,4044],"Necesita bookings:write. Las acciones llevan el nombre que les da la configuración de etapas del negocio (con el modelo de entregas: atribuir, soltar, iniciar, concluir, nao_estava). Consultalas en available_actions de la tarea. # Asignar la entrega a un repartidor (resource_id es el recurso del repartidor)\ncurl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fbookings\u002F$TASK_ID\u002Factions\u002Fatribuir \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Idempotency-Key: $(uuidgen)\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"data\": {}, \"resource_id\": \"'$COURIER_ID'\" }'\n\n# Cerrarla como completada\ncurl -X POST https:\u002F\u002Fapi.fiuit.com\u002Fv1\u002Fbookings\u002F$TASK_ID\u002Factions\u002Fconcluir \\\n  -H \"Authorization: Bearer $WAGEND_KEY\" \\\n  -H \"Idempotency-Key: $(uuidgen)\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"data\": {} }' Si dos personas toman la misma tarea a la vez, gana una y la otra recibe 409 already_claimed. La acción \"Aceptar entrega\" (aceitar) es para el personal desde el panel o Telegram: toma la tarea con el recurso de quien la ejecuta.",{"id":4063,"title":4064,"titles":4065,"content":4066,"level":301},"\u002Fdocs\u002Frecipes#recibir-avisos-por-webhook","Recibir avisos por webhook",[217,4044],"Registrá un endpoint (ver Webhooks) y verificá la firma antes de procesar. Ejemplo mínimo con Express: import express from 'express'\nimport { verifyWagend } from '.\u002Fverify' \u002F\u002F la función de la página de Webhooks\n\nconst app = express()\napp.post('\u002Fwagend', express.raw({ type: 'application\u002Fjson' }), (req, res) => {\n  const raw = req.body.toString('utf8')\n  if (!verifyWagend(raw, req.header('Wagend-Signature') ?? '', process.env.WAGEND_WEBHOOK_SECRET!)) {\n    return res.sendStatus(400)\n  }\n  const event = JSON.parse(raw)\n  if (event.type === 'booking.confirmed') console.log('Nueva reserva', event.data.booking.id)\n  res.sendStatus(200) \u002F\u002F respondé 2xx rápido; los duplicados se descartan por event.id\n})\napp.listen(3000)",{"id":4068,"title":4069,"titles":4070,"content":4071,"level":263},"\u002Fdocs\u002Frecipes#modelos-por-negocio","Modelos por negocio",[217],"Cada receta corresponde a un modelo listo que elegís en el onboarding.",{"id":4073,"title":4074,"titles":4075,"content":4076,"level":263},"\u002Fdocs\u002Frecipes#barbería","Barbería",[217],"Cada barbero es un recurso staff exclusive con su propio horario. Un equipo, customer_choice con round_robin como alternativa. {\n  \"name\": \"Corte\",\n  \"duration_min\": 30,\n  \"step_min\": 15,\n  \"buffer_after_min\": 5,\n  \"price_cents\": 5000,\n  \"requirements\": [{ \"resource_group_id\": \"grp_barbers\", \"units\": 1 }]\n}",{"id":4078,"title":4079,"titles":4080,"content":4081,"level":263},"\u002Fdocs\u002Frecipes#estética","Estética",[217],"Profesionales, máquinas y cabinas son recursos separados. El servicio pide los tres al mismo tiempo, así que el más escaso (casi siempre la máquina) limita la agenda. {\n  \"name\": \"Depilación láser\",\n  \"duration_min\": 45,\n  \"buffer_after_min\": 10,\n  \"price_cents\": 18000,\n  \"deposit_cents\": 5000,\n  \"requirements\": [\n    { \"resource_group_id\": \"grp_professionals\", \"units\": 1 },\n    { \"resource_group_id\": \"grp_lasers\", \"units\": 1 },\n    { \"resource_group_id\": \"grp_rooms\", \"units\": 1 }\n  ]\n}",{"id":4083,"title":4084,"titles":4085,"content":4086,"level":263},"\u002Fdocs\u002Frecipes#clínica","Clínica",[217],"Médico más consultorio, por sede (un workspace por sede). Los datos de salud son sensibles: el asistente nunca pregunta síntomas y el formulario pide solo lo necesario para reservar. {\n  \"name\": \"Consulta\",\n  \"duration_min\": 30,\n  \"buffer_after_min\": 10,\n  \"intake_form\": { \"type\": \"object\", \"properties\": { \"obra_social\": { \"type\": \"string\" } } },\n  \"requirements\": [\n    { \"resource_group_id\": \"grp_doctors\", \"units\": 1 },\n    { \"resource_group_id\": \"grp_offices\", \"units\": 1 }\n  ]\n}",{"id":4088,"title":4089,"titles":4090,"content":4091,"level":263},"\u002Fdocs\u002Frecipes#restaurante","Restaurante",[217],"El salón es un recurso pooled con 40 unidades (cubiertos) por turno. La duración crece con el tamaño del grupo, y los grupos grandes pagan seña. {\n  \"name\": \"Mesa\",\n  \"step_min\": 30,\n  \"duration_by_units\": [\n    { \"max_units\": 2, \"duration_min\": 90 },\n    { \"max_units\": 4, \"duration_min\": 120 },\n    { \"max_units\": 20, \"duration_min\": 150 }\n  ],\n  \"requirements\": [{ \"resource_group_id\": \"grp_dining_room\", \"units\": \"party_size\" }]\n} El modo mesas (mesas puntuales con tamaño mínimo y máximo, y combinaciones) está en el roadmap.",{"id":4093,"title":4094,"titles":4095,"content":4096,"level":263},"\u002Fdocs\u002Frecipes#entregas","Entregas",[217],"Cada zona es un recurso pooled con capacidad por ventana de 2 horas. La zona se elige por código postal, y una regla de corte cierra las ventanas del mismo día al mediodía. {\n  \"name\": \"Entrega\",\n  \"window_mode\": true,\n  \"duration_min\": 120,\n  \"cutoff_rule\": { \"same_day_until\": \"12:00\" },\n  \"intake_form\": { \"type\": \"object\", \"required\": [\"address\", \"postal_code\"] },\n  \"requirements\": [{ \"resource_group_id\": \"grp_zones\", \"units\": 1, \"select_by\": \"postal_code\" }]\n}",{"id":4098,"title":4099,"titles":4100,"content":4101,"level":263},"\u002Fdocs\u002Frecipes#wagy-configurá-tu-negocio-con-wagy","Wagy · Configurá tu negocio con Wagy",[217],"Podés omitir la entrevista y retomar desde el checklist. El equipo y los horarios se revisan en una propuesta antes de confirmar. Los servicios y productos sugeridos quedan como borradores privados hasta completar sus datos y confirmarlos. Si Wagy no puede sugerir, cargalos manualmente. La entrevista usa ranuras compartidas con el formulario: el hito «Armar mi negocio» reúne rubro, equipo, horarios y catálogo revisado en una confirmación. El rubro instala solo vocabulario, etapas y ejemplos inactivos; no crea personas, horarios ni precios de plantilla. Tu plan informa el máximo de recursos antes de proponer. Si hay más de 25 cambios, confirmás Base y luego Catálogo; podés deshacerlos en orden inverso, dentro de 24 horas si nadie los modificó. Los borradores incompletos siguen privados. No envía invitaciones de acceso. Para cambiar alguien existente, usá Equipo por su identidad. Después de confirmar la base, los nombres escritos se proponen en orden para los recursos anónimos intactos de esa plantilla. Si hay más nombres, se crean los recursos que faltan; si hay menos, quedan los anónimos restantes. Recursos editados, vinculados a usuarios o con asignaciones se conservan, y la confirmación vuelve a comprobarlo. El botón de retoma aparece únicamente mientras esa fase está pendiente. Renombrar o reordenar un servicio o producto conserva el origen y el estado de su precio sugerido. Solo editar el control del importe lo confirma. Retomar la configuración reutiliza los horarios personales sin cambios; editar el horario general conserva las excepciones de cada persona. html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":227,"title":226,"titles":4103,"content":4104,"level":257},[],"Respuestas rápidas sobre pre-reservas, señas, horarios ocupados, cancelaciones y ausencias. Esta página junta las dudas más comunes sobre cómo se comporta una reserva. Cada respuesta dice qué pasa, por qué y dónde lo ves.",{"id":4106,"title":4107,"titles":4108,"content":4109,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-cliente-tarda-en-confirmar","¿Qué pasa si el cliente tarda en confirmar?",[226],"El horario queda guardado por 10 minutos (15 si el servicio pide seña) y después se libera solo. Así otro cliente puede tomarlo y no quedan horarios bloqueados por una conversación abandonada. Lo ves en Trabajo, donde la pre-reserva vencida deja de ocupar el calendario.",{"id":4111,"title":4112,"titles":4113,"content":4114,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-horario-se-ocupó-mientras-decidía","¿Qué pasa si el horario se ocupó mientras decidía?",[226],"El sistema no confirma la reserva y propone horarios alternativos. Es la garantía de cero sobreturnos: nadie puede quedarse con un horario que ya tiene dueño. El bot y el chat web le ofrecen al cliente las otras opciones.",{"id":4116,"title":4117,"titles":4118,"content":4119,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-dos-clientes-reservan-a-la-vez","¿Qué pasa si dos clientes reservan a la vez?",[226],"Gana el primero y el segundo recibe alternativas. Si una reserva usa varios recursos y uno de ellos está ocupado, no se reserva ninguno: la reserva se escribe completa o no se escribe.",{"id":4121,"title":4122,"titles":4123,"content":4124,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-servicio-pide-seña","¿Qué pasa si el servicio pide seña?",[226],"Al confirmar, la reserva queda esperando la seña y el horario sigue bloqueado. Cuando el proveedor de pagos confirma el cobro, la reserva pasa a confirmada. Mientras tanto la ves en el calendario con el estado de espera. Ver Reservas y pre-reservas.",{"id":4126,"title":4127,"titles":4128,"content":4129,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-reprogramo-una-reserva","¿Qué pasa si reprogramo una reserva?",[226],"Se crea una reserva nueva y se cancela la anterior, enlazadas entre sí. Los recordatorios pendientes se mueven solos al nuevo horario, así que el cliente no recibe avisos del horario viejo.",{"id":4131,"title":4132,"titles":4133,"content":4134,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-cancelo-una-reserva","¿Qué pasa si cancelo una reserva?",[226],"El horario se libera al instante y se cancelan los recordatorios pendientes. El cliente puede recibir el aviso de cancelación si lo tenés activado en Atención → Mensajes automáticos.",{"id":4136,"title":4137,"titles":4138,"content":4139,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-un-cliente-no-se-presenta","¿Qué pasa si un cliente no se presenta?",[226],"Nada automático. El sistema puede sugerir la ausencia, pero la marca una persona del equipo: así nunca se registra una ausencia por error.",{"id":4141,"title":4142,"titles":4143,"content":4144,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-paga-tarde-y-el-lugar-ya-se-liberó","¿Qué pasa si paga tarde y el lugar ya se liberó?",[226],"El dinero queda separado como a devolver en la tarea, la cuenta del cliente y Finanzas; no compensa otras deudas. El equipo recibe un aviso por cada pago. Dueño o Encargado puede devolver desde Mercado Pago o confirmar Usar para otra deuda. No se reabre ni se devuelve automáticamente.",{"id":4146,"title":4147,"titles":4148,"content":4149,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-hay-un-reclamo-abierto-en-mercado-pago","¿Qué pasa si hay un reclamo abierto en Mercado Pago?",[226],"Queda Reclamo abierto: no se pide devolver hasta que se resuelva ni se permite usarlo para otra deuda. Si se resuelve a favor del negocio vuelve a quedar a devolver; si se devuelve al cliente no queda importe pendiente.",{"id":4151,"title":4152,"titles":4153,"content":4154,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cuándo-vence-el-enlace-y-qué-pasa-si-el-aviso-llega-después","¿Cuándo vence el enlace y qué pasa si el aviso llega después?",[226],"Vence 15 minutos antes que la reserva; con plazos cortos, el margen es la mitad del tiempo disponible y al menos cinco minutos. Sin cinco minutos de vida útil no se crea y queda cobro manual. Un pago verificado aprobado a tiempo aún puede cubrir una reserva pendiente después de vencer el enlace; una reserva cerrada queda en revisión. El recibo conserva ambos plazos.",{"id":4156,"title":4157,"titles":4158,"content":4159,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#dónde-paga-el-cliente-y-volver-de-mercado-pago-confirma-la-reserva","¿Dónde paga el cliente y volver de Mercado Pago confirma la reserva?",[226],"La seña electrónica está disponible en reales y pesos argentinos con Checkout Pro alojado; Pix se paga dentro de Mercado Pago, sin pedir CPF ni tarjeta en Fiuit. Brasil y Argentina conectan por autorización; otros países admitidos usan token y Paraguay no tiene Mercado Pago. Volver abre el portal privado existente o una página neutra; nunca confirma el pago. Pix dentro de ese checkout no tiene un vencimiento separado fijado por Fiuit.",{"id":4161,"title":4162,"titles":4163,"content":4164,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-un-pago-parcial-o-un-enlace-incierto","¿Qué pasa con un pago parcial o un enlace incierto?",[226],"Un parcial aprobado a tiempo reduce la seña y puede crear un enlace por la diferencia, sin extender el plazo original ni pasar las dos horas antes del turno. La cobertura aplicada conserva el lugar en revisión. Si no se sabe si se creó el enlace, sólo siete días de consultas vacías exitosas permiten liberar en la siguiente consulta, hasta un día después. Un error o falta de acceso reinicia la evidencia. Dueño o Encargado puede confirmar Liberar el lugar desde la tarea: conserva dinero y no devuelve.",{"id":4166,"title":4167,"titles":4168,"content":4169,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#las-señas-retenidas-pagan-comisión-y-cómo-se-atribuye-el-trabajo","¿Las señas retenidas pagan comisión y cómo se atribuye el trabajo?",[226],"Las señas retenidas por ausencia, cancelación o fallo son ingreso del negocio, sin comisión ni cobros sin atribuir. Las demás comisiones se calculan sobre lo cobrado y pertenecen a quien tenía asignada la tarea al completarla; abierta, a quien la tiene hoy. Entre varias personas se reparte por igual. Las propinas quedan aparte. En Finanzas → Comisiones, el reporte se calcula al vuelo sin cierre diario; cada tarea cuenta una vez y staff ve sólo lo suyo. Una seña nunca aplicada no cubre el importe ni genera comisión para su tarea original, incluso al devolverla o pasarla a crédito libre. Las tareas vencidas tampoco generan comisión.",{"id":4171,"title":4172,"titles":4173,"content":4174,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-la-comisión-si-devuelvo-un-cobro","¿Qué pasa con la comisión si devuelvo un cobro?",[226],"La reversión resta a la misma persona y usa la regla del cobro original, aunque terminó o cambió. Un reembolso parcial de Mercado Pago se descuenta solo el día en que llega su aviso con el monto, sin cambiar los días anteriores. Si el aviso no trae el monto, el cobro cuenta completo y Dueño o Encargado ven el aviso. En cobros por QR o Point el monto nunca llega: el aviso queda hasta el reembolso total y, si querés descontarlo antes, hacé un ajuste de comisión. Lo ves en Finanzas → Comisiones.",{"id":4176,"title":4177,"titles":4178,"content":4179,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cómo-se-muestran-los-importes","¿Cómo se muestran los importes?",[226],"Cada proyecto usa el símbolo local de su moneda en todos los idiomas, con sus decimales habituales: reales con R$, guaraníes con ₲ y dólares con US$. El código de moneda queda donde se comparan monedas. Cambia la presentación, no los importes.",{"id":4181,"title":4182,"titles":4183,"content":4184,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#fiuit-cobra-una-comisión-por-cada-cobro","¿Fiuit cobra una comisión por cada cobro?",[226],"Solo si lo acordaste con Fiuit: por defecto es 0. Si tu acuerdo la incluye, Mercado Pago la descuenta de señas\ny enlaces de servicio o saldo con tu cuenta vinculada y el resto llega a tu cuenta como siempre. Si no se\npuede aplicar por moneda o importe, el cobro sigue sin comisión y Fiuit recibe un\naviso. Nunca se aplica a cobros manuales ni si tu cuenta no está vinculada a Fiuit (Financiero lo aclara). Ves\nla comisión vigente en Financiero, solo lectura.",{"id":4186,"title":4187,"titles":4188,"content":4189,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-comisión-de-fiuit-tiene-un-cobro-que-llega-después-de-cancelarse","¿Qué comisión de Fiuit tiene un cobro que llega después de cancelarse?",[226],"Si el pago se confirma después de cancelar, vencer o fallar, conserva la comisión del acuerdo original,\naunque al cerrar el enlace hubiera quedado en cero. También se conserva al devolverlo o recibir\nun contracargo.\nSolo sigue en cero si tu acuerdo no permitía aplicarla a ese cobro (moneda o importe).\nPodés consultar tu comisión en Financiero.",{"id":4191,"title":4192,"titles":4193,"content":4194,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-mercado-pago-no-retiene-la-comisión-de-fiuit-en-un-enlace","¿Qué pasa si Mercado Pago no retiene la comisión de Fiuit en un enlace?",[226],"El enlace se envía igual y el cobro conserva la comisión de tu acuerdo vigente al crearlo; Fiuit recibe\nun aviso para regularizarla por otra vía. La comisión de cada cobro la fija Fiuit con tu acuerdo y no\ncambia después. Solo queda en cero si tu acuerdo no permitía aplicarla a ese cobro o si el cobro se\ncerró sin recibir dinero. Lo ves en Financiero.",{"id":4196,"title":4197,"titles":4198,"content":4199,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-devolverle-la-plata-a-un-cliente-que-pagó-por-mercado-pago","¿Puedo devolverle la plata a un cliente que pagó por Mercado Pago?",[226],"Sí, si sos Dueño o encargado. En la tarea, sección Cobro, tocá Devolver en el pago: elegís el monto (todo o una parte) y el motivo. Nunca se devuelve más de lo cobrado y, si Mercado Pago tarda en confirmar, Fiuit consulta en Mercado Pago antes de volver a pedirla, así nunca devuelve dos veces. Si sigue sin confirmar, te avisa para que la revises en Mercado Pago.",{"id":4201,"title":4202,"titles":4203,"content":4204,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#se-devuelve-la-seña-si-el-cliente-cancela-con-tiempo","¿Se devuelve la seña si el cliente cancela con tiempo?",[226],"Solo si el servicio tiene configurada la ventana de cancelación: cancelar con al menos esas horas de anticipación devuelve la seña cobrada por Mercado Pago. Si cancela más tarde, la seña se retiene. Lo devuelto deja de contar como seña cobrada en las estadísticas.",{"id":4206,"title":4207,"titles":4208,"content":4209,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-cliente-desconoce-un-pago-en-mercado-pago","¿Qué pasa si el cliente desconoce un pago en Mercado Pago?",[226],"Es un contracargo: el cobro queda marcado como Contracargo, el monto deja de contar como cobrado y el Dueño y Encargado reciben un aviso para revisar la tarea. Fiuit no hace nada más por su cuenta.",{"id":4211,"title":4212,"titles":4213,"content":4214,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-cliente-desconoce-un-pago-que-ya-le-devolví","¿Qué pasa si el cliente desconoce un pago que ya le devolví?",[226],"El cobro sigue como Devuelto: el monto ya se restó al devolverlo y no se resta otra vez en Financiero ni en las comisiones. El Dueño y Encargado reciben un aviso para revisar en Mercado Pago que no les descuenten el monto dos veces.",{"id":4216,"title":4217,"titles":4218,"content":4219,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-mi-cuenta-de-mercado-pago-es-de-otro-país-o-moneda","¿Qué pasa si mi cuenta de Mercado Pago es de otro país o moneda?",[226],"Fiuit no crea links de pago con esa cuenta y los cobros siguen siendo manuales, para que ningún cliente pague en una moneda distinta a la de tu negocio. En Finanzas → Cobros lo ves explicado: conectá una cuenta del país del proyecto o corregí la moneda en Mi negocio → Datos.",{"id":4221,"title":4222,"titles":4223,"content":4224,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-mandarle-a-un-cliente-un-link-de-pago-por-lo-que-me-debe","¿Puedo mandarle a un cliente un link de pago por lo que me debe?",[226],"Sí, con una cuenta de Mercado Pago de Brasil o Argentina conectada. En la tarea, sección Cobro, tocá Cobrar con link: Fiuit crea un link por el saldo (nunca por un monto escrito a mano) y lo manda por la conversación del cliente o lo copia. Vence a las 48 horas y el cobro aparece solo cuando paga.",{"id":4226,"title":4227,"titles":4228,"content":4229,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-mando-el-link-dos-veces-o-cambia-el-saldo","¿Qué pasa si mando el link dos veces o cambia el saldo?",[226],"Si el monto es el mismo, se reutiliza el mismo link: el cliente nunca recibe dos links para lo mismo. Si el saldo cambió y todavía hay un link abierto por el monto anterior, Fiuit no crea otro: esperá a que venza o registrá el cobro a mano.",{"id":4231,"title":4232,"titles":4233,"content":4234,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-el-link-si-cancelo-la-tarea","¿Qué pasa con el link si cancelo la tarea?",[226],"Se anula enseguida, también en Mercado Pago. Si el cliente igual llegó a pagarlo (por ejemplo, con un Pix que ya había generado), el pago queda como crédito del cliente y el cobro en revisión: Dueño y Encargado reciben un aviso para decidir si lo devuelven o lo usan para otra deuda.",{"id":4236,"title":4237,"titles":4238,"content":4239,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#por-qué-me-pide-la-forma-de-pago-cada-vez-que-registro-un-cobro","¿Por qué me pide la forma de pago cada vez que registro un cobro?",[226],"Porque todo cobro que registrás a mano (de una tarea o su seña, a cuenta del cliente, al vender un paquete o club o cobrar su cuota, o al avanzar una etapa) usa el mismo formulario: elegís efectivo, tarjeta, transferencia, Pix (en reales), Mercado Pago u otro, y queda registrado quién lo cobró, cuánto y cómo. Así la caja y los informes cuadran. La seña ya no se marca como paga al editar la tarea: se cobra en la sección Cobro.",{"id":4241,"title":4242,"titles":4243,"content":4244,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-un-socio-no-paga-la-membresía","¿Qué pasa si un socio no paga la membresía?",[226],"Queda en rojo en su ficha y en Hoy, Dueño y Encargado reciben un aviso y empiezan los días de gracia del plan (7 por defecto). Si cobrás con link de Mercado Pago, el socio recibe el link de pago por su conversación al quedar impaga y cada 3 días. Si la membresía se cobra con tarjeta y el cobro falla, el socio recibe «No pudimos cobrar tu membresía» con el link del mes para pagarlo con otra tarjeta o a mano, y el cobro automático se reintenta igual; se cobra una sola vez por mes: si paga por el link o a mano y después igual entra el reintento automático, ese cobro queda para revisar y devolverlo (te avisamos), y si el reintento entra antes, el link del mes se anula. La tarjeta sigue guardada para los meses siguientes. Al vencer la gracia la membresía queda bloqueada: deja de cubrir sus servicios y el socio no puede hacer reservas nuevas de esos servicios (ni por el bot, ni desde el panel o la API) hasta que regularice la cuota.",{"id":4246,"title":4247,"titles":4248,"content":4249,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cómo-se-desbloquea-una-membresía-bloqueada","¿Cómo se desbloquea una membresía bloqueada?",[226],"Sola, al pagar: cuando la tarea del mes (o todas las impagas) queda pagada o la perdonás, vuelve a estar al día y a cubrir sus servicios. Nadie la bloquea ni la desbloquea a mano, y cancelarla siempre se puede. Los días de gracia se cambian en el plan (Mi negocio → Catálogo → plan → Suscriptores).",{"id":4251,"title":4252,"titles":4253,"content":4254,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-mi-proyecto-queda-aguardando-pago","¿Qué pasa si mi proyecto queda «Aguardando pago»?",[226],"Fiuit no recibió el pago de tu plan (o lo cancelaste) y vencieron los 14 días con avisos: queda todo bloqueado salvo pagar y darte de baja: el panel muestra solo la pantalla para pagar (Suscripción sigue abierta), Wagy deja de responder, el bot del equipo (WhatsApp y Telegram) solo contesta que la cuenta está aguardando pago, con el link, y tus API keys (y el MCP) reciben un error de pago pendiente. El bot sigue atendiendo a tus clientes, pero no toma reservas nuevas (tampoco la reserva web) y las automatizaciones se pausan. No se borra ningún dato. Apenas se acredita el pago, el panel vuelve a la normalidad solo.",{"id":4256,"title":4257,"titles":4258,"content":4259,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-mi-whatsapp-si-mi-proyecto-queda-aguardando-pago","¿Qué pasa con mi WhatsApp si mi proyecto queda «Aguardando pago»?",[226],"Durante la gracia el bot sigue atendiendo por WhatsApp. Si a los 7 días sigue sin pagarse, se desconecta tu WhatsApp; tus conversaciones, clientes e historial quedan intactos. Te avisamos 3 días antes y el día del corte, y el aviso del panel muestra la fecha. Después de pagar, volvé a conectarlo en Atención → Canales → WhatsApp: tocá Reconectar y escaneá el QR.",{"id":4261,"title":4262,"titles":4263,"content":4264,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#mis-clientes-pueden-hacer-un-pedido-o-un-reclamo-si-mi-proyecto-está-aguardando-pago","¿Mis clientes pueden hacer un pedido o un reclamo si mi proyecto está «Aguardando pago»?",[226],"No: igual que las reservas, mientras tu proyecto está «Aguardando pago» no nacen pedidos de productos ni solicitudes como reclamos o presupuestos, por ningún camino. El bot les contesta que por ahora no puede tomar pedidos nuevos por ahí y les ofrece hablar con alguien del equipo, sin mencionarles nada del pago. Apenas se acredita el pago, vuelve a tomarlos solo.",{"id":4266,"title":4267,"titles":4268,"content":4269,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cuándo-cambia-mi-plan-si-lo-pago-con-fiuit","¿Cuándo cambia mi plan si lo pago con Fiuit?",[226],"Cuando Fiuit confirma tu pago: ahí se activa el plan que elegiste, con sus límites y su uso de IA. Un error nuestro nunca te cambia el plan ni te bloquea.",{"id":4271,"title":4272,"titles":4273,"content":4274,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-cancelo-o-no-pago-el-plan-de-fiuit","¿Qué pasa si cancelo o no pago el plan de Fiuit?",[226],"Tenés 14 días en los que todo sigue funcionando (si cancelás, empiezan al terminar el período que ya pagaste). Mientras tanto ves un banner con «Pagar ahora», Wagy te lo recuerda y te avisamos por mail y Telegram al empezar, a la mitad, a 3 días y el último día. Si el plazo vence sin pagar, el panel muestra solo la pantalla para pagar, el bot sigue atendiendo a tus clientes pero no toma pedidos nuevos y las automatizaciones se pausan. No se borra ningún dato ni se cambia tu plan, y apenas pagás todo vuelve al instante.",{"id":4276,"title":4277,"titles":4278,"content":4279,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cómo-veo-qué-clientes-tienen-el-club-o-la-membresía-impagos","¿Cómo veo qué clientes tienen el club o la membresía impagos?",[226],"En Hoy aparece una alerta roja (para Dueño y Encargado) con cada cliente impago, su plan y, si es un club, cuántos meses debe; tocá la fila para abrir su ficha. También podés abrir un plan en Mi negocio → Catálogo y usar «Impagos» en Suscriptores. Verlos no cambia sus beneficios.",{"id":4281,"title":4282,"titles":4283,"content":4284,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-avisarle-automáticamente-a-un-cliente-que-su-club-está-impago","¿Puedo avisarle automáticamente a un cliente que su club está impago?",[226],"Sí: en Atención → Mensajes automáticos → «Recomendadas para tu negocio» activá «Recordatorio de club impago». Le escribe al cliente por su conversación, una vez por mes adeudado, y respeta la ventana de 24 h del canal, las horas de silencio (21:00 a 08:00) y a los clientes que pidieron no recibir avisos. Viene apagado hasta que lo actives; la membresía no lo usa porque ya recibe su link de pago.",{"id":4286,"title":4287,"titles":4288,"content":4289,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-el-valor-de-la-tarea-si-la-reprogramo","¿Qué pasa con el valor de la tarea si la reprogramo?",[226],"Si ajustaste el valor a mano (o cambió por un cambio de pedido), la tarea lo conserva con su motivo al moverla de hora o de día y al estirarla o achicarla. Si tenía el precio del servicio sin ajuste, toma el precio vigente del servicio; si la cubre un paquete o club, manda el plan. Lo ves en la sección Cobro de la tarea.",{"id":4291,"title":4292,"titles":4293,"content":4294,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#el-plan-vuelve-a-cubrir-una-tarea-si-la-reprogramo-después-de-quitarlo","¿El plan vuelve a cubrir una tarea si la reprogramo después de quitarlo?",[226],"No. Si tocaste Quitar plan, la tarea nueva sigue sin plan aunque la reprogrames varias veces. Cambiar el horario no deshace tu decisión de cobro. Lo ves en Trabajo, sección Cobro de la tarea.",{"id":4296,"title":4297,"titles":4298,"content":4299,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-valor-se-cobra-si-quito-el-plan-después-de-reprogramar","¿Qué valor se cobra si quito el plan después de reprogramar?",[226],"Se cobra el valor acordado antes del plan, no el precio actual del servicio: si habías ajustado 2000, conserva 2000. También se respeta si el nuevo horario queda sin cobertura. Lo ves en Trabajo, sección Cobro de la tarea.",{"id":4301,"title":4302,"titles":4303,"content":4304,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-cliente-quiere-pagar-por-chat-y-no-tengo-mercado-pago","¿Qué pasa si el cliente quiere pagar por chat y no tengo Mercado Pago?",[226],"Si el cobro por chat está en «Preguntar la forma de pago» y cargaste tus datos para pagar (alias, CBU o Pix) en Finanzas → Cobros → Cobro por chat, el bot se los muestra al cliente con el total del pedido. Cuando el cliente escribe «Ya pagué», te llega el aviso «Cliente avisó que pagó» (una sola vez por pedido): revisá que el dinero haya entrado y registrá el cobro en la tarea. Nunca se registra solo. Sin datos cargados, el cliente paga al recibir.",{"id":4306,"title":4307,"titles":4308,"content":4309,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cobrarle-por-adelantado-a-un-cliente-que-pide-por-chat","¿Puedo cobrarle por adelantado a un cliente que pide por chat?",[226],"Sí, con una cuenta de Mercado Pago lista. En la ficha del servicio, en Cobro por chat, elegís qué hace el bot cuando el cliente confirma el pedido: que pague al recibir (como siempre), preguntarle cómo quiere pagar o mandarle el link de pago. El monto lo calcula Fiuit con el total del pedido y, cuando paga, el cliente recibe «Recibimos tu pago» y la tarea queda pagada.",{"id":4311,"title":4312,"titles":4313,"content":4314,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-el-cliente-no-paga-el-link-del-pedido","¿Qué pasa si el cliente no paga el link del pedido?",[226],"El link vence a las 24 horas. Según lo que elegiste en el servicio, el pedido sigue como «paga al recibir» o se cancela, y el cliente recibe un solo mensaje que le explica el motivo y le ofrece volver a pedir. Un pedido que ya se entregó nunca se cancela por esto.",{"id":4316,"title":4317,"titles":4318,"content":4319,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-el-link-si-cambia-el-total-del-pedido","¿Qué pasa con el link si cambia el total del pedido?",[226],"El link viejo se anula para que nadie pague un monto que ya no corresponde, y el bot le manda al cliente uno nuevo por el total vigente. En la tarea ves «Link anulado por cambio de total»; si lo habías mandado vos, tocá Cobrar ahí mismo para mandar uno nuevo.",{"id":4321,"title":4322,"titles":4323,"content":4324,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#dónde-elijo-cómo-se-cobra-por-chat-por-defecto","¿Dónde elijo cómo se cobra por chat por defecto?",[226],"En Finanzas → Cobros → Cobro por chat elegís pagar al recibir, preguntar o mandar link, con las opciones de preparación y vencimiento. Los servicios heredan esa regla; en cada ficha podés elegir una propia o volver a «Usar el valor del negocio». Los negocios existentes siguen pagando al recibir hasta que lo cambies.",{"id":4326,"title":4327,"titles":4328,"content":4329,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cobrar-con-la-tarjeta-del-cliente-desde-el-panel","¿Puedo cobrar con la tarjeta del cliente desde el panel?",[226],"Sí, si sos Dueño o Encargado y el cliente está presente o al teléfono. En la tarea, sección Cobro, tocá Tarjeta: se abre el formulario seguro de Mercado Pago por el saldo. Los datos de la tarjeta los recibe Mercado Pago; Fiuit no los ve ni los guarda.",{"id":4331,"title":4332,"titles":4333,"content":4334,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-la-tarjeta-se-rechaza-o-mercado-pago-no-responde","¿Qué pasa si la tarjeta se rechaza o Mercado Pago no responde?",[226],"Si se rechaza, ves el motivo y podés probar con otra tarjeta: no se cobró nada. Si Mercado Pago no responde, el cobro queda «verificando» y no se puede cobrar otra vez hasta saber el resultado; si a la media hora no hay pago, se da por no cobrado.",{"id":4336,"title":4337,"titles":4338,"content":4339,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-el-link-si-cobro-con-tarjeta","¿Qué pasa con el link si cobro con tarjeta?",[226],"Cobrar con tarjeta anula el link o el QR abierto de esa tarea, para que el cliente no pague dos veces. Si igual llega un pago de un link anulado, queda como crédito del cliente y el equipo lo revisa.",{"id":4341,"title":4342,"titles":4343,"content":4344,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cobrar-con-qr-en-la-puerta-o-en-el-mostrador","¿Puedo cobrar con QR en la puerta o en el mostrador?",[226],"Sí, con una cuenta de Mercado Pago de Brasil o Argentina conectada. En la tarea, sección Cobro, tocá Cobrar con QR: aparece un QR a pantalla completa por el saldo y, cuando el cliente paga con Mercado Pago o la app de su banco, la pantalla muestra ¡Cobrado! y el cobro queda en la tarea. El QR vence a los 15 minutos.",{"id":4346,"title":4347,"titles":4348,"content":4349,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-el-link-si-cobro-con-qr","¿Qué pasa con el link si cobro con QR?",[226],"Pedir el QR anula el link abierto de esa tarea, para que el cliente no pueda pagar dos veces. Con un QR abierto no se crea un link. Si igual llega un pago de un link o QR anulado, queda como crédito del cliente y el equipo lo revisa.",{"id":4351,"title":4352,"titles":4353,"content":4354,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#por-qué-no-me-aparece-cobrar-con-qr","¿Por qué no me aparece «Cobrar con QR»?",[226],"Mercado Pago pide la dirección del negocio con su ubicación en el mapa para cobrar con QR. Cargala en Mi negocio → Datos; en Finanzas → Cobros ves si el QR está disponible y, si no, por qué.",{"id":4356,"title":4357,"titles":4358,"content":4359,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#le-avisan-al-cliente-antes-de-que-venza-el-link-de-pago","¿Le avisan al cliente antes de que venza el link de pago?",[226],"Solo si lo activás. En la ficha del servicio, en Cobro por chat, activá «Recordar al cliente antes de que venza»: 3 horas antes le llega un único aviso con el link, solo si todavía no pagó (nunca si ya pagó, el link se anuló o el pedido se canceló), en su idioma y no de noche. Se elige igual en Finanzas → Cobros → Cobro por chat para todo el negocio.",{"id":4361,"title":4362,"titles":4363,"content":4364,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cobrar-con-mi-terminal-point-desde-la-tarea","¿Puedo cobrar con mi terminal Point desde la tarea?",[226],"Sí, con una terminal Point Smart y una cuenta de Mercado Pago de Brasil o Argentina. Vinculala en Finanzas → Cobros → Terminal Point; después, en la tarea, sección Cobro, tocá Cobrar con Point: la terminal recibe lo que falta pagar y el cliente paga ahí con tarjeta, QR o Pix. El cobro queda en la tarea cuando Mercado Pago lo confirma.",{"id":4366,"title":4367,"titles":4368,"content":4369,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-si-cancelo-un-cobro-point-y-el-cliente-ya-estaba-pagando","¿Qué pasa si cancelo un cobro Point y el cliente ya estaba pagando?",[226],"Fiuit le pide a Mercado Pago que lo cancele y no manda otro cobro hasta que se confirme. Si el pago llega igual, no se pierde: queda como crédito del cliente y el equipo lo revisa.",{"id":4371,"title":4372,"titles":4373,"content":4374,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#por-qué-no-puedo-cambiar-la-terminal-point","¿Por qué no puedo cambiar la terminal Point?",[226],"Porque hay un cobro abierto en esa terminal. Cuando se pague, se cancele o venza (15 minutos), en Finanzas → Cobros vas a poder cambiarla o desvincularla.",{"id":4376,"title":4377,"titles":4378,"content":4379,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cobrar-el-total-al-reservar-un-turno","¿Puedo cobrar el total al reservar un turno?",[226],"Sí. En la ficha del servicio, en Cobro al reservar, elegí No cobrar, Seña o Total. Con Total, el turno queda esperando el pago del valor completo y se confirma cuando se acredita; si no paga a tiempo el lugar se libera y, si cancela con anticipación, se devuelve según tu ventana de cancelación. En Finanzas → Cobros ves qué cobra cada servicio.",{"id":4381,"title":4382,"titles":4383,"content":4384,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#por-qué-no-puedo-pegar-el-token-de-mercado-pago","¿Por qué no puedo pegar el token de Mercado Pago?",[226],"En Chile, Uruguay, Colombia, México y Perú la cuenta se conecta pegando su token, pero Fiuit lo habilita país por país. Mientras no esté habilitado en tu país, Finanzas → Cobros dice que todavía no está disponible y los cobros se registran a mano. Si ya tenías una cuenta conectada, sigue a la vista y la podés desconectar.",{"id":4386,"title":4387,"titles":4388,"content":4389,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-borrar-o-corregir-un-gasto","¿Puedo borrar o corregir un gasto?",[226],"No se borra: se anula con un motivo y queda quién y cuándo. Mientras está vigente lo podés corregir y cada cambio queda registrado. Las comisiones del equipo no se cargan como gasto: Fiuit las calcula solas.",{"id":4391,"title":4392,"titles":4393,"content":4394,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-los-gastos-que-carga-mi-equipo","¿Qué pasa con los gastos que carga mi equipo?",[226],"Quedan pendientes hasta que el Dueño o un Encargado los aprueben: mientras tanto no suman al resultado. Si se rechazan, quedan con el motivo y tampoco suman. Nadie aprueba un gasto que cargó, y cada persona del equipo ve solo los suyos.",{"id":4396,"title":4397,"titles":4398,"content":4399,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-organizar-mis-gastos-con-mis-propias-etiquetas","¿Puedo organizar mis gastos con mis propias etiquetas?",[226],"Sí. Al cargar un gasto escribí una o varias etiquetas («moto», «local centro»); las nuevas se crean ahí mismo. La etiqueta recuerda la última categoría con la que la usaste y la completa sola la próxima vez (la podés cambiar). En Finanzas → Movimientos filtrás por etiqueta y ves «gastos con esta etiqueta»; un gasto puede tener varias, así que esos totales no se suman entre sí.",{"id":4401,"title":4402,"titles":4403,"content":4404,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cambiarle-el-nombre-a-una-categoría-de-gasto","¿Puedo cambiarle el nombre a una categoría de gasto?",[226],"No: las categorías son fijas porque de ellas salen el resultado y el flujo de caja. Para organizarte a tu manera usá etiquetas; en Finanzas → Movimientos → Gastos → Etiquetas las renombrás, unís o borrás (borrar una etiqueta no borra gastos).",{"id":4406,"title":4407,"titles":4408,"content":4409,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#me-avisan-cuando-alguien-del-equipo-carga-un-gasto","¿Me avisan cuando alguien del equipo carga un gasto?",[226],"Sí: el Dueño y cada Encargado reciben un aviso por Telegram, WhatsApp o email con el monto y la categoría (nunca la nota). Quien lo cargó no lo recibe, y si alguien ya lo aprobó o rechazó, no llega. Lo silenciás en Mi cuenta → Avisos.",{"id":4411,"title":4412,"titles":4413,"content":4414,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#el-bot-le-avisa-al-cliente-si-pierde-la-seña-al-cancelar","¿El bot le avisa al cliente si pierde la seña al cancelar?",[226],"Sí. Si cancela por chat un turno con la seña pagada por Mercado Pago, la pregunta de SÍ o NO ya dice si la seña se devuelve o se retiene, con el monto, según la ventana de cancelación del servicio; al cancelar lo repite. Si pregunta «si cancelo, ¿me devuelven la seña?», el bot contesta lo mismo sin cancelar. Cancelar nunca se bloquea. La ventana se configura en cada servicio.",{"id":4416,"title":4417,"titles":4418,"content":4419,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cómo-se-calcula-lo-que-me-quedó","¿Cómo se calcula lo que me quedó?",[226],"Quedó es lo que entró menos lo que salió en el período. Entró es lo cobrado menos lo devuelto (sin cobros anulados, de prueba ni en revisión). Salió son los gastos aprobados, las comisiones del equipo que Fiuit calcula solas sobre lo cobrado y las comisiones de cobro de Mercado Pago y de Fiuit. Los gastos sin recurso quedan como «General», sin repartirlos. Si entró dinero y no cargaste ningún gasto, Fiuit te avisa que el resultado puede estar inflado.",{"id":4421,"title":4422,"titles":4423,"content":4424,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-le-paso-a-mi-contador","¿Qué le paso a mi contador?",[226],"En Finanzas → Resumen tocá «Exportar para el contador»: elegí el período y bajá un Excel con el resumen, cada movimiento y los totales por categoría, recurso y servicio, comisiones y cobros electrónicos, o un CSV solo con los movimientos. Son los mismos números del resultado. Fiuit no emite documentos fiscales: el archivo es una ayuda para tu contador.",{"id":4426,"title":4427,"titles":4428,"content":4429,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#por-qué-wagy-me-pide-confirmar-dos-veces-un-gasto","¿Por qué Wagy me pide confirmar dos veces un gasto?",[226],"Cuando el monto es alto para tu negocio (desde el doble de lo que pagás por mes de tu plan) o ya cargaste uno igual ese día, Wagy te pide confirmarlo con un botón antes de mostrarte el gasto para confirmar. Así un monto mal entendido o un mensaje repetido no entran al resultado. Los demás gastos se confirman una sola vez. Lo ves después en Finanzas → Movimientos.",{"id":4431,"title":4432,"titles":4433,"content":4434,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-guardar-la-foto-del-comprobante-de-un-gasto","¿Puedo guardar la foto del comprobante de un gasto?",[226],"Sí: una foto o un PDF por gasto. Fiuit no lo lee; el monto se carga a mano. Si subís otro, reemplaza al anterior y el cambio queda en el historial del gasto.",{"id":4436,"title":4437,"titles":4438,"content":4439,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cargar-un-gasto-que-se-repite-todos-los-meses","¿Puedo cargar un gasto que se repite todos los meses?",[226],"Sí: lo creás una vez, cada semana o cada mes con su día, y Fiuit lo carga solo en cada fecha, una sola vez. Podés pausarlo, saltear la próxima fecha o terminarlo; lo ya cargado no cambia. Un sueldo fijo es un gasto que se repite de «Sueldos».",{"id":4441,"title":4442,"titles":4443,"content":4444,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-cobrar-una-tarea-en-partes-por-ejemplo-entre-varios-jugadores","¿Puedo cobrar una tarea en partes, por ejemplo entre varios jugadores?",[226],"Sí. En la sección Cobro de la tarea tocá Cobrar una parte, escribí el monto y elegí link, QR, Point o a mano; repetilo con cada parte. Entre todas las partes abiertas nunca se pasa del saldo, y la tarea queda pagada cuando entra la última.",{"id":4446,"title":4447,"titles":4448,"content":4449,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-las-partes-si-baja-el-total-o-alguien-paga-de-más","¿Qué pasa con las partes si baja el total o alguien paga de más?",[226],"Si el total baja y una parte abierta ya no entra, esa parte se anula y queda el aviso en la tarea; las otras siguen. Si alguien paga de más, el excedente queda a favor del cliente, como cualquier pago.",{"id":4451,"title":4452,"titles":4453,"content":4454,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-la-comisión-si-devuelvo-un-cobro-de-otro-mes","¿Qué pasa con la comisión si devuelvo un cobro de otro mes?",[226],"La comisión se descuenta en el mes del cobro original, no en el de la devolución; lo devuelto sí resta el día en que lo devolvés. El mes de la devolución te muestra un aviso, por ejemplo «Devolución de un cobro de septiembre: descontado de septiembre». Si septiembre ya estaba liquidado, no cambia: el descuento queda como ajuste automático en el primer día sin liquidar.",{"id":4456,"title":4457,"titles":4458,"content":4459,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#puedo-corregir-una-comisión-ya-liquidada","¿Puedo corregir una comisión ya liquidada?",[226],"Una liquidación no se reescribe. Si después se anula o devuelve un cobro, o cambia una regla hacia atrás, la diferencia aparece como ajuste automático en el primer día sin liquidar y entra en la próxima liquidación. Un ajuste a mano va en un día que todavía no liquidaste.",{"id":4461,"title":4462,"titles":4463,"content":4464,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#cómo-le-mando-a-mi-contador-los-comprobantes-y-un-resumen-para-firmar","¿Cómo le mando a mi contador los comprobantes y un resumen para firmar?",[226],"En Finanzas → Resumen tocá «Exportar para el contador» y elegí «Paquete para el contador (ZIP)»: trae el Excel, un resumen en PDF de una hoja para firmar y las fotos de los comprobantes de los gastos aprobados del período, cada una con la fecha, el importe y la categoría en el nombre. Si es grande, lo armamos aparte y te avisamos cuando está listo; queda 48 horas en «Paquetes listos». Si solo querés la hoja para firmar, elegí «Resumen en PDF».",{"id":4466,"title":4467,"titles":4468,"content":4469,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-el-link-o-el-qr-abierto-si-el-cliente-paga-una-parte-por-otro-lado","¿Qué pasa con el link o el QR abierto si el cliente paga una parte por otro lado?",[226],"Nunca queda un cobro abierto por más de lo que se debe. Si el bot ya le mandó el link, le manda uno nuevo por lo que falta. Un link, QR o Point que generó el equipo se anula y la tarea avisa «entró otro pago y cambió el saldo»; tocá Cobrar para generar uno nuevo. Un pago con tarjeta en curso no se toca.",{"id":4471,"title":4472,"titles":4473,"content":4474,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#fiuit-emite-mis-facturas-o-notas-fiscales","¿Fiuit emite mis facturas o notas fiscales?",[226],"No. Cada negocio emite con su propio emisor. En Mi negocio → Datos → Datos fiscales el Dueño carga su régimen o su condición y marca si emite comprobantes; con eso, la ficha del cliente pide sus datos fiscales.",{"id":4476,"title":4477,"titles":4478,"content":4479,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#qué-pasa-con-la-factura-si-devuelvo-un-cobro","¿Qué pasa con la factura si devuelvo un cobro?",[226],"La factura nunca se borra. Si el cobro ya tenía una factura emitida por tu emisor, queda una nota de crédito pendiente por lo devuelto, para que la emitas.",{"id":4481,"title":4482,"titles":4483,"content":4484,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fsenas-y-reservas#mi-cliente-puede-pagar-desde-el-enlace-de-seguimiento","¿Mi cliente puede pagar desde el enlace de seguimiento?",[226],"Sí, si encendés Permitir pagar en su enlace (en la ficha del cliente, Compartir) y mientras su pedido tenga un link de pago abierto: el que le mandó el bot al confirmar o el que mandaste con Cobrar. En su página de seguimiento ve Pagar con el monto y hasta cuándo vale, y paga en Mercado Pago. Cuando paga, el link vence o lo anulás, el botón desaparece. Viene apagado y es independiente de «Mostrar saldo»; cada pedido muestra solo su propio link.",{"id":231,"title":230,"titles":4486,"content":4487,"level":257},[],"Respuestas rápidas sobre avisos al cliente, horario de silencio, topes de envío, spam y pausas de canal. Qué pasa con los mensajes que salen y entran por tus canales, y dónde lo ves.",{"id":4489,"title":4490,"titles":4491,"content":4492,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-meta-rechaza-una-plantilla-de-mis-avisos","¿Qué pasa si Meta rechaza una plantilla de mis avisos?",[230],"Las demás plantillas siguen su revisión. En Atención → Canales → WhatsApp → WhatsApp oficial ves el motivo del último intento; si fallan todas, aparece el error con el código de Meta. Una vez resuelto el motivo, volvé a enviar para reintentar los borradores. Meta decide la aprobación de los avisos nuevos.",{"id":4494,"title":4495,"titles":4496,"content":4497,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-un-aviso-de-whatsapp-oficial-no-tiene-su-plantilla-aprobada","¿Qué pasa si un aviso de WhatsApp oficial no tiene su plantilla aprobada?",[230],"Con WhatsApp oficial, si el cliente no te escribió en las últimas 24 horas, Meta solo deja mandar avisos con una plantilla aprobada. Cada aviso automático tiene la suya (reservas, cambios y cancelaciones, pedidos y entregas, cobros, reseñas y reactivación). Si la plantilla todavía no está aprobada, el aviso no sale, la conversación queda marcada para tu equipo y en Canales → WhatsApp → WhatsApp oficial ves cuántos avisos no salieron y qué plantilla falta aprobar. La reactivación y el agradecimiento por la visita son de marketing: solo salen si los autorizás con su propio máximo por mensaje. Con WhatsApp por QR no hay plantillas y nada cambia.",{"id":4499,"title":4500,"titles":4501,"content":4502,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-activo-un-recordatorio-recomendado","¿Qué pasa si activo un recordatorio recomendado?",[230],"Los recordatorios recomendados se instalan apagados. Ninguno le escribe a un cliente hasta que lo activás con su interruptor en Atención → Mensajes automáticos. Cada recordatorio muestra sus últimos envíos con el estado y el motivo si falló.",{"id":4504,"title":4505,"titles":4506,"content":4507,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-un-aviso-tendría-que-salir-de-noche","¿Qué pasa si un aviso tendría que salir de noche?",[230],"Entre las 21:00 y las 08:00 (hora del negocio) no sale nada a clientes: el envío se difiere a la mañana, no se pierde. Antes de salir, el sistema vuelve a revisar la tarea: si se canceló o reprogramó, el aviso viejo se descarta.",{"id":4509,"title":4510,"titles":4511,"content":4512,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-mando-muchos-avisos-juntos","¿Qué pasa si mando muchos avisos juntos?",[230],"Hay un tope de 30 envíos automáticos por hora por proyecto. Los que sobran se escalonan solos para cuidar la línea de WhatsApp.",{"id":4514,"title":4515,"titles":4516,"content":4517,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-un-cliente-pidió-no-recibir-promociones","¿Qué pasa si un cliente pidió no recibir promociones?",[230],"Activá en su ficha No enviar mensajes automáticos de promoción. Eso frena promociones como la reactivación, pero los recordatorios de turnos siguen saliendo, porque son operativos.",{"id":4519,"title":4520,"titles":4521,"content":4522,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-edito-una-tarea-varias-veces-seguidas","¿Qué pasa si edito una tarea varias veces seguidas?",[230],"Si tenés activo el aviso de datos modificados, las ediciones consecutivas se agrupan y el cliente recibe un solo aviso 60 segundos después de la última. Los avisos por servicio comienzan apagados y los configurás en Atención → Mensajes automáticos, donde también ves la bitácora de lo enviado y lo omitido.",{"id":4524,"title":4525,"titles":4526,"content":4527,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-un-contacto-manda-demasiados-mensajes","¿Qué pasa si un contacto manda demasiados mensajes?",[230],"Si un mismo contacto manda más de 15 mensajes en 5 minutos (o 60 en una hora), el bot deja de responderle durante 30 minutos. Los mensajes siguen llegando al Inbox, marcados como posible spam, y podés tocar Reactivar bot antes de tiempo.",{"id":4529,"title":4530,"titles":4531,"content":4532,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-la-ia-gasta-demasiado-de-golpe","¿Qué pasa si la IA gasta demasiado de golpe?",[230],"Si el proyecto supera 300 llamadas a la IA en 10 minutos, la IA se pausa sola y te avisamos. No se reactiva sola, porque podría ser un bucle o un ataque: la reanudás vos en Configuración → Plan cuando revisaste qué pasó.",{"id":4534,"title":4535,"titles":4536,"content":4537,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-diferencia-hay-entre-pausar-el-bot-y-pausar-el-canal","¿Qué diferencia hay entre pausar el bot y pausar el canal?",[230],"Pausar bot guarda los mensajes y los deja en el Inbox para atenderlos a mano, sin gasto de IA. Pausar canal descarta todo lo que llega, pensado para spam o abuso. Ver Pausas y Estado.",{"id":4539,"title":4540,"titles":4541,"content":4542,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-vence-la-ventana-de-instagram-o-ya-hay-veinte-etiquetas","¿Qué pasa si vence la ventana de Instagram o ya hay veinte etiquetas?",[230],"Después de las 24 horas del último mensaje del cliente, incluso si vencen al enviar, el aviso intenta otro canal utilizable del mismo cliente. Sin alternativa, queda No se pudo avisar en la atención de Hoy y en la bitácora: la marca adicional no desplaza las veinte etiquetas del negocio. El equipo la quita tras avisar por su cuenta. Reconfirmaciones SÍ\u002FNO conservan su canal; las reseñas se cancelan sin marcar la tarea. Instagram no admite que el negocio abra una conversación en frío.",{"id":4544,"title":4545,"titles":4546,"content":4547,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#desconectar-instagram-elimina-los-datos","¿Desconectar Instagram elimina los datos?",[230],"Sólo el Dueño conecta o desconecta, autorizando en el mismo navegador y proyecto. Desconectar libera la cuenta y conserva el historial; no elimina datos. Una revocación se detecta al enviar, consultar o renovar. La eliminación mediante callback todavía está pendiente; seguí las instrucciones de privacidad.",{"id":4549,"title":4550,"titles":4551,"content":4552,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-cambio-el-grupo-del-equipo-o-se-convierte-en-supergrupo","¿Qué pasa si cambio el grupo del equipo o se convierte en supergrupo?",[230],"Se republican las tareas sin asignar en el grupo nuevo y los botones viejos dicen este grupo ya no está vinculado, sin asignar. También se ofrecen tareas libres anteriores al primer vínculo. Tareas asignadas, cerradas, de prueba o sin acción autorizada no se ofrecen. Lo gestionás en Mi negocio → Equipo y recursos → ficha de la persona. Telegram no garantiza evitar una publicación duplicada si se corta la conexión justo después de enviarla.",{"id":4554,"title":4555,"titles":4556,"content":4557,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#de-dónde-sale-la-foto-de-mis-clientes","¿De dónde sale la foto de mis clientes?",[230],"Cuando un cliente escribe por Telegram o Instagram, su foto de perfil aparece sola y se actualiza cada tanto. WhatsApp no la comparte: quedan sus iniciales y podés subir una desde la ficha en Clientes.",{"id":4559,"title":4560,"titles":4561,"content":4562,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-cambio-o-quito-la-foto-de-un-cliente","¿Qué pasa si cambio o quito la foto de un cliente?",[230],"La foto que elegís a mano no la reemplaza el canal. Si la quitás quedan las iniciales y no vuelve sola hasta que elijas Usar la foto del canal en la ficha del cliente.",{"id":4564,"title":4565,"titles":4566,"content":4567,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#quién-ve-la-foto-de-mis-clientes","¿Quién ve la foto de mis clientes?",[230],"Solo tu equipo, en el panel y en la Mini App (cada persona del equipo, la de sus propios clientes). Nunca aparece en el portal del cliente, los enlaces públicos ni las integraciones.",{"id":4569,"title":4570,"titles":4571,"content":4572,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#de-dónde-sale-el-nombre-de-mis-clientes","¿De dónde sale el nombre de mis clientes?",[230],"Del canal por el que escriben: el nombre de su perfil de WhatsApp, Telegram o Instagram (o su @usuario si no tienen nombre), y su número o @usuario para encontrarlos en Clientes. Solo completa lo que falta: el nombre que cargás a mano nunca se reemplaza. Si Instagram no lo entrega, lo avisa la pantalla Atención → Canales → Instagram.",{"id":4574,"title":4575,"titles":4576,"content":4577,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-un-cliente-me-escribe-por-telegram-y-por-whatsapp","¿Qué pasa si un cliente me escribe por Telegram y por WhatsApp?",[230],"Si comparte su propio contacto por Telegram (o te escribe por WhatsApp desde el número que ya compartió), las dos conversaciones quedan en una sola ficha, sin que hagas nada. Dueño y Encargado reciben el aviso «Cliente vinculado entre canales» con el nombre del cliente, que lleva a su ficha; se apaga o se cambia de canal en Mi cuenta → Notificaciones. La tarjeta de contacto de otra persona nunca une fichas.",{"id":4579,"title":4580,"titles":4581,"content":4582,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-el-cliente-entró-por-el-formulario-o-el-chat-del-sitio-y-no-tiene-whatsapp","¿Qué pasa si el cliente entró por el formulario o el chat del sitio y no tiene WhatsApp?",[230],"El aviso de etapa busca primero otra conversación suya con salida (por ejemplo su WhatsApp). Si no hay, sale por email, con el mismo texto y en su idioma, a la dirección que dejó en el formulario o tiene en su ficha. Si no tiene ni canal ni email no se envía nada y la bitácora de avisos lo muestra como omitido. Si el proyecto no tiene email de salida configurado, también queda omitido.",{"id":4584,"title":4585,"titles":4586,"content":4587,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#por-qué-no-se-unieron-dos-fichas-del-mismo-cliente","¿Por qué no se unieron dos fichas del mismo cliente?",[230],"Solo se unen solas con un teléfono que el canal garantiza: el número de WhatsApp o el contacto propio que la persona comparte por Telegram (y entonces Dueño y Encargado reciben el aviso «Cliente vinculado entre canales»). Un teléfono que la persona escribe, la tarjeta de contacto de otra persona o un @usuario no alcanzan: la ficha muestra la coincidencia en Identidades y coincidencias para que Dueño o Encargado revisen y confirmen la fusión.",{"id":4589,"title":4590,"titles":4591,"content":4592,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#puedo-cambiar-lo-que-el-bot-le-escribe-al-cliente-en-cada-etapa","¿Puedo cambiar lo que el bot le escribe al cliente en cada etapa?",[230],"Sí, en Mi negocio → Etapas: al editar una etapa, «Mensaje al cliente al entrar» te deja escribir tu texto por idioma, con datos que Fiuit completa (nombre, servicio, fecha y hora, monto, link). Solo el dueño guarda; lo que se guardó es lo que sale, la IA no lo reescribe.",{"id":4594,"title":4595,"titles":4596,"content":4597,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-el-cliente-habla-un-idioma-en-el-que-no-escribí-el-mensaje","¿Qué pasa si el cliente habla un idioma en el que no escribí el mensaje?",[230],"Recibe el texto de la plantilla en su idioma. Lo mismo si el texto usa un dato que esa tarea no tiene (por ejemplo, un cliente sin nombre): nunca sale un mensaje con huecos.",{"id":4599,"title":4600,"titles":4601,"content":4602,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#edité-el-mensaje-de-una-etapa-cambia-el-de-las-tareas-que-ya-están-en-curso","Edité el mensaje de una etapa: ¿cambia el de las tareas que ya están en curso?",[230],"Una tarea que ya entró a la etapa y tiene el aviso por salir conserva el texto con el que entró. Las que entren después usan el texto nuevo.",{"id":4604,"title":4605,"titles":4606,"content":4607,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-equipo-recibe-mi-consulta-en-el-sitio-de-fiuit","¿Qué equipo recibe mi consulta en el sitio de Fiuit?",[230],"El país elegido o detectado define quién recibe los formularios de contacto: Argentina y Brasil tienen equipo local; los demás países van al equipo global. Sin país confirmado, con país desconocido, con error o mientras se detecta, los envíos van al equipo global, también en portugués. Las presentaciones argentinas siempre van a Argentina y las brasileñas a Brasil.\nEl chat usa el país de la detección inicial hasta recargar la página. Los formularios siguen el selector; si falta el destino local usan el global, y si tampoco está disponible muestran el contacto alternativo o un error sin declarar recepción.",{"id":4609,"title":4610,"titles":4611,"content":4612,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-dice-el-aviso-de-asignado-si-reservo-una-cancha-o-un-lugar","¿Qué dice el aviso de «asignado» si reservo una cancha o un lugar?",[230],"Nombra la cancha o el lugar («Tu pedido de Corte quedó asignado a Cancha 1.»). Solo dice «una persona» cuando se asignó a alguien del equipo. Lo ves y lo editás en Mi negocio → Etapas o en los avisos del servicio.",{"id":4614,"title":4615,"titles":4616,"content":4617,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#cómo-prendo-o-apago-todos-los-avisos-de-un-tema","¿Cómo prendo o apago todos los avisos de un tema?",[230],"En Mi cuenta → Mis avisos cada tema (Conversaciones, Tareas, Dinero y Sistema) arranca plegado y tiene una casilla por canal: tocarla prende o apaga todos los avisos del tema en ese canal. Si hay una mezcla, la casilla se ve indeterminada y un toque los prende a todos. Abrí el tema para elegir aviso por aviso. Un canal que todavía no podés usar, como Telegram sin vincular, aparece deshabilitado con el motivo y la casilla de tema no lo toca. Solo ves los tipos disponibles para tu rol; los grupos vacíos se ocultan y guardar conserva las preferencias que no ves.",{"id":4619,"title":4620,"titles":4621,"content":4622,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#dónde-se-configura-cada-aviso-y-a-quién-le-llega","¿Dónde se configura cada aviso y a quién le llega?",[230],"Los avisos a tus clientes están en Atención → Mensajes automáticos; los del equipo, en Configuración → Avisos al equipo; los tuyos, en Mi cuenta → Mis avisos. Cuando elegís quién recibe un aviso del equipo, las opciones son siempre las mismas: Dueño, Dueño y encargados, Todo el equipo y Quien tiene la tarea.",{"id":4624,"title":4625,"titles":4626,"content":4627,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#quién-recibe-el-aviso-cuando-una-tarea-se-crea-se-completa-se-reagenda-o-se-cancela","¿Quién recibe el aviso cuando una tarea se crea, se completa, se reagenda o se cancela?",[230],"Dueño y Encargado reciben los cuatro; quien tiene la tarea asignada recibe además el de reagendada y el de cancelada. Nadie recibe el aviso de lo que hizo él mismo, y el staff nunca se entera de las tareas de otra persona. Por defecto llegan por la campana y push; los de reagendada y cancelada también por Telegram y email. Cada persona lo ajusta en Mi cuenta → Avisos y el Dueño puede apagar cada tipo para todo el proyecto.",{"id":4629,"title":4630,"titles":4631,"content":4632,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#por-qué-no-me-avisan-de-una-tarea-que-creé-o-completé-yo","¿Por qué no me avisan de una tarea que creé o completé yo?",[230],"Porque ya lo sabés: los avisos de tarea no se mandan a quien hizo la acción.",{"id":4634,"title":4635,"titles":4636,"content":4637,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#se-avisa-si-borro-una-tarea","¿Se avisa si borro una tarea?",[230],"Hoy las tareas no se borran, se cancelan, y eso sí avisa.",{"id":4639,"title":4640,"titles":4641,"content":4642,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-el-aviso-usa-el-link-de-una-sala-y-esa-sala-no-tiene-enlace","¿Qué pasa si el aviso usa el link de una sala y esa sala no tiene enlace?",[230],"Sale el aviso habitual, sin dejar huecos. Cargá un link HTTPS en Equipo y recursos y usá la variable del link de reunión en el mensaje de la etapa. Con salas asignadas que tienen enlaces distintos también sale el aviso habitual.",{"id":4644,"title":4645,"titles":4646,"content":4647,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-borro-todas-mis-notificaciones","¿Qué pasa si borro todas mis notificaciones?",[230],"En la campana tocá «Borrar todas» y confirmá: se vacían tus avisos de ese proyecto. Las notificaciones de las demás personas, las de otros negocios y lo registrado en la auditoría no cambian, y los avisos nuevos siguen llegando. No se puede deshacer.",{"id":4649,"title":4650,"titles":4651,"content":4652,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#fiuit-puede-pausar-la-ia-de-mi-proyecto","¿Fiuit puede pausar la IA de mi proyecto?",[230],"Sí. El equipo de Fiuit puede pausarla, por ejemplo ante un gasto raro: es la misma pausa que usás vos, así que el bot sigue respondiendo con un texto fijo, no se gasta IA y ves el aviso en el panel. La reanudás en Configuración → Plan.",{"id":4654,"title":4655,"titles":4656,"content":4657,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#puedo-unir-dos-fichas-del-mismo-cliente-aunque-no-coincidan-exacto","¿Puedo unir dos fichas del mismo cliente aunque no coincidan exacto?",[230],"Sí. En la ficha, Más acciones → Unificar con…: buscás la otra por nombre, teléfono o email, ves las dos lado a lado, elegís qué dato queda donde difieren y confirmás (Dueño o Encargado). Pasan a la ficha que se conserva las tareas, las conversaciones de cada canal, los comentarios, los adjuntos y las direcciones; las etiquetas se suman, y el bot reconoce a la persona por cualquiera de sus canales. En Clientes, el aviso «posibles duplicados» junta las fichas con el mismo teléfono o email, o con un nombre muy parecido y el mismo número, para revisarlas de a una. Una coincidencia no verifica a la persona. No se puede deshacer, y todavía no aplica a fichas con cobros; si la que se une tiene paquetes o clubes, unificá al revés.",{"id":4659,"title":4660,"titles":4661,"content":4662,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#dónde-cambio-el-idioma-y-hablo-con-soporte-desde-el-panel","¿Dónde cambio el idioma y hablo con soporte desde el panel?",[230],"Tocá tu foto o nombre al pie del menú para abrir Mi cuenta. Ahí podés elegir el idioma o el del proyecto y hablar con soporte cuando esté disponible. Salir sigue al lado del nombre.",{"id":4664,"title":4665,"titles":4666,"content":4667,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#por-qué-recibo-un-solo-aviso-cuando-se-completan-muchas-tareas","¿Por qué recibo un solo aviso cuando se completan muchas tareas?",[230],"Si en un minuto te llegarían más de diez avisos del mismo tipo en un proyecto, se reúnen en uno con la cantidad. Los envíos al celular, Telegram y email esperan un minuto para poder agruparse; una demora mayor configurada se respeta. Los avisos de tareas abren Trabajo y tus preferencias siguen en Mi cuenta → Mis avisos.",{"id":4669,"title":4670,"titles":4671,"content":4672,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Favisos-y-canales#qué-pasa-si-enviar-avisos-a-clientes-está-apagado-y-un-aviso-está-encendido","¿Qué pasa si «Enviar avisos a clientes» está apagado y un aviso está encendido?",[230],"No sale ninguno: el interruptor general frena todos los avisos a clientes, aunque el de cada etapa, servicio o recordatorio esté encendido. Con el general encendido, manda el más específico: cada aviso sale solo si su propio interruptor está encendido. Lo ves y lo cambiás en Automatización → Avisos a clientes, donde la fila frenada dice por qué.",{"id":235,"title":234,"titles":4674,"content":4675,"level":257},[],"Respuestas rápidas sobre lo que el bot hace y no hace, cuándo pasa la conversación a una persona y qué pasa con la IA.",{"id":4677,"title":4678,"titles":4679,"content":4680,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-escribo-yo-en-una-conversación","¿Qué pasa si escribo yo en una conversación?",[234],"Al responder desde Inbox, la API o el MCP, cancelás la espera del bot y lo callás en esa conversación durante 2 horas por defecto. Cada respuesta renueva el plazo, configurable por canal. Las respuestas desde la app del teléfono no llegan al sistema. Ves la conversación en Inbox.",{"id":4682,"title":4683,"titles":4684,"content":4685,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-puede-esperar-a-que-responda-el-equipo","¿El bot puede esperar a que responda el equipo?",[234],"Sí: en «Humano primero» manda un acuse una vez por ráfaga y espera 5 minutos (configurable entre 1 y 60). Si respondés, se cancela la espera; si no, el bot retoma con contexto y sin volver a saludar. Si el cliente vuelve a escribir dentro de las 2 horas desde la última respuesta del bot, sigue el bot; pasadas 2 horas, se vuelve a esperar al equipo. El modo se configura por API\u002FMCP; el panel llega en FIU-517.",{"id":4687,"title":4688,"titles":4689,"content":4690,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-ofrece-el-bot-los-horarios-disponibles","¿Cómo ofrece el bot los horarios disponibles?",[234],"En una frase, con «hoy», «mañana» y horas cortas, según la zona horaria del negocio. Los horarios y los botones son los mismos; el cliente puede responder «el de las 10» o «mañana 12». Podés ver la conversación en Inbox.",{"id":4692,"title":4693,"titles":4694,"content":4695,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-vuelve-a-pedir-el-día-y-el-horario-si-el-cliente-los-dijo-antes-de-elegir-el-servicio","¿El bot vuelve a pedir el día y el horario si el cliente los dijo antes de elegir el servicio?",[234],"No: al empezar la reserva, recupera hasta 6 mensajes del cliente de los últimos 30 minutos, posteriores a la última reserva cerrada. Con servicio, día y franja ofrece horarios; si la franja es dudosa, la confirma. «Mañana» conserva la fecha del mensaje aunque se cruce medianoche. Podés ver la conversación en Inbox.",{"id":4697,"title":4698,"titles":4699,"content":4700,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#por-qué-wagy-ya-no-muestra-el-saludo-grande-al-abrirlo","¿Por qué Wagy ya no muestra el saludo grande al abrirlo?",[234],"Wagy se presenta solo la primera vez que lo abrís sin historial en ese proyecto y dispositivo. Después quedan las sugerencias; si ya hay conversación, nunca muestra la presentación. En el Panel de control el chat ocupa toda la columna en escritorio.",{"id":4702,"title":4703,"titles":4704,"content":4705,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-pide-hablar-con-una-persona","¿Qué pasa si el cliente pide hablar con una persona?",[234],"La conversación pasa al Inbox con el estado «Pide una persona» y el bot deja de contestar. Lo mismo ocurre si algo falla. Lo ves en Requiere atención y llega como notificación.",{"id":4707,"title":4708,"titles":4709,"content":4710,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-pregunta-un-precio-o-un-horario-que-el-bot-no-conoce","¿Qué pasa si el cliente pregunta un precio o un horario que el bot no conoce?",[234],"El bot no inventa: horarios, precios y direcciones salen siempre del sistema. Si falta información, le conviene cargarla en la base de conocimiento o la conversación pasa a una persona.",{"id":4712,"title":4713,"titles":4714,"content":4715,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-confirma-con-datos-nuevos","¿Qué pasa si el cliente confirma con datos nuevos?",[234],"Un «sí» enviado junto con datos nuevos no confirma: el bot arma un resumen actualizado y espera otro «sí» posterior. La confirmación siempre es explícita, y cancelar o pedir una persona interrumpe la propuesta.",{"id":4717,"title":4718,"titles":4719,"content":4720,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-manda-varios-mensajes-seguidos","¿Qué pasa si el cliente manda varios mensajes seguidos?",[234],"El bot espera unos segundos de silencio (3, o 5 mientras recoge datos, con un máximo de 12) y responde a todos juntos. Elegís el modo en Atención → Bot.",{"id":4722,"title":4723,"titles":4724,"content":4725,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-se-acaba-la-cuota-de-ia-del-mes","¿Qué pasa si se acaba la cuota de IA del mes?",[234],"Las funciones con IA se pausan, el bot responde un mensaje fijo y pasa la conversación al Inbox. Calendario, tareas y clientes siguen funcionando. Ves el consumo en Configuración → Plan, con aviso al llegar al 80 %.",{"id":4727,"title":4728,"titles":4729,"content":4730,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-un-cliente-intenta-darle-instrucciones-al-bot","¿Qué pasa si un cliente intenta darle instrucciones al bot?",[234],"Las ignora. El bot no sigue instrucciones escondidas en un mensaje o un archivo, no usa herramientas de administración con un cliente y no ve datos de otro negocio. Ver El bot y la IA.",{"id":4732,"title":4733,"titles":4734,"content":4735,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-mezcla-su-pedido-con-un-tema-ajeno","¿Qué pasa si el cliente mezcla su pedido con un tema ajeno?",[234],"El bot atiende lo del negocio e ignora lo ajeno. Si todo es ajeno, responde un texto fijo con los temas que atiende y cómo pedir una persona; ese rechazo por sí solo no avisa al equipo. Pedir una persona interrumpe cualquier carrito o resumen y lleva al Inbox.",{"id":4737,"title":4738,"titles":4739,"content":4740,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-vendo-solo-productos-y-un-cliente-pide-por-chat","¿Qué pasa si vendo solo productos y un cliente pide por chat?",[234],"El bot arma el pedido con los productos que ofrece, muestra el resumen con el total y, cuando el cliente dice que sí, crea la tarea con ese monto. No pide dirección: la entrega o el retiro los coordinás vos. La tarea aparece en Hoy.",{"id":4742,"title":4743,"titles":4744,"content":4745,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#wagy-me-explica-cómo-funcionan-las-reglas-de-fiuit","¿Wagy me explica cómo funcionan las reglas de Fiuit?",[234],"Sí. Preguntale «¿qué pasa si…?» y busca la regla en esta guía y en el registro de políticas; te dice qué pasa, por qué y dónde lo ves. Si algo todavía no está disponible, te lo dice así y no lo presenta como vigente.",{"id":4747,"title":4748,"titles":4749,"content":4750,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-ve-el-cliente-en-el-enlace-de-su-pedido","¿Qué ve el cliente en el enlace de su pedido?",[234],"Lo que pidió, el total, la dirección mientras el pedido sigue abierto, el día con la franja (o la hora) y el estado; el mapa solo cuando va en camino. Puede agregarlo al calendario, cambiarlo o cancelarlo, repetirlo o hablarte. El bot manda el enlace al confirmar el pedido y cuando pregunta cómo va.",{"id":4752,"title":4753,"titles":4754,"content":4755,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-vuelve-a-mandar-el-enlace-si-lo-revoqué","¿El bot vuelve a mandar el enlace si lo revoqué?",[234],"No. Si revocaste el enlace de un cliente, el bot confirma sin enlace hasta que lo vuelvas a compartir desde Compartir en la tarea o la ficha del cliente.",{"id":4757,"title":4758,"titles":4759,"content":4760,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-cambia-o-cancela-el-cliente-desde-el-enlace-del-pedido","¿Cómo cambia o cancela el cliente desde el enlace del pedido?",[234],"Con «Cambiar o cancelar»: abre tu chat con el código del pedido escrito (en Telegram, Instagram o el chat de tu sitio, el mensaje se copia y lo pega). Cancelar nunca se bloquea.",{"id":4762,"title":4763,"titles":4764,"content":4765,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#a-qué-dirección-va-el-pedido-si-el-bot-le-propuso-una-y-el-cliente-dijo-que-sí","¿A qué dirección va el pedido si el bot le propuso una y el cliente dijo que sí?",[234],"A esa. Si el bot ofrece una dirección que el cliente ya usó y el cliente acepta sin dar otra, el resumen la nombra y el pedido sale ahí.",{"id":4767,"title":4768,"titles":4769,"content":4770,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-pide-el-pedido-para-mañana-a-la-tarde","¿Qué pasa si el cliente pide el pedido para «mañana a la tarde»?",[234],"Queda anotado en la nota del pedido (lo ves en Tareas) y sale en el resumen y en la confirmación. El horario exacto lo fija tu equipo, como siempre.",{"id":4772,"title":4773,"titles":4774,"content":4775,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-le-dice-el-bot-al-cliente-cuando-confirma-un-pedido","¿Qué le dice el bot al cliente cuando confirma un pedido?",[234],"Qué pidió, cuándo, a dónde va y el código del pedido, en el idioma del cliente. No muestra el nombre interno del servicio.",{"id":4777,"title":4778,"titles":4779,"content":4780,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-pide-un-cliente-por-chat-un-servicio-que-no-lleva-productos","¿Cómo pide un cliente por chat un servicio que no lleva productos?",[234],"Igual que un pedido: el bot le hace una por vez las preguntas obligatorias del formulario del servicio, después le pide el lugar si es a domicilio y le muestra un resumen con lo que contestó, el lugar y el total antes del sí. Lo ves en Tareas, sin horario hasta que tu equipo lo agende.",{"id":4782,"title":4783,"titles":4784,"content":4785,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-dice-que-no-al-resumen-de-su-pedido","¿Qué pasa si el cliente dice que no al resumen de su pedido?",[234],"Si el pedido no lleva productos, no se registra nada y el bot se lo avisa («no sé» no cuenta como un no). Si lleva productos, el bot le pregunta qué quiere cambiar.",{"id":4787,"title":4788,"titles":4789,"content":4790,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-elige-el-cliente-la-dirección-si-tiene-varias-guardadas","¿Cómo elige el cliente la dirección si tiene varias guardadas?",[234],"El bot le muestra un botón por dirección y «Otra». En WhatsApp, con más de tres opciones, aparece como lista.",{"id":4792,"title":4793,"titles":4794,"content":4795,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-responde-citando-un-mensaje-que-nombra-una-dirección","¿Qué pasa si el cliente responde citando un mensaje que nombra una dirección?",[234],"Si escribe algo como «mandá a esta» respondiendo a ese mensaje, el pedido va a esa dirección. Solo cuenta un mensaje de la misma conversación que nombre una dirección que el cliente ya usó.",{"id":4797,"title":4798,"titles":4799,"content":4800,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-horarios-le-ofrece-el-bot-a-un-cliente-que-pide-un-turno","¿Qué horarios le ofrece el bot a un cliente que pide un turno?",[234],"Si pide una hora exacta y está libre, el bot la reserva por 10 minutos y le muestra el resumen para que confirme; si está ocupada, le ofrece las tres más cercanas de ese día. Con un día o una franja («mañana a la tarde») ofrece tres horarios repartidos, y sin lugar ese día pregunta otro. Servicio, día y horario se eligen también con botones.",{"id":4802,"title":4803,"titles":4804,"content":4805,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-cambia-la-hora-antes-de-confirmar-el-turno","¿Qué pasa si el cliente cambia la hora antes de confirmar el turno?",[234],"El bot suelta el horario anterior y muestra un resumen nuevo con la hora nueva. El sí solo confirma lo último que el cliente vio.",{"id":4807,"title":4808,"titles":4809,"content":4810,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-pide-otro-día-para-un-pedido-que-todavía-no-tiene-horario","¿Qué pasa si el cliente pide otro día para un pedido que todavía no tiene horario?",[234],"El bot no fija el día de un pedido: le dice que el cambio de día lo coordina el equipo y pasa la conversación a una persona (fuera de horario, te queda en «Requiere atención» y le dice cuándo vuelve el equipo). El pedido no cambia; el día que pidió lo ves en la conversación, en el Inbox.",{"id":4812,"title":4813,"titles":4814,"content":4815,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-le-pregunta-el-bot-al-cliente-si-el-servicio-tiene-un-formulario","¿Qué le pregunta el bot al cliente si el servicio tiene un formulario?",[234],"Después de elegir el horario, solo los campos obligatorios que le tocan al cliente, uno por uno y con botones si el campo tiene opciones. Los campos del equipo nunca se le preguntan; lo que no es válido se vuelve a preguntar. Lo contestado queda en la reserva (Agenda). Lo que el cliente ya dijo al pedir el turno («primera consulta mañana a las 10, por OSDE») no se le vuelve a preguntar: aparece en el resumen antes del sí (F3-450).",{"id":4817,"title":4818,"titles":4819,"content":4820,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-pide-el-bot-la-dirección-de-un-turno-a-domicilio","¿Cómo pide el bot la dirección de un turno a domicilio?",[234],"Reserva el horario 10 minutos y pide el lugar: local o domicilio si el servicio deja elegir, la dirección guardada (si hay varias, el cliente elige), una escrita o la ubicación compartida. Si la calle está en varias ciudades, pregunta la ciudad una sola vez. El resumen muestra la dirección y, si el cliente la cambia antes del sí, el bot arma un resumen nuevo.",{"id":4822,"title":4823,"titles":4824,"content":4825,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-cancela-a-mitad-de-un-turno","¿Qué pasa si el cliente cancela a mitad de un turno?",[234],"Si mientras el bot le pide un dato del formulario, la dirección o el sí del resumen escribe «cancelar», «no, dejá» u «olvidate», el bot suelta el horario y no reserva nada. Una pregunta al costado («¿aceptan tarjeta?») no se guarda como respuesta: el bot la contesta y vuelve a preguntar.",{"id":4827,"title":4828,"titles":4829,"content":4830,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-bot-no-entiende-al-cliente","¿Qué pasa si el bot no entiende al cliente?",[234],"Si la respuesta no aclara lo que preguntó (por ejemplo, «agua» cuando vendés dos), no repite el mismo mensaje: vuelve a preguntar nombrando la diferencia («¿el de 20 L o el de 12 L?») y después pide el número de la opción. Si a la tercera respuesta sigue sin avanzar, pasa la conversación a una persona del equipo. Un mensaje reenviado enseguida no se toma dos veces.",{"id":4832,"title":4833,"titles":4834,"content":4835,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-dice-una-cantidad-sin-decir-el-producto","¿Qué pasa si el cliente dice una cantidad sin decir el producto?",[234],"El bot la guarda y pregunta de cuál, también si en el mismo mensaje pidió otra cosa («quiero 3 y uno de 20»: pregunta de cuál son los 3 y el de 20 queda). Si el número es una medida de tu catálogo («quiero de 12»), lo toma como esa medida y pregunta cuántos.",{"id":4837,"title":4838,"titles":4839,"content":4840,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-hace-el-bot-si-un-cliente-me-manda-dos-ubicaciones-juntas","¿Qué hace el bot si un cliente me manda dos ubicaciones juntas?",[234],"No elige por él: le pregunta cuál guardar como su dirección, con un botón por ubicación y «Ninguna». Una ubicación suelta se guarda solo si el cliente responde que sí; la ves en su ficha.",{"id":4842,"title":4843,"titles":4844,"content":4845,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-servicio-con-horario-tiene-productos-opcionales","¿Qué pasa si el servicio con horario tiene productos opcionales?",[234],"El bot reserva el turno sin productos; los productos los sumás vos en la tarea. Lo ves en Tareas.",{"id":4847,"title":4848,"titles":4849,"content":4850,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-servicio-con-horario-exige-productos","¿Qué pasa si el servicio con horario exige productos?",[234],"El bot no lo reserva por chat: le ofrece al cliente hablar con una persona. Se reserva desde el panel o la página de reservas.",{"id":4852,"title":4853,"titles":4854,"content":4855,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-cambio-un-servicio-mientras-un-cliente-confirma-un-pedido","¿Qué pasa si cambio un servicio mientras un cliente confirma un pedido?",[234],"Si el servicio pasó a llevar productos o lo desactivaste, el bot olvida ese pedido y le pide al cliente que vuelva a pedir; no se crea nada. Si solo cambió el precio o el formulario, el bot le muestra un resumen nuevo y espera otro sí.",{"id":4857,"title":4858,"titles":4859,"content":4860,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-bot-falla-en-medio-de-una-conversación","¿Qué pasa si el bot falla en medio de una conversación?",[234],"Lo que estaba haciendo se deshace y la conversación pasa a una persona: la ves en el Inbox.",{"id":4862,"title":4863,"titles":4864,"content":4865,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-le-pide-a-mi-cliente-lo-que-falta-en-una-etapa","¿El bot le pide a mi cliente lo que falta en una etapa?",[234],"Sí. Si la tarea nació en una conversación y su etapa tiene ítems o botones que ve el cliente, el bot se los pregunta por ese chat, uno por uno, y la avanza al terminar. La firma y la foto las completa tu equipo. Lo ves en la actividad de la tarea como «Cliente por chat».",{"id":4867,"title":4868,"titles":4869,"content":4870,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-equipo-avanza-la-tarea-mientras-el-cliente-contesta","¿Qué pasa si el equipo avanza la tarea mientras el cliente contesta?",[234],"Gana lo que hizo el equipo: el bot avisa una vez que la tarea ya avanzó y no vuelve a preguntar. Después de 24 horas en la etapa, el bot deja de pedirlo.",{"id":4872,"title":4873,"titles":4874,"content":4875,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-mi-cliente-pregunta-otra-cosa-mientras-el-bot-le-pide-los-datos-de-una-etapa","¿Qué pasa si mi cliente pregunta otra cosa mientras el bot le pide los datos de una etapa?",[234],"El bot contesta la consulta y vuelve a la pregunta de la etapa. Si el cliente hace tres consultas seguidas sin contestarla (también las que el bot contesta solo, como el horario o los precios), o dice «no, dejá», el bot deja de pedirla en esa etapa sin pasar la conversación a una persona: el bot sigue atendiendo y la conversación aparece en Requiere atención del Inbox para que tu equipo pida lo que falta.",{"id":4877,"title":4878,"titles":4879,"content":4880,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-cuando-marco-o-en-una-respuesta-de-la-ia","¿Qué pasa cuando marco 👎 o 🐞 en una respuesta de la IA?",[234],"Nos llega tu marca con los datos técnicos de esa respuesta (no la conversación) para revisarla. 👎 es «no me sirvió»; 🐞, «esto es un error» y le avisa al equipo de Fiuit. Están en cada respuesta de Wagy y, en el Inbox, en las del bot (Dueño, Encargado y colaborador). Se borran a los 90 días.",{"id":4882,"title":4883,"titles":4884,"content":4885,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-vuelve-a-pedir-el-turno-antes-de-confirmar","¿Qué pasa si el cliente vuelve a pedir el turno antes de confirmar?",[234],"Si repite lo mismo, el bot le recuerda el resumen y el horario sigue reservado para él. Si pide otro horario, otro profesional u otro servicio, el bot busca sin soltar el anterior, lo suelta recién cuando el nuevo quedó reservado (si otro cliente lo ocupó, el anterior sigue siendo suyo), le avisa cuál soltó y muestra un resumen nuevo: nunca quedan dos horarios tomados a la vez. Una consulta sobre otro servicio («¿tienen barba?», «¿hay lugar para barba el viernes?») no cambia el turno aunque el bot muestre horarios: solo cambia si el cliente elige uno. Si el mensaje pide y pregunta a la vez («¿me reservás barba mañana a las 16?», «quiero turno para barba, ¿cuánto sale?»), el bot contesta lo que puede y pregunta si cambia el turno: sin un sí, el turno se conserva. Si mientras elige dice «cancelar» o «no», el bot suelta también el horario que tenía apartado y se lo avisa.",{"id":4887,"title":4888,"titles":4889,"content":4890,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-pide-el-cliente-hablar-con-una-persona","¿Cómo pide el cliente hablar con una persona?",[234],"Con cualquier frase común: «quiero hablar con una persona», «me podés pasar con alguien?», «me passa pra um atendente», «connect me with a person». Gana a cualquier pedido o turno a medias y la conversación aparece en el Inbox.",{"id":4892,"title":4893,"titles":4894,"content":4895,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-se-acuerda-de-lo-que-hablé-con-el-cliente-ayer","¿El bot se acuerda de lo que hablé con el cliente ayer?",[234],"No: si pasaron más de 30 minutos desde el último mensaje, el bot arranca de cero (como Wagy). La conversación completa sigue en el Inbox para tu equipo. Si el último mensaje del bot era una pregunta de algo a medias (un pedido, un turno, un resumen esperando el sí), el bot ve esa charla para entender la respuesta aunque haya pasado más tiempo. Un pedido a medias se retoma tal cual durante 2 horas y un turno a medias durante 30 minutos; el horario reservado se libera a los 10 minutos sin confirmar, así que el bot puede tener que ofrecer otro. Los datos del cliente (nombre, direcciones, lo que suele pedir) no se pierden.",{"id":4897,"title":4898,"titles":4899,"content":4900,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#puedo-agendar-canchas-o-la-capacidad-de-mi-local-sin-cargar-personas","¿Puedo agendar canchas o la capacidad de mi local sin cargar personas?",[234],"Sí. Cargá un lugar con capacidad (por ejemplo, «entran 3 autos por franja») o una cancha por espacio, sin ninguna persona. El bot ofrece los horarios libres y nombra la cancha o el lugar sin «con»: «a las 09:00 · Cancha 1». Lo configurás en Mi negocio → Equipo y recursos → Lugares y equipos.",{"id":4902,"title":4903,"titles":4904,"content":4905,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-reservan-mis-clientes-un-servicio-de-día-completo","¿Cómo reservan mis clientes un servicio de día completo?",[234],"Eligen el día, no la hora: el bot les ofrece «todo el día» y les dice desde qué hora pueden dejarlo. Entran tantos por día como lugares atendés a la vez. Hoy se ofrece mientras siga abierto; para días futuros se respeta la anticipación que configuraste en Mi negocio → Servicios. La estadía termina al cierre de ese día, aunque el siguiente abra a continuación. Si corregís la dirección, se conserva todo el día siempre que la nueva zona cubra ese horario y los mismos recursos y tenga cupo.",{"id":4907,"title":4908,"titles":4909,"content":4910,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-un-trabajo-no-se-termina-en-el-día","¿Qué pasa si un trabajo no se termina en el día?",[234],"Si ya lo empezaste, sigue ocupando su lugar los días siguientes hasta que lo completás (hasta 7 días). Con 3 lugares y un auto sin terminar, al otro día el bot ofrece 2. Vale para el lugar, las canchas y los servicios de día completo, no para un turno con una persona (aunque use una sala o un sillón).",{"id":4912,"title":4913,"titles":4914,"content":4915,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-pide-algo-que-no-está-en-el-catálogo","¿Qué pasa si el cliente pide algo que no está en el catálogo?",[234],"El bot puede tomar una solicitud con un flujo habilitado para clientes: pregunta los datos y muestra el resumen antes de crear la tarea. Ante la duda, pregunta qué quiere. En Inbox podés ver la conversación y su tarea.",{"id":4917,"title":4918,"titles":4919,"content":4920,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-pide-productos-de-dos-modalidades-distintas","¿Qué pasa si pide productos de dos modalidades distintas?",[234],"Se arman pedidos separados, uno después del otro, con un resumen y una confirmación para cada uno. En las tareas ves cada pedido con su propio recorrido.",{"id":4922,"title":4923,"titles":4924,"content":4925,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-domicilio-no-se-puede-atender-en-el-horario-elegido","¿Qué pasa si el domicilio no se puede atender en el horario elegido?",[234],"El bot libera ese horario y conserva la dirección elegida. El sí a buscar otro horario solo muestra alternativas; la reserva espera el sí al resumen nuevo. En Inbox podés seguir la conversación y la reserva.",{"id":4927,"title":4928,"titles":4929,"content":4930,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-escribe-otra-dirección-frente-al-resumen-del-pedido","¿Qué pasa si el cliente escribe otra dirección frente al resumen del pedido?",[234],"El bot cambia el destino y muestra un resumen nuevo antes de pedir otro sí. El pedido conserva sus productos; en Inbox ves la corrección y el resumen aceptado.",{"id":4932,"title":4933,"titles":4934,"content":4935,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-pregunta-no-tenés-soda-durante-un-pedido","¿Qué pasa si el cliente pregunta «no tenés soda?» durante un pedido?",[234],"El bot toma el producto como elección y pregunta cuántos quiere, sin quitar productos ni confirmar. Después muestra el resumen nuevo y espera un sí; lo ves en la conversación de Inbox.",{"id":4937,"title":4938,"titles":4939,"content":4940,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-un-audio-no-se-puede-transcribir-por-cuota-de-ia-o-pausa","¿Qué pasa si un audio no se puede transcribir por cuota de IA o pausa?",[234],"El bot avisa que no pudo escuchar el audio y pide texto u opciones. Si hay un pedido o turno abierto, repite la pregunta pendiente sin confirmar nada; si no, ofrece el menú sin IA. La conversación sigue en modo bot y la ves en Inbox.",{"id":4942,"title":4943,"titles":4944,"content":4945,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-formulario-pide-elegir-varias-opciones-de-una-letra","¿Qué pasa si el formulario pide elegir varias opciones de una letra?",[234],"El cliente puede responder «A y B» o separar las letras con comas; una letra sola vale si cumple el mínimo pedido. La «a» dentro de una frase no selecciona A. Las respuestas se ven en el resumen antes del sí y en la conversación de Inbox.",{"id":4947,"title":4948,"titles":4949,"content":4950,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-cuando-el-proyecto-se-acerca-al-tope-de-ia-del-mes","¿Qué pasa cuando el proyecto se acerca al tope de IA del mes?",[234],"Desde el 80 % del uso de IA del mes, si la IA tarda, el bot la reemplaza solo con opciones económicas. Desde el 95 %, no la reemplaza: si tarda demasiado, el bot sigue con opciones y reglas, sin confirmar nada que el cliente no haya aceptado. Ves el consumo en Configuración → Plan.",{"id":4952,"title":4953,"titles":4954,"content":4955,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-manda-las-fotos-de-mis-productos","¿El bot manda las fotos de mis productos?",[234],"Sí, si el producto tiene foto: la manda después del texto cuando ofrece productos, cuando pregunta «¿De cuál?» y en el resumen del pedido, en Telegram y en WhatsApp por la API oficial. El texto con las opciones no cambia y, si una foto falla, el pedido sigue igual. Lo apagás en Atención → Bot → Personalidad.",{"id":4957,"title":4958,"titles":4959,"content":4960,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-responde-el-bot-si-un-cliente-pregunta-los-precios","¿Qué responde el bot si un cliente pregunta los precios?",[234],"Le muestra lo que tu bot ofrece con su precio, el link de «Qué vende el bot» y una pregunta para seguir (reservar, elegir un plan o hablar con una persona). Si nombra algo puntual, le da el precio de eso. Lo que tiene precio 0 y un formulario sale «a consultar». Se configura en Atención → Bot.",{"id":4962,"title":4963,"titles":4964,"content":4965,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-responde-el-bot-si-el-cliente-pide-algo-que-no-ofrece","¿Qué responde el bot si el cliente pide algo que no ofrece?",[234],"Nunca contesta «no hay» y nada más: le dice qué sí ofrece (turnos, pedidos o planes, una línea por tipo) y que escribiendo «humano» lo pasa con tu equipo. Si tu bot no ofrece nada, le ofrece información de tu negocio o pasarlo con el equipo. Los planes los informa con su precio y, para contratar, da tu link o lo pasa con el equipo. Se configura en Atención → Bot.",{"id":4967,"title":4968,"titles":4969,"content":4970,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-ofrece-el-bot-a-un-cliente-que-tiene-una-tarea-en-curso","¿Qué ofrece el bot a un cliente que tiene una tarea en curso?",[234],"Lo que diga la etapa en la que está esa tarea («En esta etapa el bot ofrece»: todo, algunos tipos o algunos ítems). Si tiene varias, cuenta la que espera una respuesta suya en ese chat o, si no, la más reciente. Nunca ofrece algo que tu bot no vende o que apagaste para el bot. Se configura en Mi negocio → Etapas, en cada etapa, o pidiéndoselo a Wagy («en Nuevo, solo planes»); en Atención → Bot, «Hoy tu bot ofrece» → «En la etapa…» muestra lo que ve un cliente en cada etapa.",{"id":4972,"title":4973,"titles":4974,"content":4975,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-sitio-web-se-publica-solo","¿El sitio web se publica solo?",[234],"No. Nace apagada y su dirección no existe para nadie (ni para Google) hasta que la publicás en Atención → Sitio web o se lo pedís a Wagy. Apagada, responde igual que una dirección que nunca existió.",{"id":4977,"title":4978,"titles":4979,"content":4980,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#por-qué-un-servicio-no-aparece-en-mi-web","¿Por qué un servicio no aparece en mi web?",[234],"La web muestra lo mismo que ofrece el bot: el tipo tiene que estar marcado en «Qué vende el bot» y el ítem con «El bot lo ofrece». Cambiás eso y cambia la web; sus preguntas frecuentes también son las del bot.",{"id":4982,"title":4983,"titles":4984,"content":4985,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#por-qué-mi-web-está-en-fiuitapp-y-no-en-fiuitcom","¿Por qué mi web está en fiuit.app y no en fiuit.com?",[234],"Las webs de los negocios viven en su propio dominio, aparte del sitio y del panel de Fiuit: así lo que publica cada negocio queda separado de tu cuenta. Tu dirección es tunegocio.fiuit.app y la ves en Atención → Sitio web.",{"id":4987,"title":4988,"titles":4989,"content":4990,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#mis-clientes-pueden-pagar-la-cuota-de-su-plan-por-chat","¿Mis clientes pueden pagar la cuota de su plan por chat?",[234],"Sí. Si escribe «quiero pagar la cuota», el bot le manda el link de pago de la cuota pendiente de su membresía por el saldo que calcula Fiuit (si ya tiene uno vigente, no manda otro). Sin Mercado Pago, le muestra tus datos para pagar y el botón «Ya pagué», que solo te avisa para que revises el pago. La cuota de un club o de un paquete, o la de una membresía con tarjeta, el bot la dice con el monto y te pasa la charla. Ves y registrás el cobro en la tarea de la cuota.",{"id":4992,"title":4993,"titles":4994,"content":4995,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#un-cliente-puede-suscribirse-a-un-plan-por-chat","¿Un cliente puede suscribirse a un plan por chat?",[234],"Sí, a una membresía que tu bot ofrece. Le muestra el plan, el precio por mes, la primera cuota (el precio entero) y el día en que vence la siguiente, y la suscripción queda hecha cuando responde SÍ en otro mensaje. Por chat siempre es una suscripción de Mercado Pago, aunque en el panel la cobres a mano o por link: el bot le pide el email de su cuenta de Mercado Pago y le manda el link para autorizar la tarjeta; la primera cuota se debita al autorizarla y después cada mes, sola. Nunca le manda un link de pago único. Sin el cobro con tarjeta activo en tu proyecto, la membresía la cierra tu equipo. Por el chat de tu web no se vende: antes hay que validar su teléfono. Paquetes y clubes los cierra tu equipo. Lo ves en Clientes, en la ficha del cliente.",{"id":4997,"title":4998,"titles":4999,"content":5000,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-un-cliente-cancela-su-suscripción-en-mercado-pago","¿Qué pasa si un cliente cancela su suscripción en Mercado Pago?",[234],"La membresía sigue hasta el fin del mes que ya pagó y recién ahí se da de baja; no se le cobra otro mes. Si no tenía un mes pagado vigente, se da de baja en el momento. Lo ves en la ficha del cliente, en su membresía.",{"id":5002,"title":5003,"titles":5004,"content":5005,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cuándo-vence-la-cuota-siguiente-de-una-membresía","¿Cuándo vence la cuota siguiente de una membresía?",[234],"El mismo día del mes siguiente; si ese día no existe, el último día del mes. Después vuelve al día de inicio: una membresía que empieza el 31\u002F01 vence el 28\u002F02, el 31\u002F03 y el 30\u002F04. Lo ves en la ficha del cliente, en su membresía.",{"id":5007,"title":5008,"titles":5009,"content":5010,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-con-el-link-viejo-si-cambio-el-subdominio-de-mi-web","¿Qué pasa con el link viejo si cambio el subdominio de mi web?",[234],"Deja de andar al instante y no se redirige: quien lo abra ve una página que no existe. Si la web está publicada, Fiuit te pide aceptar ese aviso antes de cambiarlo. Se cambia en Atención → Sitio web.",{"id":5012,"title":5013,"titles":5014,"content":5015,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-con-el-link-de-reservas-de-siempre-si-publico-mi-web","¿Qué pasa con el link de reservas de siempre si publico mi web?",[234],"Te lleva a la dirección de tu web (tunegocio.fiuit.app). Si la despublicás, vuelve a ser la página de reservas de antes.",{"id":5017,"title":5018,"titles":5019,"content":5020,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#fiuit-puede-apagar-mi-web","¿Fiuit puede apagar mi web?",[234],"Sí, si suplanta a Fiuit u otro negocio o tiene contenido abusivo. Fiuit la revoca con un motivo y no podés volver a publicarla hasta que la restaure; después la publicás vos de nuevo.",{"id":5022,"title":5023,"titles":5024,"content":5025,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#mis-clientes-pueden-dar-de-baja-su-plan-por-chat","¿Mis clientes pueden dar de baja su plan por chat?",[234],"Sí. Si escribe «quiero dar de baja el club» (o su membresía, su paquete o su plan), el bot le muestra qué pasa: no se generan más cuotas y las que ya están siguen, con el monto pendiente a la vista. Recién con su SÍ da de baja el plan, igual que «Cancelar» en el panel (con tarjeta, también en Mercado Pago). La cuota impaga no se perdona: la ves Por cobrar en la tarea de la cuota.",{"id":5027,"title":5028,"titles":5029,"content":5030,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-mercado-pago-no-responde-cuando-doy-de-baja-un-plan-con-tarjeta","¿Qué pasa si Mercado Pago no responde cuando doy de baja un plan con tarjeta?",[234],"La baja se hace igual: no se generan más cuotas. Fiuit vuelve a pedir la baja en Mercado Pago sola, cada pocos minutos, hasta que la confirma.",{"id":5032,"title":5033,"titles":5034,"content":5035,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#los-asistentes-de-ia-pueden-reservar-en-mi-negocio","¿Los asistentes de IA pueden reservar en mi negocio?",[234],"Sí, si tu web está publicada y «Aceptar agentes de IA» está encendido (viene encendido). Un asistente como ChatGPT o Claude puede encontrar tu negocio, ver lo que ofrece tu bot y sus horarios, y pedir un turno. Si lo apagás, tu negocio no aparece ni recibe pedidos de asistentes.",{"id":5037,"title":5038,"titles":5039,"content":5040,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-un-asistente-de-ia-pide-un-turno-y-la-persona-no-confirma","¿Qué pasa si un asistente de IA pide un turno y la persona no confirma?",[234],"El horario queda apartado unos minutos y la persona recibe un código por WhatsApp, Telegram o email. Sin ese código el turno no se confirma y el horario se libera solo. El asistente nunca confirma por su cuenta.",{"id":5042,"title":5043,"titles":5044,"content":5045,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cómo-aparece-mi-negocio-cuando-alguien-busca-con-un-asistente-de-ia","¿Cómo aparece mi negocio cuando alguien busca con un asistente de IA?",[234],"Por tu nombre o tu dirección exacta, siempre. En búsquedas como «pádel en Uruguaiana», solo si tenés «Aparecer en el directorio de Fiuit» encendido. El orden es neutral (cercanía, horario libre y si estás abierto) y se muestra solo tu nombre, zona, lo que ofrecés y el link a tu web.",{"id":5047,"title":5048,"titles":5049,"content":5050,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#un-asistente-de-ia-puede-conversar-con-mi-bot","¿Un asistente de IA puede conversar con mi bot?",[234],"Sí, si tu web está publicada y «Aceptar agentes de IA» está encendido. Responde tu mismo bot, con tus reglas, y la charla aparece en el Inbox marcada «Vía IA»: tu equipo la puede tomar como cualquier otra. Gasta uso de IA como cualquier canal.",{"id":5052,"title":5053,"titles":5054,"content":5055,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#un-asistente-de-ia-puede-reservar-conversando-con-mi-bot","¿Un asistente de IA puede reservar conversando con mi bot?",[234],"Sí, pero el «sí» del asistente no confirma: necesita el nombre y el teléfono o email de la persona, a quien le llega un código. La reserva queda recién con ese código. Cancelar, reprogramar o pedir sin horario no se hace desde un asistente.",{"id":5057,"title":5058,"titles":5059,"content":5060,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-cuando-la-persona-confirma-el-código-que-pidió-su-asistente-de-ia","¿Qué pasa cuando la persona confirma el código que pidió su asistente de IA?",[234],"La charla no se corta: durante 24 horas sigue en la ficha de esa persona. El bot la saluda por su nombre, conoce sus reservas, pedidos y planes, y puede reservar o pedir de nuevo sin otro código. Cancelar, reprogramar y pagar piden un código nuevo cada vez. Pasadas las 24 horas, o en una charla nueva, el asistente vuelve a empezar sin datos de la persona.",{"id":5062,"title":5063,"titles":5064,"content":5065,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#la-persona-puede-cerrar-la-sesión-de-su-asistente-de-ia-antes-de-las-24-horas","¿La persona puede cerrar la sesión de su asistente de IA antes de las 24 horas?",[234],"Sí: le pide a su asistente que cierre la sesión. Desde ahí, esa charla ya no ve sus datos y lo que siga empieza como una charla nueva.",{"id":5067,"title":5068,"titles":5069,"content":5070,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-cambio-el-precio-en-mi-tienda-online-después-de-que-el-bot-lo-ofreció","¿Qué pasa si cambio el precio en mi tienda online después de que el bot lo ofreció?",[234],"El pedido conserva el precio que el bot le mostró al cliente, y el total lo calcula Fiuit. Si el cliente vuelve a buscar, el bot le avisa el precio nuevo. Se configura en Mi negocio → Catálogo → Buscar en mi tienda.",{"id":5072,"title":5073,"titles":5074,"content":5075,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-mi-tienda-online-no-responde","¿Qué pasa si mi tienda online no responde?",[234],"El bot le dice al cliente que no puede consultar la tienda en ese momento y le ofrece hablar con una persona del equipo. Nunca muestra productos que no pudo confirmar.",{"id":5077,"title":5078,"titles":5079,"content":5080,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-un-cliente-me-escribe-su-email-o-teléfono-en-el-chat","¿Qué pasa si un cliente me escribe su email o teléfono en el chat?",[234],"El bot le pregunta si lo guarda para reconocerlo cuando vuelva y lo guarda solo si responde que sí. Si tu negocio puede mandarlo, también le llega un código: con el código correcto, en la ficha ves el contacto «Confirmado con código».",{"id":5082,"title":5083,"titles":5084,"content":5085,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-código-del-chat-une-solo-dos-fichas-del-mismo-cliente","¿El código del chat une solo dos fichas del mismo cliente?",[234],"No. Prueba que el contacto le llega, pero la unión la confirmás vos (Dueño o Encargado) desde «Posible mismo cliente» en la ficha. El bot nunca le muestra al cliente el historial de otra ficha.",{"id":5087,"title":5088,"titles":5089,"content":5090,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#el-bot-recomienda-qué-contratar-según-lo-que-le-cuenta-el-cliente","¿El bot recomienda qué contratar según lo que le cuenta el cliente?",[234],"Sí. Si el cliente contó algo («somos 3 en el local», «tengo un club de 200 socios») y pregunta precios o qué plan le sirve, el bot recomienda hasta tres opciones de lo que ofrece, con su precio y una razón corta, y le deja ver todas. El precio sale de tu catálogo, nunca lo escribe la IA. Si no contó nada, muestra la lista de siempre.",{"id":5092,"title":5093,"titles":5094,"content":5095,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#dónde-lleva-el-link-que-manda-el-bot-para-cada-servicio-producto-o-plan","¿Dónde lleva el link que manda el bot para cada servicio, producto o plan?",[234],"Al link que cargues en ese servicio, producto o plan (Catálogo, en su ficha). Si no tiene, el bot usa el link de «Qué vende el bot» (Atención → Bot).",{"id":5097,"title":4031,"titles":5098,"content":4033,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-se-agota-el-canal-de-asistentes-de-ia",[234],{"id":5100,"title":5101,"titles":5102,"content":5103,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-cuando-un-cliente-vuelve-a-pedir-lo-mismo","¿Qué pasa cuando un cliente vuelve a pedir lo mismo?",[234],"El bot le propone su último pedido de ese servicio ya armado y lo crea solo si el cliente dice que sí; con un no, le pregunta qué cambiar. En un turno, le pregunta una vez si usa los datos de la última vez. El precio es siempre el de hoy.",{"id":5105,"title":5106,"titles":5107,"content":5108,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#puedo-evitar-que-el-bot-recuerde-un-dato-sensible","¿Puedo evitar que el bot recuerde un dato sensible?",[234],"Sí: en Mi negocio → Catálogo → un servicio → Formulario del servicio, tildá «No recordar (dato sensible)» en ese campo. El bot lo pregunta cada vez.",{"id":5110,"title":5111,"titles":5112,"content":5113,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#cuántos-flujos-por-intención-puedo-tener-y-qué-pasa-si-una-palabra-clave-coincide-con-un-servicio","¿Cuántos flujos por intención puedo tener y qué pasa si una palabra clave coincide con un servicio?",[234],"Hasta 8 activos; para activar otro, desactivá uno. El bot mira primero el catálogo, así que una palabra clave igual a un servicio, producto o plan no se guarda y te decimos con cuál choca. Probá las frases con Probar en Mi negocio → Etapas → «Cuándo entrar» antes de guardar.",{"id":5115,"title":5116,"titles":5117,"content":5118,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#puedo-ver-por-dónde-pasó-una-conversación-del-bot-y-dónde-se-cortó","¿Puedo ver por dónde pasó una conversación del bot y dónde se cortó?",[234],"Sí. En la conversación del Inbox, la línea Recorrido dice por qué parte del bot pasó (por ejemplo, Productos) y cómo terminó: creó una tarea, se respondió, pasó a una persona o se cortó en un paso (como la dirección). En Atención → Bot → Atención del bot ves, por rama, cuántas conversaciones de los últimos 7 días terminaron en cada caso. No se guarda lo que escribió el cliente.",{"id":5120,"title":5121,"titles":5122,"content":5123,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#puedo-pedirle-a-wagy-que-cambie-qué-ofrece-primero-el-bot-o-que-deje-de-vender-algo","¿Puedo pedirle a Wagy que cambie qué ofrece primero el bot o que deje de vender algo?",[234],"Sí. Pedile «poné reservas primero», «los reclamos al final» o «saludá con…» y te muestra la atención del bot antes y después; «no vendas suscripciones por chat» es lo mismo que desmarcar ese tipo en «Qué vende el bot». Cambia solo cuando confirmás y lo podés deshacer. Preguntas, Mis turnos y pedidos y Hablar con una persona no se pausan: Wagy te explica por qué. Lo mismo se hace en Atención → Bot → Atención del bot.",{"id":5125,"title":5126,"titles":5127,"content":5128,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-avisa-que-transfirió-y-no-hay-un-cobro-abierto-por-chat","¿Qué pasa si el cliente avisa que transfirió y no hay un cobro abierto por chat?",[234],"El bot le dice que avisó al equipo para revisar el pago y marca la conversación como Requiere atención en Inbox. También reconoce el aviso si termina con «¿la recibiste?». Decir que pagó no registra un cobro ni confirma que el dinero llegó; revisalo antes de registrarlo.",{"id":5130,"title":5131,"titles":5132,"content":5133,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-es-la-tarjeta-que-aparece-al-abrir-wagy-cada-día","¿Qué es la tarjeta que aparece al abrir Wagy cada día?",[234],"La primera vez que abrís Wagy en el día aparece una tarjeta con lo más importante: algo urgente (atrasados, por agendar, chats sin responder, cobros vencidos), si no una buena noticia, si no una función de «Primeros pasos» para probar. Se descarta con un toque y no vuelve hasta mañana.",{"id":5135,"title":5136,"titles":5137,"content":5138,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fbot#qué-pasa-si-el-cliente-escribe-un-día-de-la-semana-y-un-número-que-no-coinciden","¿Qué pasa si el cliente escribe un día de la semana y un número que no coinciden?",[234],"El bot pregunta cuál quiso decir antes de reservar o cambiar el turno. Por ejemplo, si el 27 cae martes y escribe «miércoles 27», ofrece aclarar «martes 27 o miércoles 28». No elige otra semana por su cuenta. La charla queda visible en Inbox.",{"id":239,"title":238,"titles":5140,"content":5141,"level":257},[],"Respuestas rápidas sobre tomar y soltar tareas, resultados, permisos del equipo y evidencia de trabajo.",{"id":5143,"title":5144,"titles":5145,"content":5146,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-cobrar-a-veces-es-el-botón-principal","¿Por qué «Cobrar» a veces es el botón principal?",[238],"La tarea tiene un solo botón principal. Casi siempre es el de la etapa, al pie, y Cobrar va con contorno al lado del saldo. Cobrar pasa a ser el principal cuando la etapa pide cobrar (por ejemplo, para concluir falta el cobro) o cuando la tarea ya se cerró y quedó saldo. Sin saldo no aparece. No hay nada que configurar.",{"id":5148,"title":5149,"titles":5150,"content":5151,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-el-cliente-contesta-el-presupuesto","¿Qué pasa cuando el cliente contesta el presupuesto?",[238],"El dueño, los encargados y quien tiene la tarea reciben el aviso «Juan aprobó el presupuesto» (o «lo rechazó») en la campana, push y Telegram; quien cargó la respuesta a mano no se avisa a sí mismo. Si llegan muchos juntos, se agrupan en uno. Lo configurás en Mi cuenta → Mis avisos.",{"id":5153,"title":5154,"titles":5155,"content":5156,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-el-cliente-no-me-escribió-en-las-últimas-24-horas-y-le-mando-un-presupuesto","¿Qué pasa si el cliente no me escribió en las últimas 24 horas y le mando un presupuesto?",[238],"Con WhatsApp oficial le llega igual, con la plantilla aprobada del presupuesto: el total y la indicación de responder «Apruebo» o «No, gracias». Dentro de las 24 horas recibe el presupuesto completo con esos dos botones. Si la plantilla todavía no está aprobada, no sale y la conversación queda marcada para tu equipo.",{"id":5158,"title":5159,"titles":5160,"content":5161,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-se-calcula-la-fecha-de-entrega","¿Cómo se calcula la fecha de entrega?",[238],"Si el servicio tiene Plazo de entrega (en Opciones avanzadas), la tarea nace con la fecha del alta más esos días hábiles, contando solo los días en que abrís: un viernes + 3 da el miércoles. Sin plazo, la tarea nace sin fecha y la podés cargar con un toque en su encabezado.",{"id":5163,"title":5164,"titles":5165,"content":5166,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#el-cliente-se-entera-si-cambia-la-fecha-de-entrega","¿El cliente se entera si cambia la fecha de entrega?",[238],"Sí. La ve en la confirmación y en sus avisos, y si la cambiás le llega un aviso con la nueva fecha. Se apaga junto con los avisos de reprogramación.",{"id":5168,"title":5169,"titles":5170,"content":5171,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cuándo-una-tarea-queda-atrasada","¿Cuándo una tarea queda atrasada?",[238],"Si tiene fecha de entrega, cuando pasa esa fecha (más la tolerancia de tu negocio) y sigue abierta. Si no tiene, cuando termina su horario sin cerrarse.",{"id":5173,"title":5174,"titles":5175,"content":5176,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#quién-ve-el-costo-y-el-margen","¿Quién ve el costo y el margen?",[238],"Solo el dueño, y ocultos de entrada: en el bloque de ítems de la tarea tocá Ver costos. Los demás roles no ven el botón y tampoco los reciben por la API, el MCP ni Wagy; quien cargó una línea sigue viendo el costo de esa línea para registrarlo como gasto. El margen por tarea de Finanzas también es solo del dueño.",{"id":5178,"title":5179,"titles":5180,"content":5181,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-cobro-una-tarea-con-ítems","¿Cómo cobro una tarea con ítems?",[238],"Debajo del total aparece Saldo pendiente con un solo Cobrar: cobra lo que falta de toda la tarea (ítems y servicio) y, si ya hubo pagos, solo el resto. Elegís la forma de pago al tocarlo.",{"id":5183,"title":5184,"titles":5185,"content":5186,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#mandar-el-presupuesto-al-cliente-es-obligatorio","¿Mandar el presupuesto al cliente es obligatorio?",[238],"No. Es opcional: lo manda una etapa con Pedir aprobación del presupuesto o el botón Mandar presupuesto al cliente del bloque de ítems. El botón principal de cada etapa dice debajo a qué etapa avanza y si el cliente recibe el presupuesto.",{"id":5188,"title":5189,"titles":5190,"content":5191,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-elegir-qué-muestra-la-tarea-en-mi-negocio","¿Puedo elegir qué muestra la tarea en mi negocio?",[238],"Sí. En cada flujo, Mi negocio → Etapas → Cómo se ve la tarea elige qué va arriba (Cuándo, Destino, Pedido, nada o automático) y si se ven los chips del cliente y del cobro. Cada rubro arranca con sus valores y lo podés cambiar cuando quieras, también pidiéndoselo a Wagy. No cambia etapas ni mueve tareas.",{"id":5193,"title":5194,"titles":5195,"content":5196,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-apago-ítems","¿Qué pasa si apago «Ítems»?",[238],"Las tareas de ese flujo dejan de ofrecer «+ Agregar ítem». Lo que ya estaba cargado se sigue viendo y no se borra nada.",{"id":5198,"title":5199,"titles":5200,"content":5201,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-no-veo-en-hoy-todas-las-cuotas-de-mis-socios","¿Por qué no veo en Hoy todas las cuotas de mis socios?",[238],"Hoy y Trabajo muestran solo las cuotas que vencieron o vencen dentro de los días de aviso del plan; las pagadas, las perdonadas y las que se cobran solas con tarjeta no aparecen, salvo que el cobro falle. Todas están en Dinero → Por cobrar y en la cuenta del cliente. En vez de un aviso por cuota, te llega uno por día con cuántas vencieron.",{"id":5203,"title":5204,"titles":5205,"content":5206,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-sumo-un-repuesto-o-un-material-que-no-está-en-el-catálogo","¿Cómo sumo un repuesto o un material que no está en el catálogo?",[238],"En la tarea tocá + Agregar y escribí: el buscador muestra productos y servicios del catálogo y los ítems que usaste antes. Si no hay nada, elegí Agregar «texto», poné precio y cantidad (el costo es opcional) y marcá si es producto o servicio. Después te pregunta si lo guardás en el catálogo; si lo usás tres veces, te sugiere guardarlo como producto. Dueño, gerente y el técnico en sus tareas pueden hacerlo, también desde Focus y la Mini App con + Agregar repuesto, y Wagy lo propone para que confirmes.",{"id":5208,"title":5209,"titles":5210,"content":5211,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-una-etapa-pide-aprobar-el-presupuesto","¿Qué pasa cuando una etapa pide aprobar el presupuesto?",[238],"Al entrar la tarea a esa etapa, el cliente recibe solo el presupuesto con «Apruebo» y «No, gracias». Según lo que conteste, la tarea sigue por el camino que elegiste para «aprobó» o para «rechazó». Si contesta por teléfono o en persona, registrás la respuesta en la tarea; vale la primera.",{"id":5213,"title":5214,"titles":5215,"content":5216,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-el-cliente-contesta-el-presupuesto-con-una-pregunta","¿Qué pasa si el cliente contesta el presupuesto con una pregunta?",[238],"No se aprueba ni se rechaza: el bot le dice que lo ve el equipo y la conversación queda en Requiere atención. Solo cuentan el botón o un «sí» o «no» claro.",{"id":5218,"title":5219,"titles":5220,"content":5221,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-el-bot-le-ofrece-algo-al-cliente-en-el-chat","¿Qué pasa cuando el bot le ofrece algo al cliente en el chat?",[238],"Si la etapa ofrece algo al cliente, el bot se lo propone con el nombre y el precio del catálogo y lo suma solo si el cliente contesta que sí en otro mensaje; si dice que no, la etapa sigue igual. Un servicio con horario se reserva en uno de los horarios que le ofrece el bot, después de su turno, o queda por agendar. Lo aceptado se ve en la tarea, en Trabajo.",{"id":5223,"title":5224,"titles":5225,"content":5226,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-veo-pendientes-si-no-hay-ninguno","¿Cómo veo pendientes si no hay ninguno?",[238],"En Trabajo, el menú Ver y los filtros siguen disponibles aunque no haya tareas. Podés elegir Pendientes sin un número en cero; si no hay resultados, el aviso indica la vista elegida y te deja Ver todo o Quitar filtros. Tu vista se recuerda como antes.",{"id":5228,"title":5229,"titles":5230,"content":5231,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-color-tiene-una-etapa-si-no-elijo-ninguno","¿Qué color tiene una etapa si no elijo ninguno?",[238],"Se elige solo: verde al completar, rojo al cancelar o no presentarse, gris mientras espera y azul, ámbar o violeta al avanzar. El Dueño puede elegir otro color de la paleta en Mi negocio → Etapas → Color de la etapa, o pedírselo a Wagy y confirmar el cambio. Las etapas siempre muestran también su nombre.",{"id":5233,"title":5234,"titles":5235,"content":5236,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-le-pido-a-wagy-varios-cambios-juntos","¿Qué pasa cuando le pido a Wagy varios cambios juntos?",[238],"Wagy arma la lista (por ejemplo, «estas 7 atrasadas pasan a mañana») y, si algo le llega al cliente, la confirmás una sola vez. Después aplica de a uno, cada uno con su cuenta regresiva: podés Frenar este, Pausar todo y Reanudar, y deshacer cada cambio por separado. Lo que no entra (sin horario libre o con un conflicto) queda marcado para que elijas, sin frenar al resto.",{"id":5238,"title":5239,"titles":5240,"content":5241,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-cambia-el-total-de-un-presupuesto-aceptado","¿Qué pasa si cambia el total de un presupuesto aceptado?",[238],"El cliente recibe el presupuesto actualizado con la diferencia y los subtotales de servicios y productos. El equipo registra su respuesta: hasta que apruebe, la diferencia no sale por link, QR, Point, tarjeta ni cobro manual; rechazar tampoco la libera.",{"id":5243,"title":5244,"titles":5245,"content":5246,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#el-costo-de-un-repuesto-se-convierte-solo-en-un-gasto","¿El costo de un repuesto se convierte solo en un gasto?",[238],"No. El costo es privado y sirve para calcular el margen; el cliente nunca lo ve. «Registrar como gasto» carga costo por cantidad en Finanzas y, si lo hace un técnico, espera aprobación.",{"id":5248,"title":5249,"titles":5250,"content":5251,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-al-unificar-dos-personas-del-equipo","¿Qué pasa al unificar dos personas del equipo?",[238],"Desde la ficha, dueño o encargado toca «Unificar con…», elige cuál queda, revisa qué se mueve y confirma. Las tareas, equipos y accesos pasan a la que queda; la otra queda inactiva y no se puede deshacer. Conserva su horario, o toma el de la otra si no tenía; la cuenta pasa solo si no tenía una. Dos cuentas distintas, tareas superpuestas o cupo insuficiente impiden confirmar sin cambiar nada. Las comisiones de tareas terminadas y las liquidaciones conservan su atribución; si reabrís y completás otra vez, cuenta la asignación del nuevo cierre. Por ahora se usa desde el panel.",{"id":5253,"title":5254,"titles":5255,"content":5256,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-hace-wagy-solo-sin-pedirme-confirmación","¿Qué hace Wagy solo, sin pedirme confirmación?",[238],"Solo lo que es interno y se puede deshacer, como agendar una tarea sin seña ni aviso al cliente: te muestra «Lo hago en 10 s» con Deshacer y Ahora. Lo que cobra o le escribe al cliente siempre te pide confirmación. Dueño y Encargado eligen qué hace solo en Wagy expandido → Lo hace solo, y ahí mismo ven Lo que hizo Wagy para deshacerlo.",{"id":5258,"title":5259,"titles":5260,"content":5261,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-cambiar-las-etapas-del-flujo-de-servicio-que-viene-con-fiuit","¿Puedo cambiar las etapas del flujo de servicio que viene con Fiuit?",[238],"Sí. En el servicio, en Etapas: Flujo de servicio, tocá Editar etapas: editás la copia de tu negocio, que pasan a usar todos los servicios que usaban el original. Volver al original la deja de lado cuando quieras.",{"id":5263,"title":5264,"titles":5265,"content":5266,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-mis-tareas-abiertas-si-vuelvo-al-flujo-original","¿Qué pasa con mis tareas abiertas si vuelvo al flujo original?",[238],"No se mueven: terminan con las etapas que tenían. Las tareas nuevas ya nacen en el flujo original. Tu copia no se borra: queda «Sin uso» y la borrás a mano si querés.",{"id":5268,"title":5269,"titles":5270,"content":5271,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-borrar-un-flujo-que-ya-no-uso","¿Puedo borrar un flujo que ya no uso?",[238],"Sí, si ningún servicio lo usa y nunca tuvo tareas: en Mi negocio → Etapas (avanzado) aparece «Sin uso» con Borrar. Si tuvo tareas, desactivalo.",{"id":5273,"title":5274,"titles":5275,"content":5276,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-veo-cuánto-se-usa-cada-flujo-y-en-qué-etapa-se-traban-las-tareas","¿Dónde veo cuánto se usa cada flujo y en qué etapa se traban las tareas?",[238],"En Mi negocio → Etapas cada flujo muestra sus últimos 7 días frente a los 7 anteriores. Al entrar a uno ves las últimas 12 semanas día por día (tocá un día para abrir en Trabajo las tareas que entraron) y, en «Dónde se traban», la etapa con más espera destacada. No cuentan las tareas de prueba; el colaborador ve solo las suyas.",{"id":5278,"title":5279,"titles":5280,"content":5281,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-ve-el-cliente-si-mi-servicio-es-a-distancia","¿Qué ve el cliente si mi servicio es a distancia?",[238],"No se le pide ni se le muestra ninguna dirección: ni en el chat, ni en la reserva web, ni en los avisos. La tarea tampoco guarda la dirección de tu negocio ni aparece en el mapa. Lo elegís en el servicio, en Opciones avanzadas → Dónde se presta → A distancia.",{"id":5283,"title":5284,"titles":5285,"content":5286,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-le-llega-al-cliente-el-enlace-de-la-videollamada","¿Cómo le llega al cliente el enlace de la videollamada?",[238],"Cargalo en el mismo lugar, en Enlace de la reunión: el bot lo manda al confirmar y el recordatorio lo repite. Es el mismo enlace para todas las tareas del servicio; Fiuit no lo genera, pegá el de tu sala.",{"id":5288,"title":5289,"titles":5290,"content":5291,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-funciona-el-modo-focus-de-hoy","¿Cómo funciona el modo Focus de Hoy?",[238],"En Hoy, con el botón ▶ Focus, hacés tus tareas de a una, a pantalla completa. Ahí también reprogramás, apagás el sonido o probás el silbido en el iPhone. Todo el detalle está en Focus, una tarea a la vez.",{"id":5293,"title":5294,"titles":5295,"content":5296,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-no-se-agranda-toda-la-página-cuando-pellizco-en-el-celular","¿Por qué no se agranda toda la página cuando pellizco en el celular?",[238],"El panel conserva su tamaño para evitar acercamientos accidentales, también en la app instalada y al escribir.\nEn Trabajo podés acercar el mapa o el calendario dentro de su visor; el editor de fotos también conserva su zoom.",{"id":5298,"title":5299,"titles":5300,"content":5301,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cuántos-productos-puede-tener-un-pedido","¿Cuántos productos puede tener un pedido?",[238],"Hasta 72 productos (líneas) por pedido. Es un límite del motor de reservas para que cada pedido se guarde y se cobre con el importe exacto. Lo configurás en el servicio, en los límites de productos del formulario.",{"id":5303,"title":5304,"titles":5305,"content":5306,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-dos-personas-tocan-tomar-a-la-vez","¿Qué pasa si dos personas tocan «Tomar» a la vez?",[238],"Se la queda la primera y la segunda recibe un aviso. Una tarea nunca se asigna dos veces. La ves asignada en Trabajo y en Hoy de quien la tomó.",{"id":5308,"title":5309,"titles":5310,"content":5311,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-quien-tomó-la-tarea-no-puede-hacerla","¿Qué pasa si quien tomó la tarea no puede hacerla?",[238],"Puede soltarla, siempre que no haya empezado: vuelve a Sin asignar para que otra persona la tome.",{"id":5313,"title":5314,"titles":5315,"content":5316,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-el-cliente-no-estaba-o-no-quiere-el-pedido","¿Qué pasa si el cliente no estaba o no quiere el pedido?",[238],"Se cierra la tarea con el resultado ausente («no estaba») o rechazada («no quiere»), con un motivo opcional. Queda registrado en la tarea.",{"id":5318,"title":5319,"titles":5320,"content":5321,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-una-acción-falla-a-mitad-de-camino","¿Qué pasa si una acción falla a mitad de camino?",[238],"No queda nada a medias: todo lo que hace una acción ocurre junto o no ocurre.",{"id":5323,"title":5324,"titles":5325,"content":5326,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-una-persona-del-equipo-intenta-asignar-tareas","¿Qué pasa si una persona del equipo intenta asignar tareas?",[238],"No puede, aunque el botón existiera: una acción nunca da permisos extra. Solo el Dueño y el Encargado asignan. Ver Roles y permisos.",{"id":5328,"title":5329,"titles":5330,"content":5331,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-datos-del-cliente-ve-el-equipo","¿Qué datos del cliente ve el equipo?",[238],"Una persona del equipo ve las tareas asignadas a ella y las que su equipo puede tomar, pero sin el teléfono ni el email del cliente hasta que la toma. En entregas, antes de tomar solo se ve la zona aproximada.",{"id":5333,"title":5334,"titles":5335,"content":5336,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-las-fotos-y-ubicaciones-que-sube-el-equipo","¿Qué pasa con las fotos y ubicaciones que sube el equipo?",[238],"Son privadas: solo las ve quien tiene acceso a esa tarea, los enlaces de descarga vencen a los 60 segundos y se borran a los 30 días por defecto. El Dueño o el Encargado pueden borrar una ubicación.",{"id":5338,"title":5339,"titles":5340,"content":5341,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-no-veo-una-pestaña-o-un-filtro","¿Por qué no veo una pestaña o un filtro?",[238],"Porque «si no tiene nada, no se ve»: el calendario solo aparece si hay recursos con agenda, el mapa si hay tareas con ubicación, la línea de tiempo si hay recursos activos, y Mías si tenés agenda propia. Ver Trabajo y acciones.",{"id":5343,"title":5344,"titles":5345,"content":5346,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-pauso-o-duplico-un-servicio","¿Qué pasa si pauso o duplico un servicio?",[238],"Siempre podés pausarlo: deja de ofrecerse para nuevos pedidos y las tareas existentes siguen, incluidas reprogramación, ventana, reasignación, completar y cancelar con los mismos controles. Pausar y desactivar son lo mismo. Duplicar crea una copia pausada con horario independiente, sin tareas ni historia; equipos y productos siguen en el catálogo. Las etapas vigentes empiezan en versión uno; sin permiso de edición usa las etapas base y avisa. La copia no conserva el vínculo administrado con el modelo de negocio. Revisá y reactivá en Servicios.",{"id":5348,"title":5349,"titles":5350,"content":5351,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-las-unidades-vencidas-o-un-consumo-fallido-del-paquete","¿Qué pasa con las unidades vencidas o un consumo fallido del paquete?",[238],"Lo vencido se pierde, incluidas las unidades reservadas: la tarea vuelve al valor anterior y se avisa al equipo. Antes de completar se valida el vencimiento aunque el proceso automático se demore. Si falla consumir, no se completa ni se cobra; conserva estado y reserva para reintentar. Dueño o Encargado puede Extender vencimiento manualmente con motivo en la ficha del cliente.",{"id":5353,"title":5354,"titles":5355,"content":5356,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-editar-o-reabrir-una-tarea-cubierta-por-un-plan","¿Puedo editar o reabrir una tarea cubierta por un plan?",[238],"No cambia cliente, servicio ni importe y no admite ajustes de cobro; las notas internas sí. Primero Quitar plan en la ficha del cliente. Reabrir una cancelada la deja a precio normal. Reabrir una completada devuelve la unidad y su asignación de cobro; si sigue vigente queda reservada y completar de nuevo consume una sola unidad.",{"id":5358,"title":5359,"titles":5360,"content":5361,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-se-cobra-o-cancela-un-paquete-o-club","¿Cómo se cobra o cancela un paquete o club?",[238],"Cada período es una cuota: una tarea Por cobrar con el precio del plan, que ves en la ficha del cliente y en Por cobrar. Se cobra como cualquier tarea (registrar cobro o link de pago); al vender podés cobrar la primera en el momento, y la siguiente aparece sola antes de vencer. Cancelar no crea más cuotas y no toca las ya creadas; devolver es opcional y solo devuelve lo no usado de la cuota del período vigente cobrada a mano. Lo vencido no se devuelve. Si la caja de ese efectivo ya está cerrada, la devolución se bloquea.",{"id":5363,"title":5364,"titles":5365,"content":5366,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cuándo-vence-la-cuota-de-un-plan-y-cuándo-aparece","¿Cuándo vence la cuota de un plan y cuándo aparece?",[238],"Lo define el plan: el día de la venta de cada mes, el 1, el último día del mes o un día fijo del 1 al 28. Cada cuota aparece unos días antes de vencer (5 por defecto; en el plan va de 0 a 28) y recién es deuda desde que vence. Se elige al crear o editar el plan.",{"id":5368,"title":5369,"titles":5370,"content":5371,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cuánto-se-cobra-la-primera-cuota-si-vendo-a-mitad-de-mes","¿Cuánto se cobra la primera cuota si vendo a mitad de mes?",[238],"La parte proporcional a los días que faltan hasta el próximo vencimiento, redondeada, salvo que el plan tenga Cobrar la primera cuota completa. Las sesiones del primer período van completas. Si vendés dentro de los días de aviso, también nace la cuota siguiente.",{"id":5373,"title":5374,"titles":5375,"content":5376,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-mis-clientes-si-cambio-el-precio-de-un-plan","¿Qué pasa con mis clientes si cambio el precio de un plan?",[238],"El precio nuevo rige para la próxima cuota de cada suscripción vigente; las cuotas ya creadas no cambian. Al cliente no se le avisa: lo ve en su próxima cuota. Al guardar te mostramos a cuántas suscripciones les llega. Si querés otro precio solo para algunos clientes, creá otro plan.",{"id":5378,"title":5379,"titles":5380,"content":5381,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-registrar-el-pago-de-una-cuota-con-wagy","¿Puedo registrar el pago de una cuota con Wagy?",[238],"Sí: decile «registrá el pago del club de Ana» y cómo pagó. Wagy busca la cuota más vieja por cobrar de ese plan, te muestra el monto (el saldo de esa tarea) y la cobra cuando confirmás; necesitás permiso para registrar cobros. No se deshace desde Wagy: el cobro se anula desde la tarea.",{"id":5383,"title":5384,"titles":5385,"content":5386,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#wagy-me-dice-cuánto-es-la-primera-cuota-antes-de-vender-un-plan","¿Wagy me dice cuánto es la primera cuota antes de vender un plan?",[238],"Sí. Antes de confirmar la venta, el plan de Wagy muestra el monto de la primera cuota calculado por Fiuit (proporcional o completa) y si nace también la siguiente. Al cancelar una suscripción, lista las cuotas abiertas, que no cambian.",{"id":5388,"title":5389,"titles":5390,"content":5391,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-no-se-descargan-los-estilos-del-panel","¿Qué pasa si no se descargan los estilos del panel?",[238],"Permanece la pantalla de carga con los colores de tu tema; no se muestra el panel sin estilos. A los ocho segundos ofrece Recargar. Si la descarga termina después, continúa; con movimiento reducido conserva la misma protección.",{"id":5393,"title":5394,"titles":5395,"content":5396,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-cambian-las-novedades-entre-el-panel-y-el-sitio","¿Por qué cambian las Novedades entre el panel y el sitio?",[238],"El panel agrupa cambios por entrega y explica dónde están, cómo usarlos y quién tiene permiso. El sitio explica el beneficio para el negocio. Ambos vienen de la misma actualización.",{"id":5398,"title":5399,"titles":5400,"content":5401,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-alguien-cambia-una-vista-del-equipo-en-trabajo","¿Qué pasa si alguien cambia una vista del equipo en Trabajo?",[238],"Sus cambios quedan solo para esa persona, como «modificada», y nunca tocan la vista del equipo. Solo Dueño o Encargado pueden guardar encima; el resto puede usar Guardar como mía. Lo ves en Trabajo → Vista.",{"id":5403,"title":5404,"titles":5405,"content":5406,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-se-borra-la-vista-que-yo-usaba","¿Qué pasa si se borra la vista que yo usaba?",[238],"Trabajo abre la vista por defecto, sin error: el trabajo no se toca, solo la vista. Lo mismo si dejás de tener acceso a una vista compartida.",{"id":5408,"title":5409,"titles":5410,"content":5411,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-veo-mientras-carga-el-panel","¿Qué veo mientras carga el panel?",[238],"La pantalla de carga acompaña tu tema hasta que los estilos estén listos; si ya estaban descargados, el panel los aprovecha. Las letras se acomodan cuando termina su descarga sin frenar el arranque.",{"id":5413,"title":5414,"titles":5415,"content":5416,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-los-avisos-cuando-recreo-los-datos-de-ejemplo","¿Qué pasa con los avisos cuando recreo los datos de ejemplo?",[238],"Podés recrear tus datos de ejemplo sin que los avisos anteriores interrumpan los siguientes. Los datos de ejemplo siguen sin enviar mensajes a clientes reales.",{"id":5418,"title":5419,"titles":5420,"content":5421,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-un-cliente-no-paga-el-club","¿Qué pasa si un cliente no paga el club?",[238],"El club queda impago y avisa a Dueño y Encargado (no al resto del equipo), pero permite usar unidades vigentes por defecto: decide el negocio. Lo ves en Mi negocio → Catálogo → plan → Suscriptores y en la ficha del cliente; Dueño o Encargado puede Pausar beneficios o Reactivar. La pausa impide reservar unidades nuevas, sin cancelar tareas ni borrar deuda. Si una tarea ya estaba cubierta por el club, al completarla (o moverla a la última etapa) se libera la unidad y la tarea se cobra a precio normal: nunca queda trabada.",{"id":5423,"title":5424,"titles":5425,"content":5426,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#pagar-el-club-reactiva-los-beneficios-pausados","¿Pagar el club reactiva los beneficios pausados?",[238],"Cobrar una cuota salda ese mes; el club vuelve a estar al día cuando no queda ninguna cuota vencida sin cobrar. Si estaba pausado, sigue pausado hasta que elijas Reactivar en la ficha del cliente. Pagar no repone unidades gastadas ni vencidas.",{"id":5428,"title":5429,"titles":5430,"content":5431,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-la-deuda-si-cancelo-un-club-impago","¿Qué pasa con la deuda si cancelo un club impago?",[238],"Cancelar no crea más cuotas y no toca las ya creadas: una cuota impaga sigue siendo deuda y la cobrás (o la perdonás cerrándola sin completar) como cualquier tarea, desde la ficha del cliente o Por cobrar. Las tareas futuras que usaban el club vuelven a su precio normal.",{"id":5433,"title":5434,"titles":5435,"content":5436,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-no-veo-la-pestaña-de-salas-o-vehículos-en-equipo","¿Por qué no veo la pestaña de salas o vehículos en Equipo?",[238],"Salas y vehículos están juntos en Mi negocio → Equipo y recursos. Elegí el tipo en el filtro o tocá Agregar para crear uno; no tienen pestañas separadas. Personas conserva los recursos humanos y las cuentas del equipo.",{"id":5438,"title":5439,"titles":5440,"content":5441,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-pongo-la-foto-de-alguien-del-equipo","¿Cómo pongo la foto de alguien del equipo?",[238],"Si la persona tiene cuenta con foto, se usa esa. Si no, quien es Dueño o Encargado abre su perfil en Personas y toca la cámara. La foto se ve en sus tareas y comisiones.",{"id":5443,"title":5444,"titles":5445,"content":5446,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-ve-una-persona-del-equipo-de-su-perfil","¿Qué ve una persona del equipo de su perfil?",[238],"Desde Mi cuenta abre su perfil: foto, teléfono, horario, servicios y comisión vigente. No puede editarlo ni ver los teléfonos o fotos de otras personas.",{"id":5448,"title":5449,"titles":5450,"content":5451,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-veo-secciones-vacías-en-el-panel","¿Por qué veo secciones vacías en el panel?",[238],"Para que puedas descubrir cada función desde el primer día. Ocultamos el ruido (contadores en cero, filtros sin opciones), pero nunca la entrada a una función: Finanzas, Inbox, Calendario o los paquetes del cliente se ven aunque estén vacíos y te dicen qué hacer para empezar, con un botón que te lleva.",{"id":5453,"title":5454,"titles":5455,"content":5456,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-cambio-la-comisión-de-un-servicio","¿Cómo cambio la comisión de un servicio?",[238],"En Mi negocio → Catálogo, abrí el servicio y tocá Editar: el campo Comisión muestra la que rige (la del servicio o la general). Al cambiarla, la anterior termina y la nueva rige desde hoy; el historial queda en Finanzas → Comisiones.",{"id":5458,"title":5459,"titles":5460,"content":5461,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-veo-los-números-de-dinero-de-un-servicio-un-cliente-o-una-persona-del-equipo","¿Dónde veo los números de dinero de un servicio, un cliente o una persona del equipo?",[238],"En su pantalla, en la card Finanzas (servicio, ficha del cliente, perfil de la persona y Resultados). Para el detalle, tocá Ver en Finanzas →: se abre Finanzas ya filtrado y el filtro se quita tocando su chip. Sin permiso de finanzas o con el dinero oculto, la card no aparece.",{"id":5463,"title":5464,"titles":5465,"content":5466,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-cancelo-una-tarea-cuya-etapa-pide-datos-para-cancelar","¿Qué pasa si cancelo una tarea cuya etapa pide datos para cancelar?",[238],"Se cancela igual: cancelar nunca se bloquea, desde el panel, el bot, la API o una integración. Los datos que muestra la pantalla al cancelar se piden pero son opcionales, y se guardan en la tarea si los completás. Reprogramar tampoco se bloquea. Se configura en Mi negocio → Catálogo → Etapas.",{"id":5468,"title":5469,"titles":5470,"content":5471,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-los-avisos-de-etapa-si-una-tarea-se-cancela-o-se-paga-sola","¿Qué pasa con los avisos de etapa si una tarea se cancela o se paga sola?",[238],"Cuentan igual que si la movieras vos: la tarea pasa a la etapa que corresponde, se envían sus avisos y corren tus automatizaciones por etapa, una sola vez. En el historial de la tarea el cambio figura con origen «Sistema». Si alguien compartía su ubicación en vivo, recibe el aviso de fin.",{"id":5473,"title":5474,"titles":5475,"content":5476,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-las-tareas-si-bloqueo-un-horario-donde-ya-había-reservas","¿Qué pasa con las tareas si bloqueo un horario donde ya había reservas?",[238],"No se mueven ni se cancelan. Antes de bloquear, el diálogo te muestra las tareas que ya caen en ese horario para que reprogrames las que quieras o las dejes como están. Lo ves en Trabajo → Calendario al bloquear.",{"id":5478,"title":5479,"titles":5480,"content":5481,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-al-bloquear-a-una-persona-se-bloqueó-también-otra","¿Por qué al bloquear a una persona se bloqueó también otra?",[238],"Porque comparten el mismo horario: el bloqueo vale para todos los que lo usan, y el diálogo te avisa con sus nombres antes de guardar. Para bloquear solo a una, dale su propio horario en su ficha.",{"id":5483,"title":5484,"titles":5485,"content":5486,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-pausar-un-servicio-solo-unos-días","¿Puedo pausar un servicio solo unos días?",[238],"Sí, con Pausar por un rango en el servicio: ese servicio no se ofrece en esas fechas. Las personas y los espacios que lo atienden no se bloquean: siguen disponibles para sus otros servicios. Podés reabrirlo cuando quieras desde la misma pantalla.",{"id":5488,"title":5489,"titles":5490,"content":5491,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-ver-hoy-agrupado-por-persona-o-por-servicio","¿Puedo ver Hoy agrupado por persona o por servicio?",[238],"Sí. En Hoy tocá Ver y elegí Agrupar por (recurso, servicio, cliente, etapa…) y Ordenar por. Por defecto se ve por momento (Ahora, En curso, Completadas). Tu elección se recuerda; la Lista de Trabajo usa el mismo selector.",{"id":5493,"title":5494,"titles":5495,"content":5496,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-dejo-la-configuración-inicial-para-después","¿Qué pasa si dejo la configuración inicial para después?",[238],"En Preparemos tu proyecto tocá Omitir por ahora y confirmá: tus respuestas quedan guardadas y entrás al panel. En Hoy aparece Retomar configuración para seguir donde quedaste.",{"id":5498,"title":5499,"titles":5500,"content":5501,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-la-configuración-inicial-se-responde-con-tarjetas","¿Por qué la configuración inicial se responde con tarjetas?",[238],"Cada dato se carga en su tarjeta (equipo, horarios con hora de inicio y fin, servicios) para que nada se complete con algo que no escribiste. La vista previa marca lo que cargaste como «sin aplicar» hasta que confirmás el plan.",{"id":5503,"title":5504,"titles":5505,"content":5506,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-los-precios-que-escribo-en-la-configuración-inicial","¿Qué pasa con los precios que escribo en la configuración inicial?",[238],"Si contestás escribiendo, Fiuit toma solo los precios que escribiste y te los muestra en el plan antes de confirmar. Lo que no se entiende (por ejemplo «5 lucas») se completa en la tarjeta. Nada se aplica hasta que confirmás.",{"id":5508,"title":5509,"titles":5510,"content":5511,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-tengo-más-canchas-o-personas-que-las-que-permite-mi-plan","¿Qué pasa si tengo más canchas o personas que las que permite mi plan?",[238],"La tarjeta te muestra el tope de tu plan para que elijas qué cargar; no se aplica nada de más. Después podés cambiar de plan desde Configuración.",{"id":5513,"title":5514,"titles":5515,"content":5516,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-pido-hablar-con-una-persona-durante-la-configuración-inicial","¿Qué pasa si pido hablar con una persona durante la configuración inicial?",[238],"Al confirmar, el equipo de Fiuit recibe tu pedido con el motivo y te escribe en breve al email de tu cuenta (o por WhatsApp, si cargaste el teléfono del negocio). Tus respuestas quedan guardadas y podés seguir mientras tanto; tocarlo de nuevo no manda otro aviso. Lo encontrás arriba en el chat y en el formulario.",{"id":5518,"title":5519,"titles":5520,"content":5521,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-en-la-configuración-inicial-saco-mi-nombre-y-escribo-otra-persona","¿Qué pasa si en la configuración inicial saco mi nombre y escribo otra persona?",[238],"Tu agenda queda inactiva (no atendés y no cuenta para el tope del plan) y la otra persona se crea aparte, con su agenda. Solo un nombre parecido al tuyo («Javi» → «Javier») corrige tu nombre. Lo ves en el plan de Preparemos tu proyecto antes de confirmar.",{"id":5523,"title":5524,"titles":5525,"content":5526,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-cuenta-para-el-tope-de-recursos-de-mi-plan","¿Qué cuenta para el tope de recursos de mi plan?",[238],"Todo lo que se agenda y está activo: canchas, salas, el lugar, equipos y personas. Tu agenda, si no atendés, no cuenta.",{"id":5528,"title":5529,"titles":5530,"content":5531,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-reserva-una-clase-con-profe-en-un-club-con-canchas","¿Qué reserva una clase con profe en un club con canchas?",[238],"A la vez, a alguien del equipo y una cancha libre; la renta de una cancha reserva solo la cancha. Lo ves en el plan antes de confirmar y lo cambiás después en el servicio.",{"id":5533,"title":5534,"titles":5535,"content":5536,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-veo-cuánto-vende-cada-servicio-producto-o-paquete","¿Dónde veo cuánto vende cada servicio, producto o paquete?",[238],"Abrí el servicio, o tocá el nombre del producto o del paquete en Catálogo: ves las cantidades por día, semana o mes frente al período anterior. Los importes no están ahí: tocá Ver en Finanzas para verlos.",{"id":5538,"title":5539,"titles":5540,"content":5541,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#quién-ve-el-rendimiento-de-un-servicio-producto-o-paquete","¿Quién ve el rendimiento de un servicio, producto o paquete?",[238],"El dueño y el encargado ven los totales del negocio en el detalle de cada uno. El colaborador ve solo Lo tuyo: lo que atendió él, en servicios y productos (no en paquetes ni club), nunca los totales del negocio. Son solo cantidades: los importes se ven en Finanzas, y solo con ese permiso.",{"id":5543,"title":5544,"titles":5545,"content":5546,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-llego-al-límite-de-personas-del-equipo","¿Qué pasa si llego al límite de personas del equipo?",[238],"Tu plan puede tener un límite de Equipo (quienes atienden) y otro de usuarios del panel (Dueño, Encargado y Lectura); las invitaciones pendientes también cuentan. Al llegar al límite, Equipo te avisa y no deja invitar ni cambiar a alguien de grupo. Podés desactivar a alguien para liberar un lugar o pedirle a Fiuit que lo amplíe.",{"id":5548,"title":5549,"titles":5550,"content":5551,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cambian-mis-condiciones-si-fiuit-cambia-los-valores-por-defecto","¿Cambian mis condiciones si Fiuit cambia los valores por defecto?",[238],"No. Tu proyecto conserva sus condiciones. Los nuevos valores solo se copian al crear proyectos nuevos. Ves los cupos en Equipo y la comisión vigente en Financiero, solo lectura.",{"id":5553,"title":5554,"titles":5555,"content":5556,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-pedirle-a-wagy-que-agende-una-tarea","¿Puedo pedirle a Wagy que agende una tarea?",[238],"Sí. Escribile, por ejemplo, «anotale una entrega a Pedro para mañana a la tarde»: Wagy busca al cliente, te ofrece dos o tres horarios libres como botones y, cuando elegís uno, te muestra el cambio para confirmar. Nada se crea hasta que confirmás, y podés deshacerlo desde el mismo chat. Lo usan Dueño y Encargado.",{"id":5558,"title":5559,"titles":5560,"content":5561,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-escribo-una-zona-con-una-sigla","¿Qué pasa si escribo una zona con una sigla?",[238],"Podés escribir «SP», «AR» o «CABA»: Fiuit ubica esa zona al guardarla y la compara con la dirección del cliente. Si no la puede comparar, no rechaza el pedido ni lo marca fuera de cobertura. Lo ves en Zonas → Cobertura.",{"id":5563,"title":5564,"titles":5565,"content":5566,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-hay-una-calle-con-el-mismo-nombre-en-otra-ciudad","¿Qué pasa si hay una calle con el mismo nombre en otra ciudad?",[238],"Si el cliente no nombró otra ciudad, el bot no toma la calle de la otra ciudad: deja la dirección como la escribió, sin ubicación, para que la revises.",{"id":5568,"title":5569,"titles":5570,"content":5571,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-desactivo-las-zonas-a-las-que-llega-una-entrega","¿Qué pasa si desactivo las zonas a las que llega una entrega?",[238],"Si en «Llega a» no queda ninguna zona activa, la entrega vuelve a llegar a todas tus zonas.",{"id":5573,"title":5574,"titles":5575,"content":5576,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-el-mapa-de-la-confirmación-dice-aproximado","¿Por qué el mapa de la confirmación dice «aproximado»?",[238],"Porque el punto no es exacto (por ejemplo, el centro de la calle). El cliente lo revisa antes de confirmar.",{"id":5578,"title":5579,"titles":5580,"content":5581,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-elegir-cualquier-color-para-mi-marca","¿Puedo elegir cualquier color para mi marca?",[238],"No: elegís uno de los 11 colores de la paleta de Fiuit (te sugerimos el más cercano a tu logo), para que todo se lea bien y no se confunda con los colores de error y éxito. Si no elegís ninguno, queda «Color de la paleta», el color principal de la paleta de tu proyecto. Lo ves en Mi negocio → Datos → Identidad.",{"id":5583,"title":5584,"titles":5585,"content":5586,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-la-paleta-del-proyecto-si-elijo-un-color-de-marca","¿Qué pasa con la paleta del proyecto si elijo un color de marca?",[238],"Se mantiene: pone los fondos y las superficies, y tu color de marca reemplaza su color principal y sus detalles. La vista previa de Apariencia del proyecto ya muestra tu color de marca.",{"id":5588,"title":5589,"titles":5590,"content":5591,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#desde-cuándo-cuenta-wagy-15-días-más-al-extender-un-paquete","¿Desde cuándo cuenta Wagy «15 días más» al extender un paquete?",[238],"Desde el vencimiento actual del paquete o club; si ya venció, desde hoy. También podés decir una fecha («hasta el 30\u002F11»): tiene que ser posterior al vencimiento actual. Extender o pausar beneficios no se puede deshacer, y Wagy te lo muestra antes de que confirmes.",{"id":5593,"title":5594,"titles":5595,"content":5596,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-cancela-un-cliente-su-turno-por-el-chat","¿Cómo cancela un cliente su turno por el chat?",[238],"Escribe «cancelar mi turno»: si tiene uno, el bot pregunta SÍ o NO; si tiene varios, los muestra como botones (o toma el que nombra: «el de barba», «el del viernes»). Solo un SÍ cancela, y la política de cancelación nunca lo frena. El bot solo ve los turnos de quien escribe; las cuotas de un plan no se cancelan por el chat. Lo ves en Calendario.",{"id":5598,"title":5599,"titles":5600,"content":5601,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-cambia-un-cliente-el-horario-de-su-turno-por-el-chat","¿Cómo cambia un cliente el horario de su turno por el chat?",[238],"Escribe, por ejemplo, «quiero pasar mi turno a mañana a las 16»: el bot ofrece horarios del mismo servicio y muestra «¿Paso tu Corte del … al …?». Con el SÍ el turno se cambia y el horario viejo queda libre; si el nuevo se ocupó antes, el turno sigue donde estaba y ofrece otros. Con la seña pendiente, primero hay que pagarla. Lo ves en Calendario.",{"id":5603,"title":5604,"titles":5605,"content":5606,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-fijar-la-zona-de-una-dirección-del-cliente","¿Puedo fijar la zona de una dirección del cliente?",[238],"Sí. En la ficha del cliente, Direcciones → Editar → Zona, elegís la zona y queda fija: al cambiar tus zonas no se recalcula y las tareas nuevas con esa dirección la usan. «Según la dirección» vuelve a calcularla sola con el área de tus zonas.",{"id":5608,"title":5609,"titles":5610,"content":5611,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-las-tareas-sin-zona-cuando-creo-una-zona","¿Qué pasa con las tareas sin zona cuando creo una zona?",[238],"Al guardar la zona (o cambiar su área), las tareas abiertas con dirección, también las atrasadas, vuelven a buscar su zona y el aviso dice cuántas quedaron con zona. Los horarios no se mueven: si una cae en una zona que no atiende ese día, la reprogramás vos. Lo ves en Mi negocio → Equipo y recursos.",{"id":5613,"title":5614,"titles":5615,"content":5616,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#tengo-que-pedir-el-código-postal-aparte-para-que-funcione-la-zona","¿Tengo que pedir el código postal aparte para que funcione la zona?",[238],"No. Si el código postal está escrito en la dirección («25 de Mayo 1530, W3230AIZ Corrientes»), cuenta; la altura de la calle nunca se toma como código postal. Una zona con «3230» o «W3230» cubre «W3230AIZ».",{"id":5618,"title":5619,"titles":5620,"content":5621,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-mover-un-turno-arrastrándolo-en-la-agenda","¿Puedo mover un turno arrastrándolo en la agenda?",[238],"Sí. En Trabajo → Calendario arrastrás el turno a otra hora, día o persona: mientras arrastrás se pintan los horarios libres y el turno se engancha al más cercano. Si lo soltás donde no entra, no se guarda y se marca en rojo con el motivo («fuera de horario», «choca con…»). Dueño y Encargado pueden «Forzar igual» fuera del horario habitual de la persona o del servicio, con confirmación; un bloqueo del día y lo ya ocupado nunca se pisan. Staff mueve solo sus turnos y a sus propias agendas. Un turno pagado se mueve igual y conserva su pago.",{"id":5623,"title":5624,"titles":5625,"content":5626,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#se-avisa-al-cliente-cuando-muevo-un-turno-y-puedo-deshacerlo","¿Se avisa al cliente cuando muevo un turno y puedo deshacerlo?",[238],"Al soltar, la confirmación trae «Avisar al cliente» marcado por defecto (el aviso de reprogramación de siempre); si lo desmarcás, se mueve sin avisar. Estirar o achicar la duración desde el borde de abajo (de a 15 minutos) se guarda directo y no avisa. Cada cambio muestra «Deshacer» en el aviso de abajo y vuelve al horario, la persona y la duración anteriores. En el celular se mantiene apretado para arrastrar y no se estira.",{"id":5628,"title":5629,"titles":5630,"content":5631,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-invito-a-alguien-por-telegram-si-no-tengo-su-número","¿Cómo invito a alguien por Telegram si no tengo su número?",[238],"En Mi negocio → Equipo y recursos → Agregar → Invitar, elegí Canal: Telegram y escribí su nombre. Te damos un enlace para mandarle por donde quieras: al abrirlo en Telegram se suma al equipo y queda vinculada. Sirve una sola vez y vence en 48 horas. WhatsApp sigue siendo el canal por defecto.",{"id":5633,"title":5634,"titles":5635,"content":5636,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-el-enlace-de-invitación-por-telegram-se-compartió-de-más","¿Qué pasa si el enlace de invitación por Telegram se compartió de más?",[238],"Lo usa la primera cuenta de Telegram que lo abre. Cuando alguien entra, te avisamos con el nombre de su cuenta (también lo ves en su fila de Personas y en su ficha); si no era quien esperabas, desactivala. Antes de que se use, anulalo en Personas → Anular invitación: el enlace deja de servir.",{"id":5638,"title":5639,"titles":5640,"content":5641,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-al-cambiar-las-etapas-de-un-servicio-cambiaron-las-de-otro","¿Por qué al cambiar las etapas de un servicio cambiaron las de otro?",[238],"Porque los dos usan el mismo flujo: las etapas son del flujo y cada servicio elige uno. Al publicar, las tareas abiertas de todos esos servicios cuya etapa ya no existe pasan a la primera etapa de su mismo estado, sin cambiar de estado ni repetir avisos. Si un servicio necesita otro recorrido, dale su propio flujo.",{"id":5643,"title":5644,"titles":5645,"content":5646,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-una-tarea-vieja-no-tiene-las-etapas-nuevas","¿Por qué una tarea vieja no tiene las etapas nuevas?",[238],"Cada tarea sigue el flujo con el que nació. Cambiar el flujo de un servicio vale para las tareas nuevas; las abiertas siguen en el suyo hasta cerrarse.",{"id":5648,"title":5649,"titles":5650,"content":5651,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-pedirle-a-wagy-que-cambie-el-flujo-de-un-servicio","¿Puedo pedirle a Wagy que cambie el flujo de un servicio?",[238],"Sí. Wagy te muestra los flujos de etapas, sus pasos y qué servicios usa cada uno, y te propone cambiar el flujo de uno o varios servicios; se aplica cuando confirmás. Vale para las tareas nuevas: las abiertas siguen en el suyo. Crear o editar un flujo se hace en Mi negocio → Etapas.",{"id":5653,"title":5654,"titles":5655,"content":5656,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-pedirle-a-wagy-que-me-arme-un-flujo-o-que-una-etapa-pida-algo","¿Puedo pedirle a Wagy que me arme un flujo o que una etapa pida algo?",[238],"Sí, si sos Dueño. Decile las etapas en orden («armá un flujo de color con ficha de salud y foto del resultado») o de qué ejemplo partir y te muestra el recorrido antes de crearlo; ningún servicio lo usa hasta que se lo asignes. También suma a una etapa lo que pedís («firma antes de cobrar», «preguntá el largo del pelo»): si no decís otra cosa, lo completa tu equipo y es obligatorio para avanzar. Todo se confirma antes y se puede deshacer; lo ves en Mi negocio → Etapas.",{"id":5658,"title":5659,"titles":5660,"content":5661,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-edito-las-etapas-de-un-servicio-ahora","¿Dónde edito las etapas de un servicio ahora?",[238],"En Mi negocio → Etapas. El flujo es el recorrido de la tarea y lo usan los servicios que lo elijan; cada servicio muestra Flujo: … con un selector y un enlace para abrirlo. Los flujos de sistema no se editan: Duplicar crea uno propio. Al publicar una versión ves, por servicio, cuántas tareas abiertas se mueven y confirmás antes de guardar. Elegir otro flujo en un servicio cambia solo las tareas nuevas.",{"id":5663,"title":5664,"titles":5665,"content":5666,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-pedirle-a-wagy-que-agregue-o-quite-una-etapa-de-un-flujo","¿Puedo pedirle a Wagy que agregue o quite una etapa de un flujo?",[238],"Sí, si sos el Dueño y el flujo es propio. Con el flujo abierto en Mi negocio → Etapas, decile «agregá Lavado después de Agendado», «sacá la foto» o «poné el lavado antes de la foto». Wagy te muestra el recorrido antes y después, cuántas tareas cambian de etapa y qué servicios lo usan (cambian todos), y se aplica cuando confirmás; si te arrepentís, lo deshacés. Un flujo de sistema no se edita: copialo y editá la copia. Los ítems, botones y avisos de cada etapa se editan en el panel.",{"id":5668,"title":5669,"titles":5670,"content":5671,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-tener-dos-botones-que-lleven-a-la-misma-etapa","¿Puedo tener dos botones que lleven a la misma etapa?",[238],"No. Cada camino de una etapa lleva a una etapa distinta: al editar los caminos en Mi negocio → Etapas solo se ofrecen los destinos que todavía no usa otro camino. Si necesitás dos salidas parecidas, creá una etapa intermedia.",{"id":5673,"title":5674,"titles":5675,"content":5676,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-aplico-una-plantilla-a-mi-flujo","¿Qué pasa si aplico una plantilla a mi flujo?",[238],"Antes de aplicarla ves qué agrega, qué cambia, qué quita y qué queda igual, y el mapa de cómo quedaría el recorrido. Se aplica solo al borrador: se publica cuando tocás Guardar y podés volver atrás desde «Versiones».",{"id":5678,"title":5679,"titles":5680,"content":5681,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-invito-a-una-persona-desde-su-ficha","¿Qué pasa cuando invito a una persona desde su ficha?",[238],"En Personas, abrí la persona y tocá Invitar a esta persona en «Acceso y enlaces»: la invitación sale con su nombre y solo su agenda. Cuando la acepta, su cuenta queda unida a esa persona (perfil, foto y «mi agenda»). Una invitación hecha desde Personas → Agregar → Invitar da permisos sobre una agenda pero no une la cuenta: quien atiende la agenda de otra persona no pasa a ser esa persona. Si la persona ya tenía otra cuenta unida, entra igual y la ficha muestra «Vinculado a otra cuenta». La cuenta se suelta al desactivarla, al quitarle esa agenda o con Desvincular en la ficha.",{"id":5683,"title":5684,"titles":5685,"content":5686,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#el-soporte-de-fiuit-ve-mis-ventas-y-cobros","¿El soporte de Fiuit ve mis ventas y cobros?",[238],"No. Cuando el equipo de Fiuit entra a tu proyecto para ayudarte, ve la agenda, las tareas, los clientes y la configuración, pero no el dinero de tu negocio: ventas, cobros, saldos, finanzas, caja, comisiones ni límites de crédito. Sí ve, como alguien con acceso de solo lectura, el valor de cada tarea, la seña y los precios del catálogo, porque los necesita para ayudarte a configurar.",{"id":5688,"title":5689,"titles":5690,"content":5691,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-ve-mi-ia-si-soy-partner","¿Qué ve mi IA si soy partner?",[238],"Si al conectar Claude o ChatGPT marcás «Ver tu cartera de partner», tu IA ve lo mismo que tu panel de partner: la próxima acción, tus clientes con su semáforo y la actividad. Solo lee conteos y estados, nunca el contenido de un negocio ni sus cobros, ni los clientes de otro partner. Se revoca en Configuración → Desarrolladores → Apps conectadas.",{"id":5693,"title":5694,"titles":5695,"content":5696,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-puede-hacer-el-partner-que-armó-mi-proyecto","¿Qué puede hacer el partner que armó mi proyecto?",[238],"Cuando aceptás el proyecto, el partner queda como Colaborador: sigue configurando y operando como un Encargado, pero no ve cobros, saldos, Finanzas, pagos ni Mercado Pago, ni administra el equipo. Lo ves en Personas y lo quitás cuando quieras; todo lo que hace queda registrado a su nombre.",{"id":5698,"title":5699,"titles":5700,"content":5701,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-el-precio-si-estiro-o-achico-una-tarea","¿Qué pasa con el precio si estiro o achico una tarea?",[238],"Si el servicio tiene Precio por tiempo, el valor de la tarea sigue a la duración nueva en proporción (el doble de tiempo, el doble de precio). No cambia si ya hay un cobro o una seña registrados, ni si ajustaste el valor a mano. Se activa en Servicios → un servicio → Opciones avanzadas.",{"id":5703,"title":5704,"titles":5705,"content":5706,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-versión-del-flujo-veo-en-el-recorrido-de-una-tarea","¿Qué versión del flujo veo en el recorrido de una tarea?",[238],"En la ficha, «Ver recorrido» conserva las versiones históricas y los nombres originales de las etapas, con cada paso, fecha y quién lo hizo. También funciona en tareas terminadas o canceladas; solo lo ve el equipo con acceso a esa tarea. Si falta el mapa histórico, ves los pasos registrados.",{"id":5708,"title":5709,"titles":5710,"content":5711,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-cargo-un-horario-que-termina-después-de-medianoche","¿Cómo cargo un horario que termina después de medianoche?",[238],"Poné la hora de cierre menor que la de apertura: 20:00 a 03:00 se guarda y se muestra 20:00 – 03:00 (+1), que cierra al día siguiente. La noche cuenta como del día en que abre, y las reservas pueden cruzar las 00:00. Para 24 horas usá 00:00 a 00:00. Lo cargás en el horario de cada recurso o servicio.",{"id":5713,"title":5714,"titles":5715,"content":5716,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-cierro-el-día-que-sigue-a-una-noche","¿Qué pasa si cierro el día que sigue a una noche?",[238],"La noche del día anterior se mantiene: cerrar el sábado no corta el viernes 20:00 – 03:00 (+1). Para quitar esa noche, cerrá el viernes. Un horario especial del sábado no puede empezar antes de que termine la noche del viernes.",{"id":5718,"title":5719,"titles":5720,"content":5721,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-agrego-algo-al-catálogo","¿Dónde agrego algo al catálogo?",[238],"En Mi negocio → Catálogo, tocá Agregar y elegí una de las opciones disponibles para tu rol. Si el catálogo está vacío, el botón aparece en el centro para ayudarte a empezar; con ítems o filtros, queda en el encabezado, sin repetirse en los resultados vacíos.",{"id":5723,"title":5724,"titles":5725,"content":5726,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-mi-agenda-si-no-atiendo-yo","¿Qué pasa con mi agenda si no atiendo yo?",[238],"Tu proyecto nace con vos cargado en el equipo. Si en la configuración inicial decís que no atendés, o que se agenda el lugar o los espacios, tu agenda queda inactiva: no se ofrece a los clientes ni cuenta para el tope de tu plan. La reactivás cuando quieras desde Equipo.",{"id":5728,"title":5729,"titles":5730,"content":5731,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#elegir-un-rubro-me-crea-servicios-o-personas-de-ejemplo","¿Elegir un rubro me crea servicios o personas de ejemplo?",[238],"No. Trae el vocabulario y las automatizaciones del rubro, apagadas. El equipo, los horarios y los servicios salen de lo que contestás en la configuración inicial.",{"id":5733,"title":5734,"titles":5735,"content":5736,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-la-configuración-inicial-muestra-un-error","¿Qué pasa si la configuración inicial muestra un error?",[238],"Tus respuestas quedan guardadas. El panel te explica qué pasó y te ofrece Reintentar o Hablar con una persona. Si el equipo que ya existe no coincide con los nombres, podés Usar el equipo actual o Revisar equipo.",{"id":5738,"title":5739,"titles":5740,"content":5741,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-corrijo-mi-nombre-cuando-atiendo-solo","¿Qué pasa si corrijo mi nombre cuando atiendo solo?",[238],"Si sos la única persona activa del equipo y confirmás una persona con un único nombre editado, se corrige tu misma agenda vinculada a la cuenta. Lo ves antes de confirmar en Configuración inicial, conservás tu equipo y podés deshacerlo.",{"id":5743,"title":5744,"titles":5745,"content":5746,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-combino-ejemplos-y-después-quiero-deshacer-uno","¿Qué pasa si combino ejemplos y después quiero deshacer uno?",[238],"Podés combinar hasta 3 ejemplos (por ejemplo, taller y lavadero). Cada uno suma, sin repetir, su vocabulario, sus recorridos, avisos apagados y servicios o productos sugeridos sin precio y apagados; nunca crea personas ni espacios. Si deshacés una parte, se quita solo lo que sigue como llegó: lo que cambiaste o ya usás se queda. Pedíselo a Wagy.",{"id":5748,"title":5749,"titles":5750,"content":5751,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-pruebo-un-flujo","¿Qué pasa si pruebo un flujo?",[238],"Nada real: «Probar flujo» recorre el borrador en pantalla, aunque no lo hayas guardado, sin guardar datos, sin avisar al equipo ni al cliente, sin cobrar y sin mandar mensajes. «Qué pasaría» te muestra los avisos y los datos que habría. Lo ve el Dueño, en Mi negocio → Etapas.",{"id":5753,"title":5754,"titles":5755,"content":5756,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-una-etapa-avanza-sola","¿Qué pasa cuando una etapa avanza sola?",[238],"Si la etapa tiene Temporizador, la tarea pasa sola por el camino elegido al vencer (a los N minutos, al terminar el turno o si el cliente no escribe) y muestra la cuenta regresiva. Con «Avanza sola al recibir el pago», pasa cuando queda pagada por completo por Mercado Pago; un pago parcial no la mueve. En el historial figura como automático; si el camino no se puede tomar, se queda donde está. Se configura en Mi negocio → Etapas.",{"id":5758,"title":5759,"titles":5760,"content":5761,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-una-etapa-avanza-sola-al-responder-o-al-completar-el-formulario","¿Qué pasa cuando una etapa avanza sola al responder o al completar el formulario?",[238],"Con «Cuando el cliente responda», la tarea pasa sola por ese camino en cuanto el cliente escribe por cualquier canal después de entrar a la etapa; un mensaje repetido no la mueve dos veces. Con «Cuando el cliente complete el formulario», pasa cuando están todos los datos obligatorios que completa el cliente en la etapa (el bot se los pide por el chat, o los carga el equipo); si falta uno, se queda. En el historial figura como automático con el motivo y, si el camino no se puede tomar, se queda donde está con el aviso «No avanzó sola». Se configura en Mi negocio → Etapas, en cada camino.",{"id":5763,"title":5764,"titles":5765,"content":5766,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-una-tarea-aparece-en-la-atención-de-control-y-de-hoy","¿Por qué una tarea aparece en la atención de Control y de Hoy?",[238],"Ambas muestran los mismos motivos: atrasos, falta de asignación u horario, zona, cobertura, dirección, avisos y evaluaciones por revisar. En Finanzas → Resultados solo se ven motivos con tareas; tocá uno para abrir Trabajo filtrado. Los atrasos respetan la tolerancia del proyecto; las evaluaciones pueden seguir pendientes después de completar la tarea.\nAl abrir un motivo, Trabajo muestra exactamente las tareas contadas: «Sin zona» excluye cobertura y «Sin asignar» excluye holds ya asignados. Limpiar filtros también quita el servicio.",{"id":5768,"title":5769,"titles":5770,"content":5771,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-mi-negocio-no-encaja-en-ningún-rubro","¿Qué pasa si mi negocio no encaja en ningún rubro?",[238],"No hace falta que encaje: tu negocio se describe con rasgos que se combinan (atiende en el local, reparte, vende productos, agenda canchas…) y Wagy te sugiere ejemplos parecidos. Si algo no está en el catálogo, Wagy lo propone al equipo de Fiuit y no tiene efecto hasta que se apruebe. Hoy esto todavía no se ve en el panel.",{"id":5773,"title":5774,"titles":5775,"content":5776,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-necesito-completar-datos-desde-la-vista-rápida","¿Qué pasa si necesito completar datos desde la vista rápida?",[238],"Elegí Abrir tarea para completar formularios, evidencia o cobros en el detalle. En Trabajo → Mapa o Calendario, la vista rápida solo ofrece acciones simples y las permitidas para tu equipo; no muestra importes.",{"id":5778,"title":1127,"titles":5779,"content":1129,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-acerco-la-línea-de-tiempo-y-abro-una-tarea",[238],{"id":5781,"title":1568,"titles":5782,"content":5783,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-organizo-personas-recursos-y-catálogo",[238],"En Mi negocio → Equipo y recursos gestionás Equipos de trabajo, con sus miembros, zonas y servicios. El rol Equipo y el acceso al panel son independientes; la invitación desde la ficha de la persona es opcional.",{"id":5785,"title":5786,"titles":5787,"content":5788,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-recupero-un-producto-archivado-o-un-plan-que-dejé-de-vender","¿Cómo recupero un producto archivado o un plan que dejé de vender?",[238],"En Mi negocio → Catálogo, elegí Inactivos \u002F archivados en Estado y tocá Reactivar. Así vuelve a ofrecerse sin perder su historial; desactivar un plan conserva sus suscriptores.",{"id":5790,"title":5791,"titles":5792,"content":5793,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-wagy-encuentra-una-característica-fuera-del-catálogo","¿Qué pasa si Wagy encuentra una característica fuera del catálogo?",[238],"Wagy prepara una propuesta y vos confirmás si la envía al equipo. Mientras se revisa queda como etiqueta propia y no cambia tus flujos ni el bot. El equipo puede aprobarla, rechazarla o unirla a otra; consultá su estado con Wagy. Una aprobación no activa el rasgo automáticamente.",{"id":5795,"title":5796,"titles":5797,"content":5798,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-una-automatización-crea-una-tarea-con-horario-sin-fecha","¿Qué pasa si una automatización crea una tarea con horario sin fecha?",[238],"La tarea queda Sin horario, como «Agendar después», y la agenda el bot o el equipo. Si la automatización elige una persona o un recurso, necesita una fecha. La ves en Trabajo, con las tareas sin horario.",{"id":5800,"title":5801,"titles":5802,"content":5803,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-una-entrega-solo-llega-a-algunas-zonas-y-el-cliente-está-en-otra","¿Qué pasa si una entrega solo llega a algunas zonas y el cliente está en otra?",[238],"Decide el mismo ajuste de Zonas → Cobertura. Con «Tomar igual y avisarme», el bot ofrece la entrega, toma el pedido y la tarea aparece en Necesita tu atención como fuera de cobertura. Con «No tomar», el bot no la ofrece y le dice al cliente que por ahora esa entrega no llega a su zona.",{"id":5805,"title":5806,"titles":5807,"content":5808,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-un-pedido-de-fuera-de-la-zona-que-armé-en-la-configuración-inicial","¿Qué pasa con un pedido de fuera de la zona que armé en la configuración inicial?",[238],"Se toma igual: la tarea queda con la etiqueta «fuera de cobertura» y aparece en Necesita tu atención para que decidas. La zona (toda la ciudad, un radio o barrios y códigos postales) se ajusta después en Zonas, donde también podés elegir no tomar esos pedidos.",{"id":5810,"title":5811,"titles":5812,"content":5813,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-significa-sigue-ocupando-en-el-calendario","¿Qué significa «Sigue ocupando» en el calendario?",[238],"Es una tarea iniciada que no se completó en su día y todavía ocupa su lugar: ocupa todo el horario de atención de cada día siguiente hasta que la completás, como mucho 7 días. Pasado ese plazo el lugar se libera y la tarea sigue en Atrasadas. Lo ves rayado en Trabajo → Calendario y Línea de tiempo; no se arrastra.",{"id":5815,"title":5816,"titles":5817,"content":5818,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-hacer-de-día-completo-un-servicio-con-una-persona","¿Puedo hacer de día completo un servicio con una persona?",[238],"No. El día completo es para lo que se deja y se retira en el lugar (un auto en el taller): el cliente elige el día y entra desde la apertura. Si el servicio asigna una persona, el panel no lo guarda como día completo, y tampoco deja sumar después una persona a su equipo. Cambiar a día completo no mueve las tareas ya agendadas. Se elige en Mi negocio → Catálogo, en el servicio.",{"id":5820,"title":5821,"titles":5822,"content":5823,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#mis-clientes-pueden-reservar-más-de-una-hora-del-mismo-servicio","¿Mis clientes pueden reservar más de una hora del mismo servicio?",[238],"Sí, si el servicio ofrece varias duraciones (por ejemplo 1 h, 1 h 30 y 2 h): el cliente elige una y queda una sola reserva con esa duración y su precio, o el precio en proporción si no le pusiste uno. El bot pregunta cuánto tiempo si el cliente no lo dice. Se configuran en Servicios, en el servicio, en «Duraciones que elige el cliente».",{"id":5825,"title":5826,"titles":5827,"content":5828,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-una-reserva-empieza-sola","¿Qué pasa cuando una reserva empieza sola?",[238],"Si la etapa tiene un Temporizador «Al empezar el horario», la tarea pasa sola por el camino elegido a la hora de inicio (por ejemplo, de «Reservado» a «En curso») y, con otro «Al terminar el horario», a la hora de fin. Si la reprogramás, el cambio se corre con ella; si entra a la etapa con la hora ya pasada, avanza enseguida. «No vino» sigue siendo manual. Solo en flujos con horario; se configura en Mi negocio → Etapas.",{"id":5830,"title":5831,"titles":5832,"content":5833,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-sacar-algo-de-cómo-wagy-entendió-mi-negocio-en-la-configuración-inicial","¿Puedo sacar algo de cómo Wagy entendió mi negocio en la configuración inicial?",[238],"Sí. Antes de confirmar el plan, Wagy muestra «Así entendí tu negocio»: tocá la ✕ en lo que no va o «Sí, es así». Lo que confirmás ahí es lo que se arma; si después cambiás otra respuesta, te lo vuelve a mostrar. Lo ves en Preparemos tu proyecto.",{"id":5835,"title":5836,"titles":5837,"content":5838,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-la-configuración-inicial-empieza-preguntando-por-mi-negocio","¿Por qué la configuración inicial empieza preguntando por mi negocio?",[238],"Wagy te pide que le cuentes de tu negocio con tus palabras. Con eso arma las preguntas y los ejemplos a tu medida: una estética ve salas y profesionales, un club canchas y profes. Lo que ya contaste (tu equipo, tu horario, lo que vendés) no te lo vuelve a preguntar: aparece como tarjeta «De tu mensaje» que cambiás con un toque. Si no alcanza, sigue con las preguntas de siempre. Lo ves en Preparemos tu proyecto.",{"id":5840,"title":5841,"titles":5842,"content":5843,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-se-calcula-lo-previsto-del-mes-que-viene-en-finanzas","¿Cómo se calcula lo previsto del mes que viene en Finanzas?",[238],"Es solo una suma de cosas con fecha, no una estadística. Seguro son los gastos fijos que vencen. Lo que ya cobraste de una tarea (pago o seña) cuenta solo en el Entró del mes en que lo cobraste, aunque la tarea sea de otro mes: una seña de septiembre para una tarea de octubre se ve en la tarea, pero no suma en octubre. Previsto es el saldo que esas tareas todavía no pagaron, la comisión del equipo estimada y los gastos que esperan aprobación. No se estima la comisión de cobro ni se suman saldos por cobrar sin vencimiento. Si no hay nada agendado, el período siguiente no aparece. Lo ves en Finanzas → Inicio.",{"id":5845,"title":5846,"titles":5847,"content":5848,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-están-los-reportes-de-finanzas","¿Dónde están los reportes de Finanzas?",[238],"En Finanzas → Reportes: un selector con el estado de resultados, el flujo de caja, las ventas por mes, las comisiones del equipo, los cobros, la caja, lo por cobrar y el paquete para el contador. Cada uno tiene su botón Exportar.",{"id":5850,"title":5851,"titles":5852,"content":5853,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-es-lo-en-atraso-en-finanzas","¿Qué es lo «en atraso» en Finanzas?",[238],"Lo por cobrar que tiene más de 30 días. Se oculta cuando vale cero.",{"id":5855,"title":5856,"titles":5857,"content":5858,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-funciona-un-turno-fijo","¿Cómo funciona un turno fijo?",[238],"Es una reserva que se repite (por ejemplo, todos los martes a las 20:00) cada 1 a 4 semanas, hasta una fecha o una cantidad de veces. Lo armás con «Repetir» al crear una tarea, y cada fecha es una tarea normal que se cobra ese día. Al abrir una fecha ves «Turno fijo» y podés editar o cancelar solo esa, esa y las siguientes o toda la serie.",{"id":5860,"title":5861,"titles":5862,"content":5863,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-una-fecha-del-turno-fijo-choca-con-otra-reserva-o-un-feriado","¿Qué pasa si una fecha del turno fijo choca con otra reserva o un feriado?",[238],"Antes de crear, la vista previa de las próximas 8 semanas marca las fechas que no entran (cerrado, sin lugar, feriado) y salteás cada una o creás el turno sin ellas. Las que chocan más adelante no se crean y quedan marcadas en la serie. Cancelar una sola fecha no toca el resto.",{"id":5865,"title":5866,"titles":5867,"content":5868,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-al-confirmar-la-configuración-inicial-algo-no-se-pudo-crear","¿Qué pasa si al confirmar la configuración inicial algo no se pudo crear?",[238],"Lo que salió queda creado y lo que no, marcado «Lo dejo en Primeros pasos». Podés tocar «Entrar igual»: tus respuestas quedan guardadas y lo que falta lo completás desde Primeros pasos en Hoy.",{"id":5870,"title":5871,"titles":5872,"content":5873,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-las-tareas-vinculadas-si-cancelo-la-tarea-principal","¿Qué pasa con las tareas vinculadas si cancelo la tarea principal?",[238],"Se cancelan las que todavía no empezaron; las que ya están en curso siguen y las decidís vos. Reprogramar la tarea principal no cancela nada: las vinculadas quedan con la tarea nueva.",{"id":5875,"title":5876,"titles":5877,"content":5878,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#el-cliente-se-entera-de-las-tareas-vinculadas","¿El cliente se entera de las tareas vinculadas?",[238],"No. El cliente ve solo su tarea principal: no recibe avisos de las vinculadas y el bot no se las muestra.",{"id":5880,"title":5881,"titles":5882,"content":5883,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-el-equipo-agrega-algo-que-ofrece-la-etapa","¿Qué pasa cuando el equipo agrega algo que ofrece la etapa?",[238],"Si es un producto (por ejemplo, una crema), se suma a la misma tarea con el precio del catálogo y sube lo que se cobra. Si es un servicio (por ejemplo, una barba), nace otra tarea para el mismo cliente, que se agenda y se cobra aparte. Lo ves en la tarea, en «Ofrecer…».",{"id":5885,"title":5886,"titles":5887,"content":5888,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-con-la-barba-si-cancelo-el-corte-que-la-ofreció","¿Qué pasa con la barba si cancelo el corte que la ofreció?",[238],"Nada: son dos tareas independientes. Cancelar una no cancela la otra ni le manda avisos al cliente por ella. Cada tarea muestra de dónde nació o qué se aceptó, solo como registro.",{"id":5890,"title":5891,"titles":5892,"content":5893,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-no-veo-todas-las-pestañas-de-recursos-o-catálogo","¿Por qué no veo todas las pestañas de Recursos o Catálogo?",[238],"Solo aparecen los tipos con elementos; si hay uno solo, se abre directamente sin pestañas. Para estrenar otro tipo usá el menú de altas. La búsqueda y los estados se aplican dentro del apartado elegido.\nEquipos tiene su propia sección con miembros, zonas y servicios que lo usan.",{"id":5895,"title":5896,"titles":5897,"content":5898,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-nueva-tarea-me-pide-los-datos-de-a-uno","¿Por qué «Nueva tarea» me pide los datos de a uno?",[238],"Para que crear sea rápido: primero el cliente, después el servicio y, al final, «Cuándo y quién». Cada paso elegido queda en una línea que podés tocar para cambiarlo; lo que ya viene completo (por ejemplo desde el calendario o la ficha de un cliente) se saltea.",{"id":5900,"title":5901,"titles":5902,"content":5903,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#de-dónde-sale-el-horario-que-propone-nueva-tarea","¿De dónde sale el horario que propone «Nueva tarea»?",[238],"Es el próximo horario libre real de ese servicio (con la persona o el equipo que elijas), desde hoy y hasta 7 días hacia adelante. Lo cambiás con un toque; si no hay ninguno en esos días, elegís la fecha a mano.",{"id":5905,"title":5906,"titles":5907,"content":5908,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-quedaron-los-co-responsables-y-repetir-al-crear-una-tarea","¿Dónde quedaron los co-responsables y «Repetir» al crear una tarea?",[238],"En Más opciones, en el último paso. Está cerrado por defecto; si lo abrís, queda abierto la próxima vez, y si una de esas opciones ya tiene valor se abre sola.",{"id":5910,"title":5911,"titles":5912,"content":5913,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-crear-una-tarea-que-no-sea-de-ningún-cliente","¿Puedo crear una tarea que no sea de ningún cliente?",[238],"Sí: en el primer paso de «Nueva tarea» elegí Sin cliente. No manda avisos a ningún cliente ni se cobra, por eso solo se puede con un servicio sin precio. Después podés asignarle un cliente.",{"id":5915,"title":5916,"titles":5917,"content":5918,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-nueva-tarea-ya-trae-un-servicio-elegido","¿Por qué «Nueva tarea» ya trae un servicio elegido?",[238],"Si ese cliente suele pedir el mismo servicio (el que más pidió en sus últimas tareas), lo traemos elegido para ahorrarte un paso. Lo cambiás con un toque.",{"id":5920,"title":5921,"titles":5922,"content":5923,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-horario-propone-wagy-si-no-le-digo-cuándo","¿Qué horario propone Wagy si no le digo cuándo?",[238],"El próximo horario libre real del servicio, desde hoy y hasta 7 días hacia adelante, igual que «Nueva tarea». Si pedís otro día u hora, usa lo que pediste. Antes de crear, ves la propuesta y confirmás o dejás que se aplique la cuenta regresiva según tu nivel.",{"id":5925,"title":5926,"titles":5927,"content":5928,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#dónde-está-la-explicación-que-antes-se-veía-en-la-pantalla","¿Dónde está la explicación que antes se veía en la pantalla?",[238],"Pasó al «?» junto al título: muestra una línea y botones de temas, y cada tema abre el suyo, con «Volver» e «Inicio». Desde un tema podés tocar «Hacelo con Wagy» para pedírselo; Wagy nunca se abre solo. Por ahora en Catálogo, Mi cuenta y el Cobro de la tarea.",{"id":5930,"title":5931,"titles":5932,"content":5933,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-no-aparece-no-vino-en-un-flujo-de-cola","¿Por qué no aparece «No vino» en un flujo de cola?",[238],"Los trabajos de cola no tienen una cita a la que faltar. En Mi negocio → Etapas, el editor no ofrece «No vino» para esos recorridos y conserva la configuración de los que ya la tenían. Los flujos con horario mantienen esa salida.",{"id":5935,"title":5936,"titles":5937,"content":5938,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-vista-abre-trabajo-para-cada-persona","¿Qué vista abre Trabajo para cada persona?",[238],"En un negocio nuevo, el equipo empieza en Lista de Hoy y el dueño y el encargado en Kanban por etapa. Si ya elegiste una vista o forma, se conserva. Focus sigue disponible en Hoy → Ver.",{"id":5940,"title":5941,"titles":5942,"content":5943,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-pruebo-la-cara-nueva-del-panel","¿Cómo pruebo la cara nueva del panel?",[238],"En Mi cuenta → Idioma y modo, encendé «Probar cara nueva (beta)». Vale para vos en ese dispositivo y no cambia nada para tu equipo. Si preferís la de siempre, apagalo y el panel vuelve a como estaba.",{"id":5945,"title":5946,"titles":5947,"content":5948,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-el-tablero-de-wagy-no-muestra-pedidos-equipo-o-caja","¿Por qué el tablero de Wagy no muestra Pedidos, Equipo o Caja?",[238],"Porque el tablero solo dibuja lo que tiene datos: un bloque vacío o con todos sus contadores en 0 se esconde y aparece solo cuando llega el primer dato. Si hoy no cobraste pero en la semana sí, Caja muestra la semana con su título. Si no hay nada, ves «Todo en calma por ahora». Lo ves en Wagy → Panel de control → Tablero.",{"id":5950,"title":5951,"titles":5952,"content":5953,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-le-pido-a-wagy-el-primero-disponible-para-sebastián","¿Qué pasa si le pido a Wagy «el primero disponible para Sebastián»?",[238],"Wagy agenda la tarea en el primer horario libre de Sebastián y la deja asignada a él; también lo entiende si escribiste «Asignar a Sebastián» en las notas. Si falta el horario, te muestra los próximos libres como botones, con «Ver más», y si no hay lugar en los próximos 7 días te lo dice y te pide otra fecha. Lo que ya le dijiste (cliente, servicio, notas) no se vuelve a preguntar.",{"id":5955,"title":5956,"titles":5957,"content":5958,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-llamar-canchas-a-mis-salas","¿Puedo llamar «canchas» a mis salas?",[238],"Sí. Cada tipo (sala, equipo, mesa, vehículo, zona) puede tener su nombre: el panel y el bot dicen «Canchas» en vez de «Salas». Al dar de alta el negocio se toma la palabra que usás («tenemos 4 canchas»); después la cambiás en Configuración → Vocabulario o pidiéndoselo a Wagy. Si lo dejás vacío, vuelve el nombre de siempre.",{"id":5960,"title":5961,"titles":5962,"content":5963,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-tipos-de-partner-tiene-fiuit","¿Qué tipos de partner tiene Fiuit?",[238],"Implementador local, agencia y creator, los mismos nombres del sitio. En el panel de partners,\nlos registros existentes conservan su código y sus proyectos con el tipo equivalente.",{"id":5965,"title":5966,"titles":5967,"content":5968,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#por-qué-veo-solo-una-etapa-siguiente-en-los-pasos-de-la-tarea","¿Por qué veo solo una etapa siguiente en los pasos de la tarea?",[238],"En el detalle y en Focus, los pasos resumen lo hecho con tilde, quién y hora, la etapa actual con su color y solo la siguiente en gris. Las demás futuras se ocultan y las pasadas que no entran se resumen con «+N»; una cancelada termina en «Cancelada», sin siguiente. Deslizá hacia atrás para leer cada visita anterior y tocá «Volver a la etapa actual» para recuperar la acción y seguir trabajando.",{"id":5970,"title":5971,"titles":5972,"content":5973,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-colores-usa-la-web-de-mi-negocio","¿Qué colores usa la web de mi negocio?",[238],"La web usa la paleta que elegiste en Mi negocio → Datos → Colores de tu marca, incluida la generada desde tu logo. Sigue el modo claro u oscuro del dispositivo del cliente; con paleta, esta prevalece sobre el acento. Sin paleta queda el tema de Fiuit con el acento del negocio.",{"id":5975,"title":5976,"titles":5977,"content":5978,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-importo-mi-catálogo-con-claude-o-chatgpt-y-me-arrepiento","¿Qué pasa si importo mi catálogo con Claude o ChatGPT y me arrepiento?",[238],"Antes de cargar nada ves la vista previa y confirmás. Después podés pedirle a tu IA que deshaga la importación: los productos nuevos se borran (o se archivan si ya se vendieron) y los actualizados vuelven a como estaban. Funciona durante 7 días, si nadie tocó el catálogo después; si alguien lo editó, no se deshace para no pisar ese cambio. Con los servicios es igual: se importan solo los nuevos y se deshacen si nadie los cambió.",{"id":5980,"title":5981,"titles":5982,"content":5983,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-cuando-vence-el-plazo-de-una-etapa-que-solo-avisa-sla","¿Qué pasa cuando vence el plazo de una etapa que solo avisa (SLA)?",[238],"Si el Temporizador de la etapa está en «Al vencer: avisar», al cumplirse el plazo se avisa al equipo elegido (dueño y encargados, todo el equipo o quien tiene la tarea) y la tarea se queda en la etapa. Sale un solo aviso cada vez que la tarea entra a la etapa. El plazo puede depender de una respuesta (por ejemplo, la severidad: S1 1 h, S2 4 h, S3 1 día) y contarse desde que llegó el caso; si cambiás la respuesta, se recalcula. Se configura en Mi negocio → Etapas, en «+ Agregar → Automático». El plazo es de hasta 30 días y cuenta horas corridas.",{"id":5985,"title":5986,"titles":5987,"content":5988,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#cómo-se-arma-el-título-de-una-tarea","¿Cómo se arma el título de una tarea?",[238],"Cada servicio elige hasta 3 piezas: Cliente, Pedido, Dirección, Nº o un campo del formulario (por ejemplo, «Vehículo»). Se completa solo a medida que llegan los datos y, si una pieza está vacía, se omite. Se configura en Mi negocio → Servicios → Editar servicio → Título de las tareas.",{"id":5990,"title":5991,"titles":5992,"content":5993,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#qué-pasa-si-edito-a-mano-el-título-de-una-tarea","¿Qué pasa si edito a mano el título de una tarea?",[238],"Queda fijo: deja de completarse con la plantilla del servicio. En la ficha de la tarea, «Volver a automático» lo devuelve. Las tareas anteriores a esta función muestran el servicio y el cliente, como siempre.",{"id":5995,"title":5996,"titles":5997,"content":5998,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puede-una-etapa-cambiar-el-título-de-la-tarea","¿Puede una etapa cambiar el título de la tarea?",[238],"Sí: agregá «Poner título» en la etapa (Mi negocio → Etapas → + Agregar → Automático), elegí las piezas y si se aplica al entrar o al completar la etapa. No pisa un título escrito a mano, salvo que marques «Reemplazar siempre».",{"id":6000,"title":6001,"titles":6002,"content":6003,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fservicios-y-tareas#puedo-guardar-los-autos-de-mis-clientes","¿Puedo guardar los autos de mis clientes?",[238],"Sí. Pedíselo a Wagy («quiero guardar los autos de mis clientes») y cada cliente pasa a tener sus vehículos: patente, marca, modelo, año, km y color, sin ningún dato obligatorio (alcanza con la patente o el modelo). Si no los usás, no ves nada nuevo. Si dejás de usarlos, los autos quedan guardados en solo lectura. Un taller o un lavadero que arranca con la plantilla del rubro ya lo trae activo. Los autos se ven en la ficha del cliente → Vehículos: ahí los cargás, marcás el predeterminado, archivás el que ya no viene y tocás «Ver» para sus datos y su historial.",{"id":243,"title":242,"titles":6005,"content":6006,"level":257},[],"Cómo dar de baja tu suscripción de Fiuit con un clic, hasta cuándo seguís con tu plan, cómo deshacerla y qué pasa con tus datos. Qué pasa cuando querés dejar de usar Fiuit, y dónde lo ves.",{"id":6008,"title":6009,"titles":6010,"content":6011,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#cómo-doy-de-baja-mi-suscripción","¿Cómo doy de baja mi suscripción?",[242],"Solo el Dueño del proyecto puede hacerlo, desde Configuración → Plan: tocás Dar de baja y confirmás. No hay llamadas, formularios ni motivos obligatorios, y dar de baja nunca queda trabado. Un Encargado ve la pantalla y quién puede usarla, pero no el botón.",{"id":6013,"title":6014,"titles":6015,"content":6016,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#hasta-cuándo-sigo-con-mi-plan-si-me-doy-de-baja","¿Hasta cuándo sigo con mi plan si me doy de baja?",[242],"Tu plan no se renueva y no se te vuelve a cobrar: lo seguís usando hasta el fin del período que ya pagaste. Si la fecha se conoce, la pantalla la muestra; tus datos y tu proyecto siguen igual hasta entonces.",{"id":6018,"title":6019,"titles":6020,"content":6021,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#puedo-arrepentirme","¿Puedo arrepentirme?",[242],"Sí. Mientras el proyecto no esté cerrado, en la misma pantalla tocás Deshacer la baja y tu plan vuelve a renovarse como antes. Cuando el proyecto ya está cerrado, escribinos a hola@fiuit.com.",{"id":6023,"title":6024,"titles":6025,"content":6026,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-significa-estamos-confirmando-la-baja","¿Qué significa «Estamos confirmando la baja»?",[242],"Tu baja ya quedó registrada; solo falta que el cobro confirme que dejó de renovar. No tenés que hacer nada: se completa sola y el mensaje desaparece.",{"id":6028,"title":6029,"titles":6030,"content":6031,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-pasa-con-mis-datos-si-me-doy-de-baja","¿Qué pasa con mis datos si me doy de baja?",[242],"Dar de baja no borra nada. Podés descargar tus cobros desde Finanzas → Movimientos (Exportar CSV) y tus productos desde Mi negocio → Catálogo (Exportar CSV). Para pedir una copia completa o la eliminación de tus datos, escribí a hola@fiuit.com: respondemos en 30 días. Los registros de pagos y financieros se conservan 5 años por obligaciones fiscales y contables. El detalle está en la política de privacidad.",{"id":6033,"title":6034,"titles":6035,"content":6036,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#quién-ve-que-di-de-baja-la-suscripción","¿Quién ve que di de baja la suscripción?",[242],"El equipo de Fiuit, para no renovarte el plan. En tu proyecto queda registrado quién la dio de baja o la deshizo y cuándo.",{"id":6038,"title":6039,"titles":6040,"content":6041,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-pasa-si-un-cliente-pide-que-borren-sus-datos","¿Qué pasa si un cliente pide que borren sus datos?",[242],"Lo hace el equipo de Fiuit a pedido (hola@fiuit.com), y te avisamos antes si tiene tareas por atender. Se\nborran sus conversaciones, mensajes, foto y notas de la ficha. Sus tareas, pedidos y cobros quedan para tu agenda\ny tu contabilidad, pero sin nombre, teléfono ni dirección: en Clientes la ficha aparece sin datos. Si vuelve a\nescribirte, empieza como cliente nuevo.",{"id":6043,"title":6044,"titles":6045,"content":6046,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-pasa-si-llego-al-límite-de-mi-plan","¿Qué pasa si llego al límite de mi plan?",[242],"El botón para conectar un canal o invitar a alguien queda desactivado con un texto corto y un enlace a Configuración → Plan para pasar de plan. Lo que ya tenés sigue funcionando. En Solo son 2 personas con acceso, 3 recursos y 2 conexiones (con un solo número de WhatsApp); Negocio y Pro tienen topes mayores, también con un solo número de WhatsApp; Business es a medida.",{"id":6048,"title":6049,"titles":6050,"content":6051,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#puedo-bajar-de-plan-si-tengo-más-de-lo-que-permite","¿Puedo bajar de plan si tengo más de lo que permite?",[242],"No mientras el negocio supere algún límite del plan nuevo. La pantalla de cambio de plan lista qué hay que quitar primero (personas con acceso, recursos, conexiones o números de WhatsApp) con un enlace a cada lugar. Nada se borra solo.",{"id":6053,"title":6054,"titles":6055,"content":6056,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#quiénes-cuentan-como-operadores","¿Quiénes cuentan como operadores?",[242],"Las personas con acceso al panel y las invitaciones pendientes. Las personas que se agendan pero no tienen cuenta no cuentan. En Personas ves «Personas con acceso: 1 de 2».",{"id":6058,"title":6059,"titles":6060,"content":6061,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#puedo-quitar-hecho-con-fiuit-de-mi-web","¿Puedo quitar «Hecho con Fiuit» de mi web?",[242],"Con un plan pago, sí: en Atención → Sitio web desmarcás «Hecho con Fiuit» y guardás, o se lo pedís a Wagy. En el plan de prueba se muestra siempre. Si tu proyecto pasa a un plan que no lo permite, vuelve a aparecer solo.",{"id":6063,"title":6064,"titles":6065,"content":6066,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#wagy-puede-publicar-mi-web","¿Wagy puede publicar mi web?",[242],"Sí, pero nunca sin que confirmes: te muestra el antes y el después y espera tu confirmación; después lo podés deshacer.",{"id":6068,"title":6069,"titles":6070,"content":6071,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-es-la-inteligencia-de-mi-plan","¿Qué es la Inteligencia de mi plan?",[242],"Es lo que usan el bot, Wagy y las automatizaciones con IA. En Configuración → Plan ves cuánto usaste del mes en porcentaje y, con el ritmo que llevás, hasta qué día te alcanza. Te avisamos al 80 % y al 100 %, y se recarga sola al empezar cada mes.",{"id":6073,"title":6074,"titles":6075,"content":6076,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-pasa-si-se-termina-la-inteligencia-del-mes","¿Qué pasa si se termina la Inteligencia del mes?",[242],"Las funciones con IA se pausan hasta que se recarga; todo lo demás sigue funcionando. Si te hace falta más, tocá Solicitar más: una recarga vale solo hasta el fin del mes y no se acumula.",{"id":6078,"title":6079,"titles":6080,"content":6081,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#cómo-pido-ayuda-a-soporte-de-fiuit","¿Cómo pido ayuda a soporte de Fiuit?",[242],"Tocá Hablar con soporte en la ayuda ? de cada pantalla o en el menú de tu cuenta, o Avisar a soporte si ves un error. Wagy intenta resolverlo primero y, si no alcanza, te muestra el pedido con el motivo, un resumen que podés corregir, la pantalla y el error. Nada se manda hasta que confirmás; soporte te responde en el chat de Wagy (y por WhatsApp o email) y podés preguntarle a Wagy «¿cómo va mi caso?».",{"id":6083,"title":6084,"titles":6085,"content":6086,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-ve-soporte-cuando-pido-ayuda","¿Qué ve soporte cuando pido ayuda?",[242],"Tus datos y los de tu proyecto (plan, rubro, pantalla, dispositivo y el error), y puede entrar a tu cuenta en modo lectura para ayudarte; el acceso queda registrado. Nunca ve datos de tus clientes ni contraseñas: antes de mandarlo, el resumen se limpia de sus nombres, de lo que escribieron, teléfonos y emails, y vos ves cómo sale.",{"id":6088,"title":6089,"titles":6090,"content":6091,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-pasa-si-pido-ayuda-dos-veces-por-lo-mismo","¿Qué pasa si pido ayuda dos veces por lo mismo?",[242],"Si ya tenés un caso abierto por ese motivo, el pedido nuevo se suma a ese. Podés mandar hasta 5 pedidos por día por proyecto.",{"id":6093,"title":6094,"titles":6095,"content":6096,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#cada-cuánto-se-actualizan-las-fotos-de-instagram-en-mi-web","¿Cada cuánto se actualizan las fotos de Instagram en mi web?",[242],"Instagram no avisa cuando subís algo, así que Fiuit lo consulta cada tanto según tu plan: cada 24 horas en los planes básicos, cada 6 en Pro y cada 1 en Business, que además tiene «Actualizar ahora» (hasta 5 veces por día). Se ven los últimos posts; lo que borrás en Instagram se borra de la copia. Se configura en Atención → Sitio web → Galería de Instagram.",{"id":6098,"title":6099,"titles":6100,"content":6101,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#qué-pasa-con-las-fotos-copiadas-si-desconecto-instagram","¿Qué pasa con las fotos copiadas si desconecto Instagram?",[242],"Se borran todas, las filas y las imágenes. Lo mismo pasa si Instagram avisa que se quitó la autorización. Ocultar una foto o despublicar la web la saca de tu web en hasta 1 minuto.",{"id":6103,"title":6104,"titles":6105,"content":6106,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#cómo-hago-que-una-foto-de-instagram-lleve-a-reservar","¿Cómo hago que una foto de Instagram lleve a reservar?",[242],"En Atención → Sitio web → Galería de Instagram, elegí el servicio en «Reservar esto» debajo de la foto: la foto muestra el botón y lleva a reservar ese servicio. Wagy por ahora solo lee la galería.",{"id":6108,"title":6109,"titles":6110,"content":6111,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#quién-ve-el-chip-demo-y-sus-controles","¿Quién ve el chip Demo y sus controles?",[242],"Cualquier miembro del demo ve el chip Demo junto al nombre del proyecto y puede tocarlo para leer la explicación. Solo el dueño ve Restaurar demo, con permiso para restaurar y sin solo lectura. Sin foto base, aparece la explicación de cuándo estará disponible.",{"id":6113,"title":6114,"titles":6115,"content":6116,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#cómo-reporto-un-error-o-una-idea-como-partner","¿Cómo reporto un error o una idea como partner?",[242],"En Mis proyectos → Reportes, elegí Error o Idea, escribí la descripción y adjuntá capturas o videos si hace falta: PNG, JPEG, WebP, MP4 o WebM, hasta 20 MB por archivo, 20 archivos y 50 MiB en total. El reporte llega a Soporte de Fiuit Global; ahí mismo ves la etapa y los adjuntos de tus propios reportes. Los adjuntos se conservan según la retención configurada (30 días por defecto). Se usa desde el panel del partner; Wagy y MCP todavía no operan estos reportes.",{"id":6118,"title":6119,"titles":6120,"content":6121,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#puedo-tener-cada-negocio-en-su-propia-cuenta","¿Puedo tener cada negocio en su propia cuenta?",[242],"Sí. Al crear un proyecto elegís «¿En qué cuenta?»: la actual o «Cuenta nueva (otro negocio)». La cuenta nueva tiene el mismo plan que la actual, y tus proyectos se siguen contando juntos para el tope del plan. Si sos partner, el proyecto de tu cliente nace en una cuenta del cliente, que pasa a ser suya cuando acepta como dueño.",{"id":6123,"title":6124,"titles":6125,"content":6126,"level":263},"\u002Fdocs\u002Fque-pasa-si\u002Fplan-y-baja#se-puede-pasar-un-proyecto-a-otra-cuenta","¿Se puede pasar un proyecto a otra cuenta?",[242],"Sí, a pedido, lo hace el equipo de Fiuit (hola@fiuit.com). El proyecto conserva su agenda, clientes y cobros, y toma el plan de la cuenta nueva. Si la cuenta anterior era de otra persona, esa persona deja de verlo.",{"id":247,"title":246,"titles":6128,"content":6129,"level":257},[],"Conectá Claude o ChatGPT a tu proyecto con un botón, elegí qué puede hacer y revocá el acceso cuando quieras. Con Conectar, tu asistente de IA (Claude o ChatGPT) usa Fiuit con tu cuenta, sin copiar claves. Ve y opera lo que vos le permitís, en los proyectos que elegís, con las mismas reglas que el panel. Una sola conexión puede cubrir varios negocios.",{"id":6131,"title":6132,"titles":6133,"content":6134,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#desde-el-panel-con-un-clic","Desde el panel, con un clic",[246],"En Configuración → Desarrolladores, la tarjeta Conectá tu IA muestra ChatGPT, Claude, Gemini, Cursor, VS Code, Kimi y «Otra». En Cursor y VS Code, un botón instala el conector directo. En los demás, te muestra los pasos y la dirección https:\u002F\u002Fmcp.fiuit.com\u002F con un botón Copiar. Algunos planes de ChatGPT o Claude no permiten conectores.",{"id":6136,"title":6137,"titles":6138,"content":6139,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#antes-de-empezar","Antes de empezar",[246],"Tenés que ser dueño o encargado del proyecto.La dirección del conector es https:\u002F\u002Fmcp.fiuit.com\u002F. Si tu app ya puso https:\u002F\u002Fmcp.fiuit.com\u002Fmcp, también funciona: es el mismo servidor y la misma conexión.",{"id":6141,"title":6142,"titles":6143,"content":6144,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#claude-desktop-y-claudeai","Claude (Desktop y claude.ai)",[246],"En Claude, abrí Configuración → Conectores y tocá Agregar conector personalizado.Poné un nombre (por ejemplo, Fiuit) y la dirección https:\u002F\u002Fmcp.fiuit.com\u002F.Tocá Conectar: se abre Fiuit. Si no tenés sesión, entrá como siempre.En la página de permisos, marcá uno o más proyectos y los permisos de cada uno, y tocá Autorizar. Volvés a Claude ya conectado.",{"id":6146,"title":6147,"titles":6148,"content":6149,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#chatgpt","ChatGPT",[246],"En ChatGPT, abrí Configuración → Conectores → Avanzado y activá el modo desarrollador.Creá un conector con la dirección https:\u002F\u002Fmcp.fiuit.com\u002F y autenticación OAuth.Tocá Conectar y seguí los mismos pasos en la página de permisos de Fiuit.",{"id":6151,"title":6152,"titles":6153,"content":6154,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#la-página-de-permisos","La página de permisos",[246],"Qué app pide acceso. Claude y ChatGPT aparecen como Verificada. Cualquier otra app aparece No verificada, con la dirección a la que vuelve: autorizala solo si la reconocés.Proyectos. Marcás uno o más (hasta 20) entre los que sos dueño o encargado; viene marcado el que tenés abierto. Cada proyecto tiene sus propios permisos. Si ya tenías la app conectada, vienen marcados los proyectos y permisos de antes, y lo que autorices ahora reemplaza la conexión anterior entera: así sumás o sacás proyectos.Permisos. Vienen marcados los que pide la app y podés desmarcar cualquiera: PermisoQué puede hacer la IAVer tus turnos y tareasVer la agenda, los horarios libres y cada tareaCrear y mover turnosReservar, reprogramar, cancelar y avanzar tareasVer clientes \u002F Crear y editar clientesVer o cargar fichas de clientesVer conversaciones \u002F Responder conversacionesLeer o contestar en el InboxVer servicios y configuración \u002F CambiarlosVer o cambiar servicios, productos, horarios y etapasVer dineroVer cobros, saldos, caja y resultadosRegistrar cobros y enviar links de pagoCargar cobros y mandar links de pagoCargar gastosVer y cargar gastos Los tres últimos son de dinero: solo el dueño los ve y los puede dar, proyecto por proyecto (si sos dueño de un negocio y encargado de otro, el dinero aparece solo en el primero). Una IA nunca puede más que la persona que la conectó.\nCambiar flujos, evaluaciones y políticas de cobro también sigue reservado al dueño; un encargado puede delegar cambios de servicios y productos.",{"id":6156,"title":6157,"titles":6158,"content":6159,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#si-sos-partner-de-fiuit-tu-cartera-desde-la-ia","Si sos partner de Fiuit: tu cartera desde la IA",[246],"Si sos partner, la página de permisos te ofrece además Ver tu cartera de partner: clientes y actividad. Viene marcado solo si la app lo pide; si no, marcalo vos. Elegí cualquier proyecto en el que seas dueño o encargado (por ejemplo, el tuyo): tu cartera no depende del proyecto que elijas. Con ese permiso podés preguntarle a tu IA, por ejemplo: «¿qué tengo que hacer hoy con mis clientes?», «¿qué clientes están en riesgo?» o «¿qué pasó esta semana en mi cartera?». La IA ve lo mismo que tu panel de partner: Hoy: la próxima acción, el progreso de tu cartera y las alertas.Mis clientes: plan o prueba, último uso, cantidad de tareas y conversaciones, y el semáforo de cada cliente.Actividad: altas, canales conectados, primeras reservas y clientes que se apagan. Es solo lectura y con la misma privacidad que el panel: conteos y estados, nunca el contenido de un negocio ni sus cobros. El contenido de un cliente lo ves al entrar a su proyecto desde el panel. Nunca ves clientes de otro partner. Si dejás de ser partner, la conexión deja de mostrar tu cartera en la siguiente consulta.",{"id":6161,"title":6162,"titles":6163,"content":6164,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#si-la-ia-dice-que-le-falta-un-permiso","Si la IA dice que le falta un permiso",[246],"La IA solo ve las herramientas que le diste. Si pedís un saldo y no puede, falta Ver dinero; si no puede cobrar en efectivo, falta Registrar cobros y enviar links de pago. Revocá la conexión en Apps conectadas y conectá de nuevo marcando ese permiso (los de dinero solo los da el dueño). Editar los productos de un pedido no necesita permisos de dinero: alcanza con Crear y mover turnos. Ajustar a mano el valor a cobrar no se da por esta vía: se hace desde el panel. Cancelar una reserva siempre pide tu confirmación antes de ejecutarse.",{"id":6166,"title":6167,"titles":6168,"content":6169,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#ver-y-revocar-las-apps-conectadas","Ver y revocar las apps conectadas",[246],"En Configuración → Desarrolladores, en Apps conectadas, el dueño ve cada conexión del proyecto: la app, quién la autorizó, los permisos, cuándo se conectó y su último uso. Solo ve lo de su proyecto, no los otros negocios de esa conexión. Revocar corta el acceso a ese proyecto al instante; los otros proyectos de la misma conexión siguen andando. Si se revocan todos, la IA pide conectarse de nuevo.",{"id":6171,"title":6172,"titles":6173,"content":6174,"level":263},"\u002Fdocs\u002Fconectar-tu-ia#preguntas-frecuentes","Preguntas frecuentes",[246],"¿La IA guarda mi contraseña? No. Entrás en Fiuit y la app recibe un permiso que vence y se renueva solo. Podés revocarlo cuando quieras.¿Qué pasa si me cambian el rol? La conexión sigue tu rol de hoy en cada proyecto: si pasás a encargado en uno, pierde lo de dinero ahí; si dejás un proyecto, ese deja de funcionar y los demás siguen.¿Cómo sabe la IA en qué negocio trabajar? Con un solo proyecto, usa ese. Con varios, la IA pregunta o elige con la herramienta list_projects, y nunca mezcla datos de dos negocios en una respuesta.Ya tenía una conexión por proyecto, ¿tengo que reconectar? No: las conexiones anteriores siguen andando igual, cada una en su proyecto. Si querés una sola, conectá de nuevo y marcá todos los proyectos.¿Por qué otra persona ve más o menos herramientas? La IA ve solo las herramientas de los permisos que se eligieron al conectar: con menos permisos, la lista es más corta.¿Y las claves de API? Siguen funcionando igual, para integraciones propias: MCP y agentes de IA.",{"id":251,"title":250,"titles":6176,"content":6177,"level":257},[],"Dejá tu proyecto listo con tu propia IA. Puede cargarte el catálogo desde un Excel, armar el bot y entrevistarte para configurar tu negocio. Claude y ChatGPT trabajan bien en tareas largas: leer un Excel de 300 productos, un menú en PDF o la web vieja de tu negocio. Conectados a Fiuit, saben cómo dejar bien configurado tu proyecto: Fiuit les da instrucciones listas y una guía de buenas prácticas por rubro. El uso de IA lo paga tu suscripción de Claude o ChatGPT, no tu plan de Fiuit.",{"id":6179,"title":6180,"titles":6181,"content":6182,"level":263},"\u002Fdocs\u002Fconfigurar-con-tu-ia#_1-conectá-tu-ia","1. Conectá tu IA",[250],"Seguí Conectar Fiuit a tu IA: en Claude o ChatGPT agregás el conector https:\u002F\u002Fmcp.fiuit.com\u002F, elegís tus proyectos y los permisos, y autorizás. Para configurar, marcá Ver servicios y configuración \u002F Cambiarlos. Algunos cambios (flujos y cobros) quedan reservados al dueño.",{"id":6184,"title":6185,"titles":6186,"content":6187,"level":263},"\u002Fdocs\u002Fconfigurar-con-tu-ia#_2-elegí-una-tarea-lista","2. Elegí una tarea lista",[250],"Fiuit trae instrucciones armadas en español, portugués e inglés. En Claude aparecen junto al conector de Fiuit, en el menú + del chat. En ChatGPT podés pedirlas con tus palabras («usá la guía de Fiuit para…»). TareaQué haceConfigurar mi negocio desde ceroUna entrevista corta, como la de Wagy: cómo se organiza tu agenda, tu horario, qué vendés y cómo cobrás. Después crea los servicios, el horario y propone automatizaciones.Armar mi bot y mi base de conocimientoLee tu web, tu menú o tus preguntas frecuentes y carga respuestas cortas, una por tema. Te propone el tono del bot y lo prueba con preguntas típicas.Importar mi catálogoLee un CSV, Excel, PDF o foto con tus productos y servicios y te muestra la vista previa antes de cargar nada.",{"id":6189,"title":6190,"titles":6191,"content":6192,"level":263},"\u002Fdocs\u002Fconfigurar-con-tu-ia#_3-importar-tu-catálogo-desde-un-archivo","3. Importar tu catálogo desde un archivo",[250],"Pasale el archivo a tu IA y elegí Importar mi catálogo.Tu IA lee el archivo y te dice qué columna va a cada dato de Fiuit: nombre, precio, categoría, unidad, sinónimos o código.Ves la vista previa: cuántos productos se crean, cuántos se actualizan y cada fila con error. Hasta acá no se cargó nada.Si está bien, decile «sí» y se importa todo junto.¿Te arrepentiste? Pedile deshacer la importación: los productos nuevos se borran y los que se actualizaron vuelven a como estaban. Funciona durante 7 días, si nadie tocó el catálogo después. Hasta 2000 productos por vez. Los precios siguen la moneda de tu proyecto, y un precio ambiguo («1,500» en reales) se rechaza: no se adivina.",{"id":6194,"title":6195,"titles":6196,"content":6197,"level":301},"\u002Fdocs\u002Fconfigurar-con-tu-ia#servicios-en-lote","Servicios en lote",[250,6190],"Si tu archivo trae servicios, tu IA los importa aparte, con la misma vista previa: nombre, duración en minutos, precio y el equipo que lo atiende (si tenés un solo equipo, no hace falta). Solo se crean servicios nuevos: si uno ya existe con ese nombre, la fila queda marcada y no se pisa. Hasta 200 por vez, y se pueden deshacer durante 7 días si nadie los cambió.",{"id":6199,"title":3967,"titles":6200,"content":6201,"level":263},"\u002Fdocs\u002Fconfigurar-con-tu-ia#ejemplos-de-pedidos",[250],"«Te paso el Excel de mi ferretería: importá los productos a Fiuit. La columna \"Desc\" es el nombre y \"PVP\" el precio.»«Leé este PDF con el menú y cargá los platos como productos, con su categoría.»«Mirá mi web www.minegocio.com y armá la base de conocimiento del bot con horarios, cómo llegar y formas de pago.»«Soy un taller mecánico: configurá Fiuit desde cero con la guía de tu rubro.»",{"id":6203,"title":361,"titles":6204,"content":6205,"level":263},"\u002Fdocs\u002Fconfigurar-con-tu-ia#seguridad",[250],"Vista previa y confirmación: toda carga o cambio se muestra antes y se aplica solo cuando le decís que sí.Se puede deshacer: las importaciones y casi todos los cambios de configuración se pueden volver atrás; lo que no, te lo avisa antes.Queda registrado: cada cambio queda en el registro con el origen «MCP · Claude» (o el nombre de tu app).Solo tus proyectos y tus permisos: la IA no ve ni hace más de lo que autorizaste, y podés revocar el acceso cuando quieras.Sin secretos: la IA nunca recibe tus contraseñas ni las claves de tus integraciones.",{"id":6207,"title":3684,"badge":6208,"body":6209,"description":6615,"extension":6616,"meta":6617,"navigation":62,"path":3683,"rawbody":6618,"seo":6619,"stem":6620,"updated":6621,"__hash__":6622},"docs_es\u002Fdocs\u002F10.api\u002F6.reference\u002F21.site.md",null,{"type":6210,"value":6211,"toc":6608},"minimark",[6212,6216,6225,6231,6249,6272,6277,6324,6330,6335,6384,6397,6403,6411,6415,6448,6455,6460,6471,6483,6488,6495,6499,6532,6538,6543,6549,6561,6565,6571,6575],[6213,6214,6215],"p",{},"«Mi web» (F3-622), la web propia del negocio en su subdominio, apagada hasta que se publica.",[6217,6218,6220,6221],"h2",{"id":6219},"get-site","GET ",[6222,6223,6224],"code",{},"\u002Fsite",[6213,6226,6227],{},[6228,6229,6230],"strong",{},"Leer «Mi web» (site:read; API key config:read)",[6213,6232,6233,6234,6237,6238,6241,6242,6245,6246,6248],{},"La web propia del negocio (F3-622, plan web-del-negocio): plantilla, secciones opcionales marcadas, textos del dueño, subdominio y si está publicada. Sin guardar todavía (",[6222,6235,6236],{},"exists"," false) devuelve la propuesta: subdominio sugerido desde el nombre del negocio y libre, plantilla ",[6222,6239,6240],{},"booking",", apagada y ",[6222,6243,6244],{},"version"," 0. Lo que la web muestra del catálogo no se elige acá: es lo que ofrece el bot (ADR 0047, ",[6222,6247,3879],{},").",[6250,6251,6252,6259],"ul",{},[6253,6254,6255,6258],"li",{},[6228,6256,6257],{},"Autenticación:"," Clave de API o sesión del panel",[6253,6260,6261,6264,6265,6268,6269],{},[6228,6262,6263],{},"Scopes:"," ",[6222,6266,6267],{},"site:read",", ",[6222,6270,6271],{},"config:read",[6213,6273,6274],{},[6228,6275,6276],{},"Respuestas",[6278,6279,6280,6293],"table",{},[6281,6282,6283],"thead",{},[6284,6285,6286,6290],"tr",{},[6287,6288,6289],"th",{},"Estado",[6287,6291,6292],{},"Descripción",[6294,6295,6296,6311],"tbody",{},[6284,6297,6298,6304],{},[6299,6300,6301],"td",{},[6222,6302,6303],{},"200",[6299,6305,6306,6307,6310],{},"«Mi web» (",[6222,6308,6309],{},"SiteOut",")",[6284,6312,6313,6318],{},[6299,6314,6315],{},[6222,6316,6317],{},"default",[6299,6319,6320,6321,6310],{},"Error (RFC 9457) (",[6222,6322,6323],{},"Problem",[6217,6325,6327,6328],{"id":6326},"patch-site","PATCH ",[6222,6329,6224],{},[6213,6331,6332],{},[6228,6333,6334],{},"Cambiar «Mi web» (site:edit; API key config:write)",[6213,6336,6337,6338,6341,6342,6268,6345,6348,6349,6352,6353,6356,6357,6360,6361,6364,6365,6368,6369,6371,6372,6375,6376,6379,6380,6383],{},"Cambia solo los campos enviados; crea la web (apagada) si todavía no existía. ",[6222,6339,6340],{},"subdomain",": de 3 a 40 caracteres ",[6222,6343,6344],{},"a-z",[6222,6346,6347],{},"0-9"," y guiones interiores simples, sin nombres reservados (422 ",[6222,6350,6351],{},"site_subdomain_invalid"," con ",[6222,6354,6355],{},"reason",": too_short, too_long, invalid_chars, edge_hyphen, double_hyphen o reserved); si lo usa otro proyecto, 409 ",[6222,6358,6359],{},"site_subdomain_taken",". Cambiar el subdominio de una web publicada deja de servir el anterior al instante (sin redirección, ADR 0050 §7). Textos vacíos quedan sin texto (la web usa los datos del negocio). ",[6222,6362,6363],{},"made_with_fiuit: false"," quita «Hecho con Fiuit» solo si el plan del proyecto lo permite (si no, 409 ",[6222,6366,6367],{},"site_branding_plan_required","). Con ",[6222,6370,6244],{}," distinta de la vigente: 409 ",[6222,6373,6374],{},"site_version_conflict",". Audita ",[6222,6377,6378],{},"site.created"," o ",[6222,6381,6382],{},"site.updated",".",[6250,6385,6386,6390],{},[6253,6387,6388,6258],{},[6228,6389,6257],{},[6253,6391,6392,6264,6394],{},[6228,6393,6263],{},[6222,6395,6396],{},"config:write",[6213,6398,6399,6402],{},[6228,6400,6401],{},"Cuerpo de la solicitud"," (obligatorio)",[6250,6404,6405],{},[6253,6406,6407,6410],{},[6222,6408,6409],{},"application\u002Fjson",": SitePatch",[6213,6412,6413],{},[6228,6414,6276],{},[6278,6416,6417,6425],{},[6281,6418,6419],{},[6284,6420,6421,6423],{},[6287,6422,6289],{},[6287,6424,6292],{},[6294,6426,6427,6438],{},[6284,6428,6429,6433],{},[6299,6430,6431],{},[6222,6432,6303],{},[6299,6434,6435,6436,6310],{},"«Mi web» después del cambio (",[6222,6437,6309],{},[6284,6439,6440,6444],{},[6299,6441,6442],{},[6222,6443,6317],{},[6299,6445,6320,6446,6310],{},[6222,6447,6323],{},[6217,6449,6451,6452],{"id":6450},"post-sitepublish","POST ",[6222,6453,6454],{},"\u002Fsite\u002Fpublish",[6213,6456,6457],{},[6228,6458,6459],{},"Publicar la web (site:publish; API key config:write)",[6213,6461,6462,6463,6466,6467,6371,6469,6383],{},"Enciende la web en su subdominio. Idempotente: si ya estaba publicada devuelve lo mismo. Crea la web con la propuesta si todavía no existía. Audita ",[6222,6464,6465],{},"site.published",". Con ",[6222,6468,6244],{},[6222,6470,6374],{},[6250,6472,6473,6477],{},[6253,6474,6475,6258],{},[6228,6476,6257],{},[6253,6478,6479,6264,6481],{},[6228,6480,6263],{},[6222,6482,6396],{},[6213,6484,6485,6487],{},[6228,6486,6401],{}," (opcional)",[6250,6489,6490],{},[6253,6491,6492,6494],{},[6222,6493,6409],{},": SitePublishIn",[6213,6496,6497],{},[6228,6498,6276],{},[6278,6500,6501,6509],{},[6281,6502,6503],{},[6284,6504,6505,6507],{},[6287,6506,6289],{},[6287,6508,6292],{},[6294,6510,6511,6522],{},[6284,6512,6513,6517],{},[6299,6514,6515],{},[6222,6516,6303],{},[6299,6518,6519,6520,6310],{},"«Mi web» publicada (",[6222,6521,6309],{},[6284,6523,6524,6528],{},[6299,6525,6526],{},[6222,6527,6317],{},[6299,6529,6320,6530,6310],{},[6222,6531,6323],{},[6217,6533,6451,6535],{"id":6534},"post-siteunpublish",[6222,6536,6537],{},"\u002Fsite\u002Funpublish",[6213,6539,6540],{},[6228,6541,6542],{},"Despublicar la web (site:publish; API key config:write)",[6213,6544,6545,6546,6383],{},"Apaga la web: su subdominio responde 404 enseguida, igual que uno inexistente. Idempotente. Audita ",[6222,6547,6548],{},"site.unpublished",[6250,6550,6551,6555],{},[6253,6552,6553,6258],{},[6228,6554,6257],{},[6253,6556,6557,6264,6559],{},[6228,6558,6263],{},[6222,6560,6396],{},[6213,6562,6563,6487],{},[6228,6564,6401],{},[6250,6566,6567],{},[6253,6568,6569,6494],{},[6222,6570,6409],{},[6213,6572,6573],{},[6228,6574,6276],{},[6278,6576,6577,6585],{},[6281,6578,6579],{},[6284,6580,6581,6583],{},[6287,6582,6289],{},[6287,6584,6292],{},[6294,6586,6587,6598],{},[6284,6588,6589,6593],{},[6299,6590,6591],{},[6222,6592,6303],{},[6299,6594,6595,6596,6310],{},"«Mi web» apagada (",[6222,6597,6309],{},[6284,6599,6600,6604],{},[6299,6601,6602],{},[6222,6603,6317],{},[6299,6605,6320,6606,6310],{},[6222,6607,6323],{},{"title":6609,"searchDepth":263,"depth":301,"links":6610},"",[6611,6612,6613,6614],{"id":6219,"depth":263,"text":3689},{"id":6326,"depth":263,"text":3694},{"id":6450,"depth":263,"text":3699},{"id":6534,"depth":263,"text":3704},"Operaciones de site del contrato OpenAPI que aceptan una clave de API.","md",{},"---\ntitle: \"API · site\"\ndescription: \"Operaciones de site del contrato OpenAPI que aceptan una clave de API.\"\nupdated: \"2026-11-03\"\nnavigation: false\n---\n«Mi web» (F3-622), la web propia del negocio en su subdominio, apagada hasta que se publica.\n\n## GET `\u002Fsite`\n\n**Leer «Mi web» (site:read; API key config:read)**\n\nLa web propia del negocio (F3-622, plan web-del-negocio): plantilla, secciones opcionales marcadas, textos del dueño, subdominio y si está publicada. Sin guardar todavía (`exists` false) devuelve la propuesta: subdominio sugerido desde el nombre del negocio y libre, plantilla `booking`, apagada y `version` 0. Lo que la web muestra del catálogo no se elige acá: es lo que ofrece el bot (ADR 0047, `GET \u002Fbot\u002Foffer`).\n\n- **Autenticación:** Clave de API o sesión del panel\n- **Scopes:** `site:read`, `config:read`\n\n**Respuestas**\n\n| Estado | Descripción |\n| --- | --- |\n| `200` | «Mi web» (`SiteOut`) |\n| `default` | Error (RFC 9457) (`Problem`) |\n\n## PATCH `\u002Fsite`\n\n**Cambiar «Mi web» (site:edit; API key config:write)**\n\nCambia solo los campos enviados; crea la web (apagada) si todavía no existía. `subdomain`: de 3 a 40 caracteres `a-z`, `0-9` y guiones interiores simples, sin nombres reservados (422 `site_subdomain_invalid` con `reason`: too_short, too_long, invalid_chars, edge_hyphen, double_hyphen o reserved); si lo usa otro proyecto, 409 `site_subdomain_taken`. Cambiar el subdominio de una web publicada deja de servir el anterior al instante (sin redirección, ADR 0050 §7). Textos vacíos quedan sin texto (la web usa los datos del negocio). `made_with_fiuit: false` quita «Hecho con Fiuit» solo si el plan del proyecto lo permite (si no, 409 `site_branding_plan_required`). Con `version` distinta de la vigente: 409 `site_version_conflict`. Audita `site.created` o `site.updated`.\n\n- **Autenticación:** Clave de API o sesión del panel\n- **Scopes:** `config:write`\n\n**Cuerpo de la solicitud** (obligatorio)\n\n- `application\u002Fjson`: SitePatch\n\n**Respuestas**\n\n| Estado | Descripción |\n| --- | --- |\n| `200` | «Mi web» después del cambio (`SiteOut`) |\n| `default` | Error (RFC 9457) (`Problem`) |\n\n## POST `\u002Fsite\u002Fpublish`\n\n**Publicar la web (site:publish; API key config:write)**\n\nEnciende la web en su subdominio. Idempotente: si ya estaba publicada devuelve lo mismo. Crea la web con la propuesta si todavía no existía. Audita `site.published`. Con `version` distinta de la vigente: 409 `site_version_conflict`.\n\n- **Autenticación:** Clave de API o sesión del panel\n- **Scopes:** `config:write`\n\n**Cuerpo de la solicitud** (opcional)\n\n- `application\u002Fjson`: SitePublishIn\n\n**Respuestas**\n\n| Estado | Descripción |\n| --- | --- |\n| `200` | «Mi web» publicada (`SiteOut`) |\n| `default` | Error (RFC 9457) (`Problem`) |\n\n## POST `\u002Fsite\u002Funpublish`\n\n**Despublicar la web (site:publish; API key config:write)**\n\nApaga la web: su subdominio responde 404 enseguida, igual que uno inexistente. Idempotente. Audita `site.unpublished`.\n\n- **Autenticación:** Clave de API o sesión del panel\n- **Scopes:** `config:write`\n\n**Cuerpo de la solicitud** (opcional)\n\n- `application\u002Fjson`: SitePublishIn\n\n**Respuestas**\n\n| Estado | Descripción |\n| --- | --- |\n| `200` | «Mi web» apagada (`SiteOut`) |\n| `default` | Error (RFC 9457) (`Problem`) |\n",{"title":3684,"description":6615},"docs\u002F10.api\u002F6.reference\u002F21.site","2026-11-03","GdH9y2DgU4qGBW3PZx8FcYrFBysYn5vZQ--WJTUdTnE",[6208,6208],1793683953383]