{"components":{"schemas":{"BatchOperation":{"properties":{"data":{"type":"object"},"delta":{"type":"integer"},"external_id":{"type":"string"},"if_match":{"type":"integer"},"item":{"description":"op=stock: producto","type":"string"},"op":{"enum":["upsert","patch","delete","stock"],"type":"string"},"quantity":{"minimum":0,"type":"integer"},"type":{"default":"item","enum":["item","category","zone","discount"],"type":"string"},"variant":{"description":"op=stock: variante","type":"string"}},"required":["op"],"type":"object"},"BatchResult":{"properties":{"changes":{"items":{"type":"string"},"type":"array"},"error":{"$ref":"#/components/schemas/ErrorBody"},"external_id":{"type":"string"},"id":{"type":"string"},"index":{"type":"integer"},"matched_by":{"enum":["sku","name"],"type":"string"},"op":{"type":"string"},"result":{"enum":["created","updated","unchanged","ignored_stale","deleted"],"type":"string"},"status":{"type":"integer"},"type":{"type":"string"},"version":{"type":"integer"}},"type":"object"},"Category":{"additionalProperties":false,"properties":{"description":{"maxLength":300,"type":["string","null"]},"external_id":{"readOnly":true,"type":["string","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"is_active":{"type":"boolean"},"name":{"maxLength":60,"type":"string"},"object":{"const":"category","readOnly":true},"parent_external_id":{"type":["string","null"]},"sort_order":{"type":"integer"},"source_updated_at":{"format":"date-time","type":["string","null"]},"version":{"readOnly":true,"type":"integer"}},"required":["name"],"type":"object"},"Contact":{"properties":{"assigned_member_id":{"format":"uuid","type":["string","null"]},"company":{"type":["string","null"]},"created_at":{"format":"date-time","type":["string","null"]},"currency":{"const":"PYG"},"custom_fields":{"type":"object"},"deal_value":{"type":["integer","null"]},"email":{"type":["string","null"]},"external_id":{"type":["string","null"]},"id":{"format":"uuid","type":"string"},"integration_id":{"format":"uuid","type":["string","null"]},"interest":{"type":["string","null"]},"labels":{"items":{"$ref":"#/components/schemas/Tag"},"type":"array"},"last_interaction_at":{"format":"date-time","type":["string","null"]},"name":{"type":["string","null"]},"notes":{"type":["string","null"]},"object":{"const":"contact"},"phone":{"type":"string"},"source":{"type":["string","null"]},"source_updated_at":{"format":"date-time","type":["string","null"]},"stage":{"enum":["nuevo","calificado","propuesta","negociacion","ganado","perdido"],"type":"string"},"stage_changed_at":{"format":"date-time","type":["string","null"]},"status":{"enum":["lead","customer","inactive"],"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"updated_at":{"format":"date-time","type":["string","null"]},"whatsapp_profile":{"properties":{"name":{"type":["string","null"]},"username":{"description":"@usuario de WhatsApp (sin la arroba).","type":["string","null"]},"verified_name":{"type":["string","null"]}},"type":"object"}},"type":"object"},"ContactUpsertResult":{"properties":{"changes":{"items":{"type":"string"},"type":"array"},"data":{"$ref":"#/components/schemas/Contact"},"matched_by":{"enum":["external_id","phone"],"type":"string"},"result":{"enum":["created","updated","unchanged","linked","stale"],"type":"string"},"warnings":{"items":{"enum":["phone_not_updated"],"type":"string"},"type":"array"}},"type":"object"},"Conversation":{"properties":{"ai":{"properties":{"paused":{"type":"boolean"}},"type":"object"},"assigned_member_id":{"format":"uuid","type":["string","null"]},"closed_at":{"format":"date-time","type":["string","null"]},"contact":{"type":["object","null"]},"created_at":{"format":"date-time","type":["string","null"]},"first_response_at":{"format":"date-time","type":["string","null"]},"id":{"format":"uuid","type":"string"},"is_group":{"type":"boolean"},"labels":{"items":{"$ref":"#/components/schemas/Tag"},"type":"array"},"last_inbound_at":{"format":"date-time","type":["string","null"]},"last_message_at":{"format":"date-time","type":["string","null"]},"last_message_preview":{"type":["string","null"]},"last_outbound_at":{"format":"date-time","type":["string","null"]},"menu":{"description":"Men\u00fa que espera la elecci\u00f3n del cliente (depth > 0: est\u00e1 en un submen\u00fa; labels incluye al final \u00abVolver al men\u00fa anterior\u00bb, \u00abMen\u00fa principal\u00bb y \u00abSalir\u00bb, que el submen\u00fa agrega solo).","properties":{"depth":{"type":"integer"},"labels":{"items":{"type":"string"},"type":"array"},"path":{"items":{"format":"uuid","type":"string"},"type":"array"},"sent_at":{"format":"date-time","type":["string","null"]},"template_id":{"format":"uuid","type":"string"}},"type":["object","null"]},"object":{"const":"conversation"},"status":{"enum":["open","pending","closed"],"type":"string"},"team_id":{"format":"uuid","type":["string","null"]},"unread_count":{"type":"integer"},"updated_at":{"format":"date-time","type":["string","null"]},"whatsapp_account_id":{"format":"uuid","type":"string"}},"type":"object"},"Discount":{"additionalProperties":false,"properties":{"amount":{"description":"Para type=amount (monto que se descuenta).","type":["number","string","null"]},"applies_to":{"default":"all","enum":["all","category","items"],"type":"string"},"buy_quantity":{"description":"buy_x_get_y: 2x1 = 1; 3x2 = 2.","minimum":1,"type":["integer","null"]},"category":{"type":["string","null"]},"category_external_id":{"type":["string","null"]},"code":{"description":"C\u00f3digo de cup\u00f3n.","maxLength":40,"type":["string","null"]},"currency":{"enum":["PYG","USD","BRL","ARS","EUR","UYU","CLP","BOB","PEN","COP","MXN","GBP","CAD","CHF","JPY","CNY"],"type":"string"},"customer_group":{"description":"Solo para una lista de clientes (p. ej. mayoristas).","maxLength":60,"type":["string","null"]},"description":{"maxLength":300,"type":["string","null"]},"ends_at":{"format":"date-time","type":["string","null"]},"external_id":{"readOnly":true,"type":["string","null"]},"get_quantity":{"description":"buy_x_get_y: unidades con descuento.","minimum":1,"type":["integer","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"is_active":{"type":"boolean"},"items":{"description":"external_id o id:<uuid> de productos o servicios.","items":{"type":"string"},"maxItems":200,"type":"array"},"min_amount":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]},"min_quantity":{"minimum":1,"type":["integer","null"]},"name":{"maxLength":120,"type":"string"},"object":{"const":"discount","readOnly":true},"payment_method":{"example":"efectivo","maxLength":60,"type":["string","null"]},"percent":{"description":"Para type=percent; en buy_x_get_y, el descuento de las unidades extra (100 = gratis).","maximum":100,"minimum":0.01,"type":"number"},"price":{"description":"Para type=fixed_price (precio especial).","type":["number","string","null"]},"schedule":{"description":"D\u00edas y horarios en que vale (happy hour).","example":{"days":{"0":[["09:00","12:00"],["14:00","18:00"]],"5":[["09:00","12:00"]]},"note":"Turnos con 24 h de anticipaci\u00f3n"},"properties":{"days":{"additionalProperties":{"items":{"items":{"pattern":"^\\d{2}:\\d{2}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"type":"object"},"note":{"maxLength":200,"type":"string"}},"type":["object","null"]},"source_updated_at":{"format":"date-time","type":["string","null"]},"starts_at":{"format":"date-time","type":["string","null"]},"type":{"enum":["percent","amount","fixed_price","buy_x_get_y","free_shipping"],"type":"string"},"version":{"readOnly":true,"type":"integer"}},"required":["name","type"],"type":"object"},"EmbedSession":{"properties":{"created_at":{"format":"date-time","type":["string","null"]},"expires_at":{"format":"date-time","type":["string","null"]},"id":{"format":"uuid","type":"string"},"launched_at":{"format":"date-time","type":["string","null"]},"member_id":{"format":"uuid","type":"string"},"modules":{"items":{"type":"string"},"type":"array"},"object":{"const":"embed_session"},"origin":{"type":"string"},"start":{"type":"object"},"status":{"enum":["pending","active","expired","revoked"],"type":"string"}},"type":"object"},"Error":{"properties":{"error":{"$ref":"#/components/schemas/ErrorBody"}},"type":"object"},"ErrorBody":{"properties":{"code":{"type":"string"},"details":{"properties":{"errors":{"items":{"properties":{"field":{"type":"string"},"message":{"type":"string"}},"type":"object"},"type":"array"},"field":{"type":"string"}},"type":"object"},"message":{"type":"string"}},"required":["code","message"],"type":"object"},"Event":{"properties":{"changes":{"items":{"type":"string"},"type":"array"},"created_at":{"format":"date-time","type":["string","null"]},"data":{"type":"object"},"id":{"format":"uuid","type":"string"},"origin":{"type":"object"},"resource":{"type":"object"},"sequence":{"type":"integer"},"type":{"enum":["catalog.item.created","catalog.item.updated","catalog.item.deleted","catalog.category.created","catalog.category.updated","catalog.category.deleted","catalog.zone.created","catalog.zone.updated","catalog.zone.deleted","catalog.discount.created","catalog.discount.updated","catalog.discount.deleted","sync.completed","sync.failed","contact.created","contact.updated","contact.stage_changed","contact.deleted","conversation.created","conversation.updated","message.received","message.sent","message.status_updated","message.failed","message.edited","message.deleted","ai.request.completed","ai.request.failed","automation.executed","automation.failed","subscription.updated","subscription.suspended"],"type":"string"}},"type":"object"},"EventFamilies":{"enum":["catalog.item.created","catalog.item.updated","catalog.item.deleted","catalog.category.created","catalog.category.updated","catalog.category.deleted","catalog.zone.created","catalog.zone.updated","catalog.zone.deleted","catalog.discount.created","catalog.discount.updated","catalog.discount.deleted","sync.completed","sync.failed","contact.created","contact.updated","contact.stage_changed","contact.deleted","conversation.created","conversation.updated","message.received","message.sent","message.status_updated","message.failed","message.edited","message.deleted","ai.request.completed","ai.request.failed","automation.executed","automation.failed","subscription.updated","subscription.suspended"],"type":"string"},"Item":{"additionalProperties":false,"properties":{"ai_notes":{"description":"Lo que Dot AI debe saber. Es de Dotly: un PUT que no lo incluye no lo borra.","maxLength":1000,"type":["string","null"]},"attributes":{"additionalProperties":{"type":["string","number","boolean"]},"description":"Caracter\u00edsticas que Dot AI puede contar (marca, modelo, a\u00f1o...).","example":{"A\u00f1o":2022,"Marca":"Toyota"},"maxProperties":30,"type":"object"},"availability":{"description":"D\u00edas y horarios en que se ofrece un servicio (0 = lunes ... 6 = domingo).","example":{"days":{"0":[["09:00","12:00"],["14:00","18:00"]],"5":[["09:00","12:00"]]},"note":"Turnos con 24 h de anticipaci\u00f3n"},"properties":{"days":{"additionalProperties":{"items":{"items":{"pattern":"^\\d{2}:\\d{2}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"type":"object"},"note":{"maxLength":200,"type":"string"}},"type":["object","null"]},"barcode":{"description":"GTIN, EAN, UPC o ISBN.","maxLength":64,"pattern":"^[0-9A-Za-z\\-]{4,64}$","type":["string","null"]},"brand":{"maxLength":80,"type":["string","null"]},"bundle_items":{"description":"Qu\u00e9 incluye un combo o kit.","items":{"properties":{"item":{"description":"external_id o sku","type":"string"},"name":{"type":"string"},"quantity":{"minimum":1,"type":"integer"}},"type":"object"},"maxItems":50,"type":"array"},"category":{"description":"Nombre de la categor\u00eda (se crea si no existe).","maxLength":60,"type":["string","null"]},"category_external_id":{"description":"Alternativa: categor\u00eda por su external_id (tiene que existir).","type":["string","null"]},"condition":{"enum":["new","used","refurbished",null],"type":["string","null"]},"cost_price":{"description":"Costo (nunca lo ve el cliente ni Dot AI).","type":["number","string","null"]},"created_at":{"format":"date-time","readOnly":true,"type":["string","null"]},"currency":{"default":"PYG","enum":["PYG","USD","BRL","ARS","EUR","UYU","CLP","BOB","PEN","COP","MXN","GBP","CAD","CHF","JPY","CNY"],"type":"string"},"delivery_available":{"default":true,"type":"boolean"},"description":{"maxLength":2000,"type":["string","null"]},"duration_minutes":{"description":"Servicios: duraci\u00f3n del turno.","maximum":1440,"minimum":5,"type":["integer","null"]},"external_id":{"readOnly":true,"type":["string","null"]},"featured":{"default":false,"description":"Destacado: Dot AI lo recomienda primero.","type":"boolean"},"id":{"format":"uuid","readOnly":true,"type":"string"},"images":{"description":"Fotos (https). Una URL o {url, alt}. Dotly no las descarga.","items":{"oneOf":[{"format":"uri","type":"string"},{"properties":{"alt":{"type":"string"},"url":{"format":"uri","type":"string"}},"type":"object"}]},"maxItems":20,"type":"array"},"is_active":{"default":true,"type":"boolean"},"kind":{"default":"product","enum":["product","service"],"type":"string"},"lead_time_days":{"description":"D\u00edas de entrega o fabricaci\u00f3n.","maximum":3650,"minimum":0,"type":["integer","null"]},"locations":{"description":"Stock por sucursal o dep\u00f3sito. Sin `stock` expl\u00edcito, el total es la suma.","example":[{"name":"Casa central","stock":3},{"name":"Sucursal Luque","stock":1}],"items":{"additionalProperties":false,"properties":{"address":{"maxLength":200,"type":["string","null"]},"external_id":{"maxLength":120,"type":["string","null"]},"name":{"maxLength":80,"type":"string"},"stock":{"minimum":0,"type":["integer","null"]}},"required":["name"],"type":"object"},"maxItems":50,"type":"array"},"low_stock_at":{"minimum":0,"type":["integer","null"]},"max_order_qty":{"minimum":1,"type":["integer","null"]},"metadata":{"description":"Datos libres de tu sistema (hasta 8 KB). Dot AI no los lee.","type":"object"},"min_age":{"description":"Edad m\u00ednima (p. ej. 18 para bebidas alcoh\u00f3licas).","maximum":99,"minimum":0,"type":["integer","null"]},"min_order_qty":{"minimum":1,"type":["integer","null"]},"name":{"maxLength":120,"type":"string"},"object":{"const":"item","readOnly":true},"option_groups":{"description":"Adicionales y opciones con precio (extras, guarniciones, grabado).","example":[{"choices":[{"name":"Queso","price":5000},{"name":"Panceta","price":7000}],"max":3,"name":"Extras"}],"items":{"properties":{"choices":{"items":{"properties":{"is_active":{"type":"boolean"},"name":{"maxLength":60,"type":"string"},"price":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]}},"required":["name"],"type":"object"},"maxItems":50,"type":"array"},"max":{"type":"integer"},"min":{"type":"integer"},"name":{"maxLength":60,"type":"string"},"required":{"type":"boolean"}},"required":["name","choices"],"type":"object"},"maxItems":20,"type":"array"},"order_multiple":{"description":"Se vende de a N (cajas, packs).","minimum":1,"type":["integer","null"]},"other_prices":{"description":"El mismo producto en otras monedas.","example":[{"currency":"USD","price":65.5}],"items":{"properties":{"currency":{"enum":["PYG","USD","BRL","ARS","EUR","UYU","CLP","BOB","PEN","COP","MXN","GBP","CAD","CHF","JPY","CNY"],"type":"string"},"price":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]},"promo_price":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]}},"required":["currency","price"],"type":"object"},"maxItems":10,"type":"array"},"price":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]},"price_from":{"default":false,"description":"El precio es \u00abdesde\u00bb (var\u00eda seg\u00fan lo que se pida).","type":"boolean"},"price_max":{"description":"Rango de precios: de price a price_max.","type":["number","string","null"]},"price_tiers":{"description":"Precios por cantidad o por lista de precios (mayorista).","example":[{"min_quantity":12,"price":9000},{"group":"Mayorista","min_quantity":1,"price":8000}],"items":{"properties":{"group":{"maxLength":60,"type":["string","null"]},"min_quantity":{"minimum":1,"type":"integer"},"price":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]}},"required":["price"],"type":"object"},"maxItems":20,"type":"array"},"product_type":{"description":"Productos: f\u00edsico, digital o licencia, combo o kit, suscripci\u00f3n, tarjeta de regalo o alquiler.","enum":["physical","digital","bundle","subscription","gift_card","rental",null],"type":["string","null"]},"promo_ends_at":{"description":"Hasta cu\u00e1ndo vale; despu\u00e9s se usa el precio normal.","format":"date-time","type":["string","null"]},"promo_price":{"description":"Precio promocional (menor que price).","type":["number","string","null"]},"promo_starts_at":{"description":"Desde cu\u00e1ndo vale el precio promocional (vac\u00edo = ya).","format":"date-time","type":["string","null"]},"restock_at":{"description":"Llegada de la preventa o reposici\u00f3n.","format":"date-time","type":["string","null"]},"service_details":{"description":"Servicios: modalidad, cupos, anticipaci\u00f3n, sesiones, lugar y profesionales.","example":{"booking_notice_hours":24,"capacity":12,"modality":["in_person","online"]},"properties":{"booking_notice_hours":{"type":"integer"},"buffer_minutes":{"type":"integer"},"capacity":{"type":"integer"},"location":{"type":"string"},"modality":{"items":{"enum":["in_person","online","at_home"],"type":"string"},"type":"array"},"sessions":{"type":"integer"},"staff":{"items":{"type":"string"},"type":"array"}},"type":"object"},"shipping":{"additionalProperties":false,"description":"Env\u00edo del producto.","example":{"height_cm":12,"length_cm":30,"pickup":true,"weight_g":850,"width_cm":20},"properties":{"free_shipping":{"type":"boolean"},"height_cm":{"type":"number"},"length_cm":{"type":"number"},"notes":{"maxLength":200,"type":"string"},"pickup":{"description":"Se puede retirar.","type":"boolean"},"requires_shipping":{"type":"boolean"},"shipping_class":{"maxLength":60,"type":"string"},"shipping_price":{"description":"Costo de env\u00edo propio del producto (en vez del de la zona).","type":["number","string","null"]},"ships_in_days":{"minimum":0,"type":"integer"},"weight_g":{"minimum":0,"type":"integer"},"width_cm":{"type":"number"}},"type":"object"},"sku":{"description":"\u00danico por organizaci\u00f3n. En la primera sincronizaci\u00f3n, un producto cargado a mano con el mismo SKU se vincula en vez de duplicarse.","maxLength":40,"type":["string","null"]},"sort_order":{"default":0,"type":"integer"},"source":{"properties":{"connection_id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"}},"readOnly":true,"type":["object","null"]},"source_updated_at":{"description":"Fecha de modificaci\u00f3n en tu sistema: un cambio m\u00e1s viejo que el guardado se ignora.","format":"date-time","type":["string","null"]},"stock":{"description":"Con variantes que controlan stock, es la suma de ellas (solo lectura).","minimum":0,"type":["integer","null"]},"stock_policy":{"default":"deny","description":"Sin stock: no se vende (deny), se puede encargar (backorder), preventa o se fabrica a pedido.","enum":["deny","backorder","preorder","made_to_order"],"type":"string"},"stock_state":{"enum":["unlimited","in_stock","low","out"],"readOnly":true,"type":"string"},"subscription":{"description":"Suscripciones o membres\u00edas.","example":{"interval":"month","interval_count":1,"trial_days":7},"properties":{"interval":{"enum":["day","week","month","year"],"type":"string"},"interval_count":{"minimum":1,"type":"integer"},"trial_days":{"minimum":0,"type":"integer"}},"type":"object"},"synced_at":{"format":"date-time","readOnly":true,"type":["string","null"]},"tags":{"example":["vegano","sin TACC"],"items":{"maxLength":40,"type":"string"},"maxItems":30,"type":"array"},"tax":{"description":"IVA de Paraguay (precios con IVA incluido).","enum":["iva_10","iva_5","exento",null],"type":["string","null"]},"tax_included":{"default":true,"description":"Si el precio incluye el impuesto.","type":"boolean"},"tax_rate":{"description":"Impuesto en % para otros pa\u00edses (con tax de Paraguay se completa solo).","maximum":100,"minimum":0,"type":["number","null"]},"track_stock":{"default":false,"type":"boolean"},"unit":{"examples":["unidad","par","kg","g","litro","metro","m\u00b2","caja","paquete","docena","hora","sesi\u00f3n","mes"],"maxLength":24,"type":["string","null"]},"updated_at":{"format":"date-time","readOnly":true,"type":["string","null"]},"url":{"description":"P\u00e1gina del producto en tu tienda.","format":"uri","maxLength":500,"type":["string","null"]},"variants":{"description":"En PUT reemplaza la lista completa (alta, cambio y baja).","items":{"$ref":"#/components/schemas/Variant"},"maxItems":250,"type":"array"},"version":{"readOnly":true,"type":"integer"},"warranty":{"example":"12 meses","maxLength":120,"type":["string","null"]}},"required":["name"],"type":"object"},"Member":{"properties":{"email":{"type":["string","null"]},"id":{"format":"uuid","type":"string"},"name":{"type":["string","null"]},"object":{"const":"member"},"role":{"type":"string"},"role_name":{"type":"string"},"status":{"type":"string"},"whatsapp_account_ids":{"items":{"format":"uuid","type":"string"},"type":["array","null"]}},"type":"object"},"Message":{"properties":{"attachment":{"type":["object","null"]},"caption":{"type":["string","null"]},"conversation_id":{"format":"uuid","type":"string"},"created_at":{"format":"date-time","type":["string","null"]},"delete_until":{"description":"Hasta cu\u00e1ndo WhatsApp deja eliminarlo para todos (2 d\u00edas y 12 horas); null si ya no se puede.","format":"date-time","type":["string","null"]},"deleted":{"type":"boolean"},"deleted_at":{"format":"date-time","type":["string","null"]},"direction":{"enum":["inbound","outbound"],"type":"string"},"edit_until":{"description":"Hasta cu\u00e1ndo WhatsApp deja editarlo (15 minutos); null si ya no se puede.","format":"date-time","type":["string","null"]},"edited_at":{"format":"date-time","type":["string","null"]},"error":{"type":["string","null"]},"id":{"format":"uuid","type":"string"},"object":{"const":"message"},"reactions":{"type":"array"},"reply_to":{"type":["object","null"]},"sender":{"type":"object"},"sent_at":{"format":"date-time","type":["string","null"]},"status":{"enum":["received","pending","sent","delivered","read","failed"],"type":"string"},"template_id":{"format":"uuid","type":["string","null"]},"text":{"type":["string","null"]},"transcript":{"type":["string","null"]},"type":{"type":"string"},"whatsapp_message_id":{"type":["string","null"]}},"type":"object"},"SyncRun":{"properties":{"error":{"type":["string","null"]},"errors":{"type":"array"},"expires_at":{"format":"date-time","type":["string","null"]},"finished_at":{"format":"date-time","type":["string","null"]},"id":{"format":"uuid","type":"string"},"mode":{"type":"string"},"started_at":{"format":"date-time","type":["string","null"]},"stats":{"type":"object"},"status":{"enum":["running","succeeded","failed","cancelled"],"type":"string"},"trigger":{"type":"string"}},"type":"object"},"Tag":{"properties":{"color":{"enum":["gray","green","teal","blue","purple","pink","red","orange","yellow"],"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"type":"string"},"object":{"const":"tag"}},"type":"object"},"Template":{"properties":{"account_ids":{"description":"N\u00fameros de WhatsApp donde se ofrece en el chat (vac\u00eda = en todos).","items":{"format":"uuid","type":"string"},"type":"array"},"body":{"type":"string"},"category":{"type":"string"},"id":{"format":"uuid","type":"string"},"is_active":{"type":"boolean"},"last_used_at":{"format":"date-time","type":["string","null"]},"name":{"type":"string"},"object":{"const":"template"},"options":{"items":{"properties":{"actions":{"items":{"type":"object"},"type":"array"},"keywords":{"items":{"type":"string"},"type":"array"},"label":{"maxLength":100,"type":"string"},"next_template_id":{"description":"Submen\u00fa que abre esta opci\u00f3n (flujos sin l\u00edmite de niveles).","format":"uuid","type":["string","null"]}},"type":"object"},"maxItems":10,"type":"array"},"shortcut":{"type":["string","null"]},"usage_count":{"type":"integer"}},"type":"object"},"Variant":{"additionalProperties":false,"properties":{"barcode":{"description":"GTIN, EAN, UPC o ISBN.","maxLength":64,"pattern":"^[0-9A-Za-z\\-]{4,64}$","type":["string","null"]},"cost_price":{"description":"Costo (nunca lo ve el cliente ni Dot AI).","type":["number","string","null"]},"external_id":{"maxLength":120,"type":["string","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"image":{"description":"Foto de la variante (https).","format":"uri","maxLength":500,"type":["string","null"]},"is_active":{"default":true,"type":"boolean"},"locations":{"description":"Stock por sucursal o dep\u00f3sito. Sin `stock` expl\u00edcito, el total es la suma.","example":[{"name":"Casa central","stock":3},{"name":"Sucursal Luque","stock":1}],"items":{"additionalProperties":false,"properties":{"address":{"maxLength":200,"type":["string","null"]},"external_id":{"maxLength":120,"type":["string","null"]},"name":{"maxLength":80,"type":"string"},"stock":{"minimum":0,"type":["integer","null"]}},"required":["name"],"type":"object"},"maxItems":50,"type":"array"},"name":{"description":"Por defecto, los valores de options unidos con \u00ab / \u00bb.","maxLength":120,"type":"string"},"options":{"additionalProperties":{"type":"string"},"example":{"Color":"Negro","Talle":"40"},"maxProperties":5,"type":"object"},"price":{"description":"null = el precio del producto.","type":["number","string","null"]},"promo_price":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]},"sku":{"maxLength":40,"type":["string","null"]},"stock":{"minimum":0,"type":["integer","null"]},"stock_state":{"enum":["unlimited","in_stock","out"],"readOnly":true,"type":"string"},"track_stock":{"type":"boolean"},"weight_g":{"description":"Peso en gramos.","minimum":0,"type":["integer","null"]}},"type":"object"},"Webhook":{"properties":{"consecutive_failures":{"type":"integer"},"description":{"type":["string","null"]},"disabled_reason":{"type":["string","null"]},"events":{"items":{"type":"string"},"type":"array"},"id":{"format":"uuid","type":"string"},"is_active":{"type":"boolean"},"url":{"format":"uri","type":"string"}},"type":"object"},"WriteResult":{"properties":{"changes":{"items":{"type":"string"},"type":"array"},"data":{"type":"object"},"matched_by":{"type":"string"},"result":{"enum":["created","updated","unchanged","ignored_stale"],"type":"string"}},"type":"object"},"Zone":{"additionalProperties":false,"properties":{"address":{"description":"Direcci\u00f3n del punto de retiro.","maxLength":200,"type":["string","null"]},"areas":{"description":"Ciudades o barrios que cubre la zona.","example":["Luque","Aregu\u00e1"],"items":{"maxLength":60,"type":"string"},"maxItems":60,"type":"array"},"carrier":{"maxLength":60,"type":["string","null"]},"currency":{"enum":["PYG","USD","BRL","ARS","EUR","UYU","CLP","BOB","PEN","COP","MXN","GBP","CAD","CHF","JPY","CNY"],"type":"string"},"eta":{"example":"24 h","maxLength":60,"type":["string","null"]},"external_id":{"readOnly":true,"type":["string","null"]},"free_from":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]},"id":{"format":"uuid","readOnly":true,"type":"string"},"is_active":{"type":"boolean"},"kind":{"default":"delivery","description":"Env\u00edo a domicilio o punto de retiro.","enum":["delivery","pickup"],"type":"string"},"max_weight_g":{"minimum":1,"type":["integer","null"]},"min_order":{"description":"Monto en unidades de la moneda (189000, 12500.50 o \"12500.50\"). null = a consultar.","type":["number","string","null"]},"name":{"maxLength":80,"type":"string"},"notes":{"maxLength":300,"type":["string","null"]},"object":{"const":"zone","readOnly":true},"price":{"description":"Costo de env\u00edo. 0 = gratis; null = a coordinar.","type":["number","string","null"]},"price_per_kg":{"description":"Costo extra por kilo.","type":["number","string","null"]},"sort_order":{"type":"integer"},"source_updated_at":{"format":"date-time","type":["string","null"]},"version":{"readOnly":true,"type":"integer"}},"required":["name"],"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"dtly_live_\u2026","description":"Clave de la integraci\u00f3n. Permisos: catalog:read (Leer productos, servicios, categor\u00edas, zonas y promociones), catalog:write (Crear, modificar y eliminar el cat\u00e1logo (incluye stock y sincronizaciones)), contacts:read (Ver contactos, etiquetas y el embudo), contacts:write (Crear, modificar y sincronizar contactos (etapa, valor y etiquetas)), contacts:delete (Eliminar contactos), conversations:read (Ver conversaciones y sus mensajes), conversations:write (Asignar, cerrar y reabrir conversaciones), messages:send (Enviar y programar mensajes de WhatsApp), templates:read (Ver plantillas y respuestas r\u00e1pidas), team:read (Ver integrantes, equipos y n\u00fameros de WhatsApp), automations:read (Ver automatizaciones y sus ejecuciones), analytics:read (Ver estad\u00edsticas), ai:use (Usar Dot AI (sugerir, resumir, mejorar y traducir; consume cr\u00e9ditos)), account:read (Ver el plan, su estado y los cr\u00e9ditos de Dot AI), embed:sessions (Abrir Dotly dentro de tu sistema (sesiones embebidas cortas para tu equipo)), events:read (Leer el feed de eventos), webhooks:manage (Administrar destinos de webhooks)","scheme":"bearer","type":"http"}}},"info":{"contact":{"name":"Dotly","url":"https://www.dotly.com.py/api/v1/docs"},"description":"Contactos y embudo, conversaciones y mensajes de WhatsApp, plantillas, equipo, programados, estad\u00edsticas, Dot AI, Dotly embebido, webhooks firmados y el cat\u00e1logo (productos, variantes, categor\u00edas, precios, stock, servicios, zonas de env\u00edo, impuestos y promociones) desde cualquier CRM, ERP o tienda. Cada clave act\u00faa en nombre de una persona del equipo: puede, como mucho, lo que esa persona puede en Dotly.","title":"API de Dotly","version":"1.1.0"},"openapi":"3.1.0","paths":{"/":{"get":{"operationId":"whoami","responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"}},"security":[{"bearerAuth":[]}],"summary":"Informaci\u00f3n de la clave, la integraci\u00f3n y los l\u00edmites","tags":["General"]}},"/account":{"get":{"operationId":"get_account","responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["account:read"]}],"summary":"Plan, suscripci\u00f3n, funciones y cr\u00e9ditos de Dot AI","tags":["Cuenta"]}},"/ai/rewrite":{"post":{"operationId":"ai_rewrite","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"style":{"enum":["mejorar","formal","cercano","breve"],"type":"string"},"text":{"maxLength":2000,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Cr\u00e9ditos de Dot AI insuficientes"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes o de uso de Dot AI"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Dot AI no disponible (reintent\u00e1 con la misma Idempotency-Key)"}},"security":[{"bearerAuth":["ai:use"]}],"summary":"Mejorar la redacci\u00f3n","tags":["Dot AI"]}},"/ai/suggest":{"post":{"operationId":"ai_suggest","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"avoid":{"maxLength":1500,"type":"string"},"conversation_id":{"format":"uuid","type":"string"},"draft":{"maxLength":300,"type":"string"}},"required":["conversation_id"],"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Cr\u00e9ditos de Dot AI insuficientes"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes o de uso de Dot AI"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Dot AI no disponible (reintent\u00e1 con la misma Idempotency-Key)"}},"security":[{"bearerAuth":["ai:use"]}],"summary":"Respuesta sugerida","tags":["Dot AI"]}},"/ai/summarize":{"post":{"operationId":"ai_summarize","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"conversation_id":{"format":"uuid","type":"string"}},"required":["conversation_id"],"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Cr\u00e9ditos de Dot AI insuficientes"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes o de uso de Dot AI"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Dot AI no disponible (reintent\u00e1 con la misma Idempotency-Key)"}},"security":[{"bearerAuth":["ai:use"]}],"summary":"Resumen de la conversaci\u00f3n","tags":["Dot AI"]}},"/ai/translate":{"post":{"operationId":"ai_translate","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"conversation_id":{"format":"uuid","type":"string"},"target":{"type":"string"},"text":{"type":"string"}},"required":["text","target"],"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Cr\u00e9ditos de Dot AI insuficientes"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes o de uso de Dot AI"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Dot AI no disponible (reintent\u00e1 con la misma Idempotency-Key)"}},"security":[{"bearerAuth":["ai:use"]}],"summary":"Traducir","tags":["Dot AI"]}},"/ai/usage":{"get":{"operationId":"ai_usage","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"usage":{"description":"L\u00edmites de uso de la persona (null = sin l\u00edmites).","type":["object","null"]}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["ai:use"]}],"summary":"Disponibilidad y l\u00edmites de uso de la persona","tags":["Dot AI"]}},"/automations":{"get":{"operationId":"list_automations","responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["automations:read"]}],"summary":"Automatizaciones","tags":["Automatizaciones"]}},"/automations/runs":{"get":{"operationId":"list_automation_runs","responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["automations:read"]}],"summary":"\u00daltimas ejecuciones","tags":["Automatizaciones"]}},"/batch":{"post":{"operationId":"batch","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"operations":{"items":{"$ref":"#/components/schemas/BatchOperation"},"maxItems":500,"type":"array"}},"required":["operations"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/BatchResult"},"type":"array"},"failed":{"type":"integer"}},"type":"object"}}},"description":"Resultado por operaci\u00f3n (cada una se aplica o falla sola)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Hasta 500 operaciones (upsert, patch, delete, stock) en una solicitud","tags":["Lotes"]}},"/categories":{"get":{"operationId":"list_categories","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor de la p\u00e1gina anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"updated_since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"active","schema":{"type":"boolean"}},{"description":"Uno o varios, separados por coma.","in":"query","name":"external_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Category"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista paginada"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Listar categor\u00edas","tags":["Categor\u00edas"]}},"/categories/{ref}":{"delete":{"operationId":"delete_categories","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"Eliminado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Eliminar","tags":["Categor\u00edas"]},"get":{"operationId":"get_categories","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Category"}},"type":"object"}}},"description":"El recurso (encabezado ETag con la versi\u00f3n)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Obtener uno","tags":["Categor\u00edas"]},"parameters":[{"description":"Identificador del sistema de origen (external_id, codificado en la URL) o `id:<uuid>` de Dotly.","in":"path","name":"ref","required":true,"schema":{"type":"string"}}],"patch":{"operationId":"patch_categories","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Cambiar solo los campos enviados","tags":["Categor\u00edas"]},"put":{"operationId":"upsert_categories","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Crear o reemplazar (upsert por external_id)","tags":["Categor\u00edas"]}},"/contacts":{"get":{"operationId":"list_contacts","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"enum":["lead","customer","inactive"],"type":"string"}},{"in":"query","name":"stage","schema":{"enum":["nuevo","calificado","propuesta","negociacion","ganado","perdido"],"type":"string"}},{"in":"query","name":"tag","schema":{"type":"string"}},{"in":"query","name":"phone","schema":{"type":"string"}},{"in":"query","name":"email","schema":{"type":"string"}},{"description":"Separados por coma.","in":"query","name":"external_id","schema":{"type":"string"}},{"in":"query","name":"linked","schema":{"type":"boolean"}},{"in":"query","name":"updated_since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","schema":{"default":"updated_at","enum":["updated_at","-created_at"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Contact"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes o de uso de Dot AI"}},"security":[{"bearerAuth":["contacts:read"]}],"summary":"Listar contactos (cursor)","tags":["Contactos"]},"post":{"operationId":"create_contact","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"assigned_member_id":{"format":"uuid","type":["string","null"]},"company":{"type":["string","null"]},"custom_fields":{"description":"Se combina por clave; null borra la clave. Requiere el plan con campos personalizados.","type":"object"},"deal_value":{"description":"En guaran\u00edes.","minimum":0,"type":["integer","null"]},"email":{"type":["string","null"]},"interest":{"type":["string","null"]},"name":{"type":["string","null"]},"notes":{"type":["string","null"]},"phone":{"description":"Con c\u00f3digo de pa\u00eds (595981123456) o local paraguayo.","type":"string"},"source":{"type":["string","null"]},"stage":{"enum":["nuevo","calificado","propuesta","negociacion","ganado","perdido"],"type":"string"},"status":{"enum":["lead","customer","inactive"],"type":"string"},"tags":{"description":"Reemplaza las etiquetas.","items":{"maxLength":40,"type":"string"},"maxItems":20,"type":"array"}},"required":["phone"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Contact"}},"type":"object"}}},"description":"Creado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Crear contacto","tags":["Contactos"]}},"/contacts/batch":{"post":{"operationId":"batch_contacts","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"operations":{"items":{"properties":{"data":{"type":"object"},"external_id":{"type":"string"},"op":{"default":"upsert","enum":["upsert","unlink","delete"],"type":"string"}},"type":"object"},"maxItems":100,"type":"array"}},"required":["operations"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Resultado por operaci\u00f3n"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Hasta 100 operaciones con resultado por operaci\u00f3n","tags":["Integraci\u00f3n de contactos"]}},"/contacts/external/{external_id}":{"delete":{"operationId":"delete_external_contact","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"in":"query","name":"mode","schema":{"default":"unlink","enum":["unlink","delete"],"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Quitar el v\u00ednculo (mode=unlink) o eliminar (mode=delete)","tags":["Integraci\u00f3n de contactos"]},"get":{"operationId":"get_external_contact","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Contact"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["contacts:read"]}],"summary":"Contacto vinculado a tu id","tags":["Integraci\u00f3n de contactos"]},"parameters":[{"description":"El id del contacto en tu sistema (codificado en la URL).","in":"path","name":"external_id","required":true,"schema":{"maxLength":120,"type":"string"}}],"patch":{"operationId":"update_external_contact","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"assigned_member_id":{"format":"uuid","type":["string","null"]},"company":{"type":["string","null"]},"custom_fields":{"description":"Se combina por clave; null borra la clave. Requiere el plan con campos personalizados.","type":"object"},"deal_value":{"description":"En guaran\u00edes.","minimum":0,"type":["integer","null"]},"email":{"type":["string","null"]},"interest":{"type":["string","null"]},"name":{"type":["string","null"]},"notes":{"type":["string","null"]},"phone":{"description":"Con c\u00f3digo de pa\u00eds (595981123456) o local paraguayo.","type":"string"},"source":{"type":["string","null"]},"stage":{"enum":["nuevo","calificado","propuesta","negociacion","ganado","perdido"],"type":"string"},"status":{"enum":["lead","customer","inactive"],"type":"string"},"tags":{"description":"Reemplaza las etiquetas.","items":{"maxLength":40,"type":"string"},"maxItems":20,"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpsertResult"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Solo actualizar (404 si no hay v\u00ednculo)","tags":["Integraci\u00f3n de contactos"]},"put":{"operationId":"upsert_external_contact","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"assigned_member_id":{"format":"uuid","type":["string","null"]},"company":{"type":["string","null"]},"custom_fields":{"description":"Se combina por clave; null borra la clave. Requiere el plan con campos personalizados.","type":"object"},"deal_value":{"description":"En guaran\u00edes.","minimum":0,"type":["integer","null"]},"email":{"type":["string","null"]},"interest":{"type":["string","null"]},"name":{"type":["string","null"]},"notes":{"type":["string","null"]},"phone":{"description":"Con c\u00f3digo de pa\u00eds (595981123456) o local paraguayo.","type":"string"},"source":{"type":["string","null"]},"source_updated_at":{"format":"date-time","type":["string","null"]},"stage":{"enum":["nuevo","calificado","propuesta","negociacion","ganado","perdido"],"type":"string"},"status":{"enum":["lead","customer","inactive"],"type":"string"},"tags":{"description":"Reemplaza las etiquetas.","items":{"maxLength":40,"type":"string"},"maxItems":20,"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpsertResult"}}},"description":"Actualizado, vinculado, sin cambios o descartado por viejo"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpsertResult"}}},"description":"Creado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto (duplicado, otra integraci\u00f3n o Idempotency-Key en curso)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Crear o actualizar por tu id (vincula por tel\u00e9fono)","tags":["Integraci\u00f3n de contactos"]}},"/contacts/{contact_id}":{"delete":{"operationId":"delete_contact","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"Eliminado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["contacts:delete"]}],"summary":"Eliminar contacto (y sus conversaciones)","tags":["Contactos"]},"get":{"operationId":"get_contact","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Contact"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["contacts:read"]}],"summary":"Obtener contacto","tags":["Contactos"]},"parameters":[{"in":"path","name":"contact_id","required":true,"schema":{"format":"uuid","type":"string"}}],"patch":{"operationId":"update_contact","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"assigned_member_id":{"format":"uuid","type":["string","null"]},"company":{"type":["string","null"]},"custom_fields":{"description":"Se combina por clave; null borra la clave. Requiere el plan con campos personalizados.","type":"object"},"deal_value":{"description":"En guaran\u00edes.","minimum":0,"type":["integer","null"]},"email":{"type":["string","null"]},"interest":{"type":["string","null"]},"name":{"type":["string","null"]},"notes":{"type":["string","null"]},"phone":{"description":"Con c\u00f3digo de pa\u00eds (595981123456) o local paraguayo.","type":"string"},"source":{"type":["string","null"]},"stage":{"enum":["nuevo","calificado","propuesta","negociacion","ganado","perdido"],"type":"string"},"status":{"enum":["lead","customer","inactive"],"type":"string"},"tags":{"description":"Reemplaza las etiquetas.","items":{"maxLength":40,"type":"string"},"maxItems":20,"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Contact"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Cambiar solo lo enviado","tags":["Contactos"]}},"/contacts/{contact_id}/conversations":{"get":{"operationId":"list_contact_conversations","parameters":[{"in":"path","name":"contact_id","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor anterior.","in":"query","name":"cursor","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Conversation"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["conversations:read"]}],"summary":"Conversaciones del contacto","tags":["Contactos"]}},"/conversations":{"get":{"operationId":"list_conversations","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"enum":["open","pending","closed"],"type":"string"}},{"description":"me, none o el id de un integrante.","in":"query","name":"assigned","schema":{"type":"string"}},{"in":"query","name":"whatsapp_account_id","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"contact_id","schema":{"format":"uuid","type":"string"}},{"description":"Solo los chats con esa etiqueta.","in":"query","name":"tag_id","schema":{"format":"uuid","type":"string"}},{"description":"Sin kind: chats y grupos juntos.","in":"query","name":"kind","schema":{"enum":["person","group"],"type":"string"}},{"in":"query","name":"updated_since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","schema":{"default":"-updated_at","enum":["-updated_at","updated_at"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Conversation"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["conversations:read"]}],"summary":"Listar conversaciones (cursor)","tags":["Conversaciones"]}},"/conversations/{conversation_id}":{"get":{"operationId":"get_conversation","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Conversation"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["conversations:read"]}],"summary":"Obtener conversaci\u00f3n","tags":["Conversaciones"]},"parameters":[{"in":"path","name":"conversation_id","required":true,"schema":{"format":"uuid","type":"string"}}],"patch":{"operationId":"update_conversation","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"assigned_member_id":{"format":"uuid","type":["string","null"]},"status":{"enum":["open","pending","closed"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Conversation"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["conversations:write"]}],"summary":"Cambiar estado o asignaci\u00f3n","tags":["Conversaciones"]}},"/conversations/{conversation_id}/group/reset":{"post":{"operationId":"reset_group","parameters":[{"in":"path","name":"conversation_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Listo"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["conversations:write"]}],"summary":"Reparar mensajes en \"Esperando el mensaje\"","tags":["Grupos"]}},"/conversations/{conversation_id}/labels":{"put":{"description":"Requiere tambi\u00e9n conversations:read.","operationId":"set_conversation_labels","parameters":[{"in":"path","name":"conversation_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"tags":{"items":{"maxLength":40,"type":"string"},"maxItems":20,"type":"array"}},"required":["tags"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Etiquetas con su color"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Etiquetas del chat (persona o grupo): reemplaza la lista por nombre","tags":["Conversaciones"]}},"/conversations/{conversation_id}/messages":{"get":{"operationId":"list_messages","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"order","schema":{"default":"-created_at","enum":["-created_at","created_at"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Message"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["conversations:read"]}],"summary":"Mensajes de la conversaci\u00f3n (cursor)","tags":["Mensajes"]},"parameters":[{"in":"path","name":"conversation_id","required":true,"schema":{"format":"uuid","type":"string"}}],"post":{"operationId":"send_message","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"reply_to_message_id":{"format":"uuid","type":"string"},"template_id":{"format":"uuid","type":"string"},"text":{"maxLength":4096,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Message"}},"type":"object"}}},"description":"Encolado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Enviar texto (as\u00edncrono: vuelve pending)","tags":["Mensajes"]}},"/discounts":{"get":{"operationId":"list_discounts","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor de la p\u00e1gina anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"updated_since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"active","schema":{"type":"boolean"}},{"description":"Uno o varios, separados por coma.","in":"query","name":"external_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Discount"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista paginada"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Listar promociones","tags":["Promociones"]}},"/discounts/{ref}":{"delete":{"operationId":"delete_discounts","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"Eliminado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Eliminar","tags":["Promociones"]},"get":{"operationId":"get_discounts","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Discount"}},"type":"object"}}},"description":"El recurso (encabezado ETag con la versi\u00f3n)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Obtener uno","tags":["Promociones"]},"parameters":[{"description":"Identificador del sistema de origen (external_id, codificado en la URL) o `id:<uuid>` de Dotly.","in":"path","name":"ref","required":true,"schema":{"type":"string"}}],"patch":{"operationId":"patch_discounts","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Cambiar solo los campos enviados","tags":["Promociones"]},"put":{"operationId":"upsert_discounts","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Discount"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Crear o reemplazar (upsert por external_id)","tags":["Promociones"]}},"/embed/sessions":{"get":{"operationId":"list_embed_sessions","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EmbedSession"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["embed:sessions"]}],"summary":"Sesiones de la aplicaci\u00f3n","tags":["Embebido"]},"post":{"operationId":"create_embed_session","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"member_email":{"format":"email","type":"string"},"member_id":{"format":"uuid","type":"string"},"modules":{"items":{"type":"string"},"type":"array"},"origin":{"format":"uri","type":"string"},"start":{"type":"object"},"theme":{"type":"object"},"ttl_minutes":{"maximum":480,"minimum":5,"type":"integer"}},"required":["origin"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/EmbedSession"},"url":{"format":"uri","type":"string"}},"type":"object"}}},"description":"Creada"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["embed:sessions"]}],"summary":"Sesi\u00f3n corta para mostrar Dotly en tu sistema (URL de un solo uso)","tags":["Embebido"]}},"/embed/sessions/{session_id}":{"delete":{"operationId":"revoke_embed_session","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/EmbedSession"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["embed:sessions"]}],"summary":"Cerrar sesi\u00f3n al instante","tags":["Embebido"]},"get":{"operationId":"get_embed_session","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/EmbedSession"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["embed:sessions"]}],"summary":"Obtener sesi\u00f3n","tags":["Embebido"]},"parameters":[{"in":"path","name":"session_id","required":true,"schema":{"format":"uuid","type":"string"}}]},"/events":{"get":{"operationId":"list_events","parameters":[{"description":"next_after anterior.","in":"query","name":"after","schema":{"default":0,"type":"integer"}},{"in":"query","name":"limit","schema":{"default":100,"maximum":500,"type":"integer"}},{"description":"Separados por coma; admite \u00abcatalog.item.*\u00bb.","in":"query","name":"types","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Event"},"type":"array"},"has_more":{"type":"boolean"},"next_after":{"type":"integer"}},"type":"object"}}},"description":"Eventos en orden"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"}},"security":[{"bearerAuth":["events:read"]}],"summary":"Feed de cambios (consulta peri\u00f3dica, alternativa a los webhooks)","tags":["Eventos"]}},"/groups/import":{"post":{"operationId":"import_groups","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"whatsapp_account_id":{"format":"uuid","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Cu\u00e1ntos hab\u00eda y cu\u00e1ntos se agregaron"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["conversations:write"]}],"summary":"Traer todos los grupos del n\u00famero","tags":["Grupos"]}},"/groups/join":{"post":{"operationId":"join_group","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"link":{"type":"string"},"whatsapp_account_id":{"format":"uuid","type":"string"}},"required":["link"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Conversation"}},"type":"object"}}},"description":"Unido"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["conversations:write"]}],"summary":"Unirse con el enlace de invitaci\u00f3n","tags":["Grupos"]}},"/groups/join/preview":{"post":{"operationId":"preview_group_invite","requestBody":{"content":{"application/json":{"schema":{"properties":{"link":{"type":"string"},"whatsapp_account_id":{"format":"uuid","type":"string"}},"required":["link"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Nombre, integrantes y descripci\u00f3n"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["conversations:write"]}],"summary":"Qu\u00e9 grupo es un enlace de invitaci\u00f3n","tags":["Grupos"]}},"/hooks/{token}":{"post":{"operationId":"trigger_sync","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Recibido"},"404":{"description":"URL de aviso inv\u00e1lida"}},"security":[],"summary":"Aviso de cambios desde tu sistema (Shopify, Odoo, cron): Dotly sincroniza enseguida","tags":["Avisos entrantes"]}},"/inventory":{"post":{"operationId":"update_inventory","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"updates":{"items":{"properties":{"delta":{"type":"integer"},"item":{"type":"string"},"quantity":{"minimum":0,"type":"integer"},"variant":{"type":"string"}},"required":["item"],"type":"object"},"maxItems":500,"type":"array"}},"required":["updates"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/BatchResult"},"type":"array"},"failed":{"type":"integer"}},"type":"object"}}},"description":"Resultado por fila"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Fijar o ajustar stock en lote (hasta 500)","tags":["Stock"]}},"/items":{"get":{"operationId":"list_items","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor de la p\u00e1gina anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"updated_since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"active","schema":{"type":"boolean"}},{"description":"Uno o varios, separados por coma.","in":"query","name":"external_id","schema":{"type":"string"}},{"in":"query","name":"sku","schema":{"type":"string"}},{"in":"query","name":"kind","schema":{"enum":["product","service"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Item"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista paginada"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Listar productos y servicios","tags":["Productos y servicios"]}},"/items/{ref}":{"delete":{"operationId":"delete_items","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"Eliminado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Eliminar","tags":["Productos y servicios"]},"get":{"operationId":"get_items","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Item"}},"type":"object"}}},"description":"El recurso (encabezado ETag con la versi\u00f3n)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Obtener uno","tags":["Productos y servicios"]},"parameters":[{"description":"Identificador del sistema de origen (external_id, codificado en la URL) o `id:<uuid>` de Dotly.","in":"path","name":"ref","required":true,"schema":{"type":"string"}}],"patch":{"operationId":"patch_items","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Cambiar solo los campos enviados","tags":["Productos y servicios"]},"put":{"operationId":"upsert_items","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Crear o reemplazar (upsert por external_id)","tags":["Productos y servicios"]}},"/members":{"get":{"operationId":"list_members","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Member"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["team:read"]}],"summary":"Integrantes","tags":["Equipo"]}},"/messages":{"post":{"operationId":"send_to_number","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"},"template_id":{"format":"uuid","type":"string"},"text":{"type":"string"},"to":{"type":"string"},"whatsapp_account_id":{"format":"uuid","type":"string"}},"required":["to","text"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Encolado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Escribir a un n\u00famero (abre el chat si hace falta)","tags":["Mensajes"]}},"/messages/{message_id}":{"delete":{"operationId":"delete_message","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Message"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Eliminar para todos en WhatsApp (hasta delete_until)","tags":["Mensajes"]},"get":{"operationId":"get_message","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Message"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["conversations:read"]}],"summary":"Obtener mensaje","tags":["Mensajes"]},"parameters":[{"in":"path","name":"message_id","required":true,"schema":{"format":"uuid","type":"string"}}],"patch":{"operationId":"edit_message","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"text":{"maxLength":4096,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Message"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Editar en WhatsApp un texto enviado por Dotly (hasta edit_until)","tags":["Mensajes"]}},"/messages/{message_id}/reaction":{"post":{"operationId":"react_message","parameters":[{"in":"path","name":"message_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"emoji":{"maxLength":16,"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Message"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Reaccionar con un emoji (vac\u00edo la quita)","tags":["Mensajes"]}},"/scheduled-messages":{"get":{"operationId":"list_scheduled","parameters":[{"in":"query","name":"view","schema":{"enum":["upcoming","history"],"type":"string"}},{"in":"query","name":"conversation_id","schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["conversations:read"]}],"summary":"Mensajes programados","tags":["Programados"]},"post":{"operationId":"create_scheduled","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"cancel_on_reply":{"type":"boolean"},"conversation_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"instruction":{"type":"string"},"mode":{"enum":["text","ai"],"type":"string"},"repeat":{"enum":["none","daily","weekly","monthly"],"type":"string"},"repeat_until":{"format":"date","type":"string"},"template_id":{"format":"uuid","type":"string"},"text":{"type":"string"},"when":{"format":"date-time","type":"string"}},"required":["conversation_ids","when"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Programado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Programar (texto o mode=ai)","tags":["Programados"]}},"/scheduled-messages/{scheduled_id}":{"delete":{"operationId":"cancel_scheduled","parameters":[{"in":"path","name":"scheduled_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"Cancelado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["messages:send"]}],"summary":"Cancelar","tags":["Programados"]}},"/stats":{"get":{"operationId":"get_stats","parameters":[{"in":"query","name":"days","schema":{"default":30,"enum":[7,30,90],"type":"integer"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["analytics:read"]}],"summary":"Resumen de atenci\u00f3n y ventas","tags":["Estad\u00edsticas"]}},"/sync-runs":{"post":{"operationId":"start_sync_run","responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/SyncRun"}},"type":"object"}}},"description":"Corrida iniciada (vence en 24 h)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Iniciar una sincronizaci\u00f3n completa","tags":["Sincronizaci\u00f3n completa"]}},"/sync-runs/{run_id}":{"get":{"operationId":"get_sync_run","parameters":[{"in":"path","name":"run_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Estado de una corrida","tags":["Sincronizaci\u00f3n completa"]}},"/sync-runs/{run_id}/cancel":{"post":{"operationId":"cancel_sync_run","parameters":[{"in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cancelada"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Cancelar (no borra nada)","tags":["Sincronizaci\u00f3n completa"]}},"/sync-runs/{run_id}/complete":{"post":{"operationId":"complete_sync_run","parameters":[{"in":"path","name":"run_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"missing":{"default":"deactivate","enum":["deactivate","delete","keep"],"type":"string"},"types":{"default":["item"],"items":{"enum":["item","category","zone","discount"],"type":"string"},"type":"array"}},"type":"object"}}}},"responses":{"200":{"description":"Corrida completada con estad\u00edsticas"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Completar: lo que no se envi\u00f3 se desactiva o se elimina","tags":["Sincronizaci\u00f3n completa"]}},"/tags":{"get":{"operationId":"list_tags","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Tag"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista con cursor"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["contacts:read"]}],"summary":"Etiquetas (con color)","tags":["Contactos"]},"post":{"operationId":"create_tag","parameters":[{"description":"Repetir con la misma clave devuelve la misma respuesta (24 h) sin volver a ejecutar.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"color":{"enum":["gray","green","teal","blue","purple","pink","red","orange","yellow"],"type":"string"},"name":{"maxLength":40,"type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Tag"}},"type":"object"}}},"description":"Ya exist\u00eda"},"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Tag"}},"type":"object"}}},"description":"Creada"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["contacts:write"]}],"summary":"Crear etiqueta con color (o la existente con ese nombre)","tags":["Contactos"]}},"/teams":{"get":{"operationId":"list_teams","responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["team:read"]}],"summary":"Equipos","tags":["Equipo"]}},"/templates":{"get":{"operationId":"list_templates","parameters":[{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"category","schema":{"type":"string"}},{"in":"query","name":"active","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["templates:read"]}],"summary":"Listar plantillas","tags":["Plantillas"]}},"/templates/{template_id}":{"get":{"operationId":"get_template","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Template"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["templates:read"]}],"summary":"Obtener plantilla","tags":["Plantillas"]}},"/templates/{template_id}/flow":{"get":{"operationId":"get_template_flow","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"description":"\u00c1rbol: options[].next con el submen\u00fa (loop: vuelve a uno anterior)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["templates:read"]}],"summary":"Flujo de men\u00fas desde esta plantilla (cada opci\u00f3n y el submen\u00fa que abre)","tags":["Plantillas"]}},"/templates/{template_id}/render":{"post":{"operationId":"render_template","parameters":[{"in":"path","name":"template_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"contact_id":{"format":"uuid","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe o no es visible"}},"security":[{"bearerAuth":["templates:read"]}],"summary":"Texto con variables para un contacto (no env\u00eda)","tags":["Plantillas"]}},"/webhooks":{"get":{"operationId":"list_webhooks","responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Listar destinos","tags":["Webhooks"]},"post":{"operationId":"create_webhook","requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"maxLength":120,"type":"string"},"events":{"default":["catalog.*","sync.*"],"description":"Tipos o familias (contact.*, message.*...). \u00ab*\u00bb = todas las que permite la clave.","items":{"type":"string"},"type":"array"},"url":{"description":"https y p\u00fablica.","format":"uri","type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Creado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Crear destino (devuelve el secreto de firma una sola vez)","tags":["Webhooks"]}},"/webhooks/{webhook_id}":{"delete":{"operationId":"delete_webhook","responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Eliminar","tags":["Webhooks"]},"get":{"operationId":"get_webhook","responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Obtener","tags":["Webhooks"]},"parameters":[{"in":"path","name":"webhook_id","required":true,"schema":{"format":"uuid","type":"string"}}],"patch":{"operationId":"update_webhook","responses":{"200":{"description":"OK"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Cambiar url, events, description o is_active","tags":["Webhooks"]}},"/webhooks/{webhook_id}/rotate-secret":{"post":{"operationId":"rotate_webhook_secret","parameters":[{"in":"path","name":"webhook_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Secreto nuevo (una sola vez)"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Generar un secreto de firma nuevo","tags":["Webhooks"]}},"/webhooks/{webhook_id}/test":{"post":{"operationId":"test_webhook","parameters":[{"in":"path","name":"webhook_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resultado del env\u00edo"}},"security":[{"bearerAuth":["webhooks:manage"]}],"summary":"Enviar un evento ping de prueba","tags":["Webhooks"]}},"/whatsapp-accounts":{"get":{"operationId":"list_whatsapp_accounts","responses":{"200":{"description":"OK"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan, suscripci\u00f3n, IP o integrante inactivo"}},"security":[{"bearerAuth":["team:read"]}],"summary":"N\u00fameros de WhatsApp","tags":["Equipo"]}},"/zones":{"get":{"operationId":"list_zones","parameters":[{"in":"query","name":"limit","schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"next_cursor de la p\u00e1gina anterior.","in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"updated_since","schema":{"format":"date-time","type":"string"}},{"in":"query","name":"active","schema":{"type":"boolean"}},{"description":"Uno o varios, separados por coma.","in":"query","name":"external_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"object":{"const":"list"}},"type":"object"}}},"description":"Lista paginada"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Listar zonas de env\u00edo","tags":["Zonas de env\u00edo"]}},"/zones/{ref}":{"delete":{"operationId":"delete_zones","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}}],"responses":{"200":{"description":"Eliminado"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Eliminar","tags":["Zonas de env\u00edo"]},"get":{"operationId":"get_zones","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Zone"}},"type":"object"}}},"description":"El recurso (encabezado ETag con la versi\u00f3n)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:read"]}],"summary":"Obtener uno","tags":["Zonas de env\u00edo"]},"parameters":[{"description":"Identificador del sistema de origen (external_id, codificado en la URL) o `id:<uuid>` de Dotly.","in":"path","name":"ref","required":true,"schema":{"type":"string"}}],"patch":{"operationId":"patch_zones","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No existe"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Cambiar solo los campos enviados","tags":["Zonas de env\u00edo"]},"put":{"operationId":"upsert_zones","parameters":[{"description":"Repetir la solicitud con la misma clave devuelve la misma respuesta durante 24 h.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":120,"type":"string"}},{"description":"Versi\u00f3n esperada (W/\"3\"). Si el recurso cambi\u00f3, 412 version_conflict.","in":"header","name":"If-Match","required":false,"schema":{"type":"string"}},{"description":"Marca la escritura como parte de una sincronizaci\u00f3n completa.","in":"header","name":"Dotly-Sync-Run","required":false,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Zone"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Actualizado o sin cambios"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteResult"}}},"description":"Creado"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Solicitud no v\u00e1lida"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Falta la clave o no es v\u00e1lida"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Sin permiso, plan o suscripci\u00f3n"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Conflicto simult\u00e1neo"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"La versi\u00f3n cambi\u00f3 (If-Match)"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Datos no v\u00e1lidos"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"L\u00edmite de solicitudes"}},"security":[{"bearerAuth":["catalog:write"]}],"summary":"Crear o reemplazar (upsert por external_id)","tags":["Zonas de env\u00edo"]}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://www.dotly.com.py/api/v1"}],"tags":[{"name":"General"},{"name":"Cuenta"},{"name":"Contactos"},{"name":"Integraci\u00f3n de contactos"},{"name":"Conversaciones"},{"name":"Mensajes"},{"name":"Plantillas"},{"name":"Equipo"},{"name":"Programados"},{"name":"Automatizaciones"},{"name":"Estad\u00edsticas"},{"name":"Dot AI"},{"name":"Embebido"},{"name":"Productos y servicios"},{"name":"Categor\u00edas"},{"name":"Zonas de env\u00edo"},{"name":"Promociones"},{"name":"Stock"},{"name":"Lotes"},{"name":"Sincronizaci\u00f3n completa"},{"name":"Eventos"},{"name":"Webhooks"},{"name":"Avisos entrantes"}]}
