Servidor MCP

mueblito

ar.mueblito/mueblito
Comercio y retail Diseño y creatividad Público y accesible MCP 2025-11-25

Qué hace este MCP

Designs customizable furniture in 2D and 3D, validates buildability, generates cut lists and assembly instructions, and calculates material quotes in Argentine pesos.

ajustar_mueble
Adjust / iterate a design
Itera sobre un diseño: aplica un DIFF de cambios sobre unos params base, los RE-VALIDA y devuelve los params nuevos, la vista actualizada (SVG), un resumen de cotización y despiece, y una revisión de factibilidad. Es el loop de refinamiento: proponés un cambio ('más ancho', 'un estante más', 'otro material') y ves el efecto al instante, sin rearmar todo. Pasá baseParams (los params válidos actuales, p.ej. los que devolvió una cotización) y cambios (sólo los campos a modificar). Si los cambios dejan el mueble inválido, la tool falla explicando el motivo. Encadená la salida (params) como baseParams de la próxima llamada. (iterate furniture design, edit parameters, refine, text-to-CAD loop)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cambios'], 'properties': {'cambios': {'type': 'object', 'description': 'Diff a aplicar sobre baseParams (merge por campo). Ej: {width: 2400, shelves: 5}. El resultado se re-valida con el esquema; los objetos anidados (root, content, headboard) se reemplazan completos. Si queda inválido, la tool falla con el motivo.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'baseParams': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': 'Params paramétricos de partida (ya válidos). Ej: los que devolvió construir_mueble. El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla.'}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['medidas_mm', 'cotizacion', 'despiece', 'factibilidad', 'nota', 'editor_url'], 'properties': {'nota': {'type': 'string'}, 'despiece': {'type': 'object', 'required': ['piezas', 'herrajes'], 'properties': {'piezas': {'type': 'number'}, 'herrajes': {'type': 'number'}}, 'additionalProperties': False}, 'cotizacion': {'type': 'object', 'required': ['total_ars', 'total_formateado', 'piezas'], 'properties': {'piezas': {'type': 'number'}, 'total_ars': {'type': 'number'}, 'total_formateado': {'type': 'string'}}, 'additionalProperties': False}, 'editor_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}, 'factibilidad': {'type': 'object', 'required': ['factible', 'warnings', 'nota'], 'properties': {'nota': {'type': 'string'}, 'factible': {'type': 'boolean'}, 'warnings': {'type': 'array', 'items': {'type': 'object', 'required': ['tipo', 'severidad', 'mensaje'], 'properties': {'tipo': {'type': 'string'}, 'mensaje': {'type': 'string'}, 'severidad': {'type': 'string'}}, 'additionalProperties': False}}, 'editor_url': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
buscar_catalogo
Search furniture by name
Busca por NOMBRE entre los muebles armables de Mueblito (los mismos que listar_presets), con stemming en español. Todo lo que devuelve es un mueble fabricable a medida (melamina/MDF) con un link al editor 3D (editor_url). Usala cuando el usuario describe lo que busca ('cama', 'silla comedor', 'placard') para encontrar el/los id y después construir_mueble (recomendado) con ese id. (search parametric furniture presets by name, find buildable furniture Argentina, cut list)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['consulta'], 'properties': {'consulta': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Texto libre en español para buscar en el catálogo. Ejemplos: 'cama', 'silla comedor', 'banqueta de barra'. Soporta variantes morfológicas (plural/singular, acentos). Máximo 200 caracteres."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['resultados', 'total'], 'properties': {'total': {'type': 'number'}, 'resultados': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'nombre', 'categoria', 'medidas_mm', 'nota', 'ambiente', 'editor_url', 'imagen_url'], 'properties': {'id': {'type': 'string'}, 'nota': {'type': 'string'}, 'nombre': {'type': 'string'}, 'ambiente': {'type': 'string'}, 'categoria': {'type': 'string'}, 'editor_url': {'type': 'string'}, 'imagen_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'profundidad', 'alto'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}}}, 'additionalProperties': False}
construir_mueble
Build furniture: 3D model, cut list & quote
TOOL PRINCIPAL para muebles. Construye un mueble (desde un preset, o a medida con params del motor recursivo) y devuelve LO QUE PIDAS: 'despiece' (piezas + cotización en ARS + factibilidad), 'imagen' (vista 2D frente/lateral/planta), 'modelo3d' (el MODELO 3D en GLB, embebido y listo para renderizar en cualquier visor), y/o 'visor' (link al editor 3D). SIEMPRE devuelve el link a mueblito.ar con el mueble cargado, donde se termina de diseñar, ajustar y cotizar. Para muebles a medida usá params kind='modular' con un árbol 'root' (V=columnas, H=filas de abajo→arriba). (build furniture, generate 3D model GLB, render, cutlist, quote, open in editor, get a 3d model)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': "Params a medida (alternativa a 'preset'). Para un mueble modular con el motor recursivo, kind='modular' + un árbol 'root'. El árbol: un nodo es un SPLIT {s:'V'|'H', ch:[{f,node},...]} o una HOJA {content:{c,...}, door?}. s='V' parte en columnas (izqâ\x86\x92der); s='H' parte en filas (ABAJOâ\x86\x92ARRIBA). f = peso relativo del hijo. content.c â\x88\x88 estantes{n}, cajones{n}, barral, zapatero{n}, vidrio{n}, bandeja{n}, botellero, vacio, o 'hueco' para el lugar de un electrodoméstico o de las piernas (si llega al piso, esa celda va sin piso, sin fondo y sin zócalo). door â\x88\x88 izq/der/doble/arriba/abajo/corrediza. material p.ej. 'mdf-18mm-blanco'. Ej. cómoda 80cm con puerta arriba y 2 cajones abajo: {kind:'modular',width:800,height:900,depth:450,material:'mdf-18mm-blanco',backPanel:true,base:'zocalo',root:{s:'H',ch:[{f:1,node:{content:{c:'cajones',n:2}}},{f:1,node:{content:{c:'estantes',n:2},door:'der'}}]}}. El mueble puede dejar de ser una caja: 'enCuerpos: true' lo arma en cuerpos separados (uno por columna, cada uno con sus laterales, para poder llevarlo), y cada hijo del corte de la RAÃ\x8dZ acepta 'alto' y 'prof' propios (mm) y pasa a ser un CUERPO aparte â\x80\x94bajo escalera, escritorio con alzada, bajo mesada con torreâ\x80\x94, alineados por atrás. Y 'colgado: true' (en el mueble o en un cuerpo) lo manda a la pared: el kit trae colgadores y riel en vez de patas. El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla."}, 'preset': {'type': 'string', 'description': "ID del preset del mueble a construir. Requerido si no se pasa 'params'. Ejemplos: 'placard-corredizo', 'biblioteca', 'escritorio-cajonera', 'comoda', 'bajo-mesada'. Usá listar_presets para ver todos los ids disponibles."}, 'salida': {'anyOf': [{'enum': ['despiece', 'imagen', 'modelo3d', 'visor'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['despiece', 'imagen', 'modelo3d', 'visor'], 'type': 'string'}, 'minItems': 1}], 'description': "Qué devolver (uno o varios): un string o una lista. 'despiece' = piezas+cotización+factibilidad (texto). 'imagen' = vista 2D frente/lateral/planta (SVG). 'modelo3d' = el modelo 3D GLB embebido para renderizar. 'visor' = link al editor 3D en el sitio. Default: ['despiece']. El link al sitio se incluye SIEMPRE."}, 'ajustes': {'type': 'object', 'properties': {'alto_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'ancho_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'profundidad_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Ajustes de medidas opcionales, en milÃ\xadmetros, sobre el preset O sobre los params que pases. Sólo los campos que querés sobreescribir. Ej: {ancho_mm: 2400}.', 'additionalProperties': False}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mueble', 'medidas_mm', 'salida_incluida', 'editor_url', 'modelo_url', 'nota'], 'properties': {'nota': {'type': 'string'}, 'mueble': {'type': 'string'}, 'cotizacion': {'type': 'object', 'required': ['total_ars', 'total_formateado', 'piezas'], 'properties': {'piezas': {'type': 'number'}, 'total_ars': {'type': 'number'}, 'total_formateado': {'type': 'string'}}, 'additionalProperties': False}, 'editor_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}, 'modelo_url': {'type': 'string'}, 'factibilidad': {'type': 'object', 'required': ['factible', 'warnings', 'nota'], 'properties': {'nota': {'type': 'string'}, 'factible': {'type': 'boolean'}, 'warnings': {'type': 'array', 'items': {'type': 'object', 'required': ['tipo', 'severidad', 'mensaje'], 'properties': {'tipo': {'type': 'string'}, 'mensaje': {'type': 'string'}, 'severidad': {'type': 'string'}}, 'additionalProperties': False}}, 'editor_url': {'type': 'string'}}, 'additionalProperties': False}, 'salida_incluida': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
cotizar_mueble
Quote furniture cost (ARS)
Calcula el presupuesto de materiales en ARS para fabricar un mueble a medida: placas/melamina, tapacanto, herrajes y servicio de corte en maderera. Devuelve un editor_url para ver el presupuesto por placa y comprar los materiales en el sitio. Tip: para armar + cotizar + modelo 3D en una sola llamada, usá construir_mueble. Usala cuando el usuario quiere saber cuánto sale hacer un mueble en Argentina. Prerrequisito: si no sabés el id del preset, llamá primero a listar_presets; los ids disponibles son los que acepta este campo (ej: 'placard-corredizo', 'biblioteca', 'escritorio-cajonera'). Podés ajustar las medidas del preset con el campo 'ajustes' sin necesidad de pasar todos los params. Limitación: precios ORIENTATIVOS en ARS, sin mano de obra ni instalación. Pueden estar desactualizados: confirmá el importe con la maderera antes de comprar. (quote furniture cost, materials budget Argentina, cut list price ARS)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': "Params paramétricos completos del mueble (alternativa a 'preset'). Requerido si no se pasa 'preset'. Debe incluir kind, material y las medidas y opciones requeridas por ese kind; deck no lleva height. El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla."}, 'preset': {'type': 'string', 'description': "ID del preset del mueble a cotizar. Requerido si no se pasa 'params'. Ejemplos: 'placard-corredizo', 'biblioteca', 'escritorio-cajonera', 'comoda', 'bajo-mesada'. Usá listar_presets para ver todos los ids disponibles."}, 'ajustes': {'type': 'object', 'properties': {'alto_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'ancho_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'profundidad_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Ajustes de medidas opcionales, en milÃ\xadmetros, sobre el preset O sobre los params que pases. Sólo los campos que querés sobreescribir. Ej: {ancho_mm: 2400}.', 'additionalProperties': False}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mueble', 'medidas_mm', 'lineas', 'total_ars', 'total_formateado', 'nota', 'editor_url'], 'properties': {'nota': {'type': 'string'}, 'lineas': {'type': 'array', 'items': {'type': 'object', 'required': ['concepto', 'cantidad'], 'properties': {'cantidad': {'type': 'number'}, 'concepto': {'type': 'string'}, 'url_compra': {'type': 'string'}, 'subtotal_ars': {'type': 'number'}, 'precio_unitario_ars': {'type': 'number'}}, 'additionalProperties': False}}, 'mueble': {'type': 'string'}, 'total_ars': {'type': 'number'}, 'editor_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}, 'total_formateado': {'type': 'string'}}, 'additionalProperties': False}
crear_diseno
Create a 3D room design (2+ pieces)
Crea una escena 3D con VARIOS muebles (un ambiente) y devuelve un link editable directo al editor de Mueblito — el link /d/<code> abre el diseño listo para ver en 3D, mover piezas, ajustar medidas y generar presupuesto. Para UN solo mueble preferí construir_mueble; usá crear_diseno cuando hay 2+ muebles o querés armar un ambiente. Usala cuando el usuario quiere visualizar cómo quedarían los muebles en un espacio o compartir un diseño con un carpintero o cliente. Prerrequisito: si no sabés los ids de los presets, llamá primero a listar_presets. Cada mueble se especifica con preset o params; la posición y rotación son opcionales (si no se dan, los muebles se distribuyen en fila automáticamente). Limitación: el link es estático (no se guarda en servidor); no requiere cuenta. (create 3D design, furniture layout, shareable room design, Argentina interior design)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['muebles'], 'properties': {'espacio': {'type': 'object', 'required': ['ancho_mm', 'profundidad_mm'], 'properties': {'ancho_mm': {'type': 'number', 'description': 'Ancho del espacio/habitación en milÃ\xadmetros. Ej: 3500 para 3.50 m.', 'exclusiveMinimum': 0}, 'profundidad_mm': {'type': 'number', 'description': 'Profundidad del espacio/habitación en milÃ\xadmetros. Ej: 4000 para 4.00 m.', 'exclusiveMinimum': 0}}, 'description': 'Dimensiones del espacio: {ancho_mm: 3500, profundidad_mm: 4000}, ambas requeridas, en mm. Si se omite, el espacio se calcula automáticamente.', 'additionalProperties': False}, 'muebles': {'type': 'array', 'items': {'type': 'object', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': "Params paramétricos completos (alternativa a 'preset'). El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla."}, 'preset': {'type': 'string', 'description': "ID del preset del mueble. Usá listar_presets para ver los disponibles. Requerido si no se pasa 'params'."}, 'posicion_mm': {'type': 'object', 'required': ['x', 'z'], 'properties': {'x': {'type': 'number', 'description': 'Posición X en planta, en milÃ\xadmetros.'}, 'z': {'type': 'number', 'description': 'Posición Z en planta, en milÃ\xadmetros.'}}, 'description': 'Posición del mueble en planta (mm). Si se omite, se distribuye automáticamente en fila.', 'additionalProperties': False}, 'rotacion_grados': {'type': 'number', 'description': 'Rotación horizontal del mueble en grados (0 = frente al sur, 90 = lateral). Default: 0.'}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1, 'description': 'Lista de muebles a incluir en el diseño. MÃ\xadnimo 1, máximo 20.'}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url', 'muebles_incluidos', 'previews', 'nota'], 'properties': {'url': {'type': 'string'}, 'nota': {'type': 'string'}, 'previews': {'type': 'array', 'items': {'type': 'object', 'required': ['nombre'], 'properties': {'nombre': {'type': 'string'}}, 'additionalProperties': False}}, 'espacio_mm': {'type': 'object', 'required': ['ancho', 'profundidad'], 'properties': {'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}, 'muebles_incluidos': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
despiece
Genera la lista completa de piezas de corte y herrajes para fabricar un mueble: cada pieza con largo, ancho y espesor en mm, material, tapacanto frontal, más una tabla ASCII lista para copiar o enviar a la maderera. Usala cuando el usuario necesita la planilla de cortes para llevar a una maderera, o quiere verificar qué componentes tiene el mueble. Acepta los mismos args que cotizar_mueble: preset o params más ajustes opcionales — si no sabés el id del preset, llamá primero a listar_presets. Limitación: medidas netas de corte en mm; para calcular el consumo de placas hay que sumar kerf de 3-4 mm entre piezas (el editor de Mueblito lo hace con MaxRects). (cut list furniture, wood pieces breakdown, maderera Argentina, CNC cut plan)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': "Params paramétricos completos del mueble (alternativa a 'preset'). Requerido si no se pasa 'preset'. Debe incluir kind, material y las medidas y opciones requeridas por ese kind; deck no lleva height. El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla."}, 'preset': {'type': 'string', 'description': "ID del preset del mueble a despiesar. Requerido si no se pasa 'params'. Ejemplos: 'placard-corredizo', 'biblioteca', 'escritorio-cajonera', 'comoda', 'bajo-mesada'. Usá listar_presets para ver todos los ids disponibles."}, 'ajustes': {'type': 'object', 'properties': {'alto_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'ancho_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'profundidad_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Ajustes de medidas opcionales, en milÃ\xadmetros, sobre el preset O sobre los params que pases. Sólo los campos que querés sobreescribir. Ej: {ancho_mm: 2400}.', 'additionalProperties': False}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mueble', 'medidas_mm', 'piezas', 'herrajes', 'tabla_texto', 'nota', 'editor_url'], 'properties': {'nota': {'type': 'string'}, 'mueble': {'type': 'string'}, 'piezas': {'type': 'array', 'items': {'type': 'object', 'required': ['pieza', 'cantidad', 'largo_mm', 'ancho_mm', 'espesor_mm', 'material'], 'properties': {'pieza': {'type': 'string'}, 'ancho_mm': {'type': 'number'}, 'cantidad': {'type': 'number'}, 'largo_mm': {'type': 'number'}, 'material': {'type': 'string'}, 'espesor_mm': {'type': 'number'}, 'tapacanto_frontal_mm': {'type': 'number'}}, 'additionalProperties': False}}, 'herrajes': {'type': 'array', 'items': {'type': 'object', 'required': ['concepto', 'cantidad', 'precio_unitario_ars', 'subtotal_ars'], 'properties': {'cantidad': {'type': 'number'}, 'concepto': {'type': 'string'}, 'subtotal_ars': {'type': 'number'}, 'precio_unitario_ars': {'type': 'number'}}, 'additionalProperties': False}}, 'editor_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}, 'tabla_texto': {'type': 'string'}}, 'additionalProperties': False}
listar_presets
List furniture presets
Lista los presets de muebles armables de Mueblito: id, nombre, tipo, medidas en mm, descripción y un link al editor 3D (editor_url) para abrir cada uno en el sitio. Opcionalmente filtrá por 'ambiente' (Dormitorio/Living/Cocina y comedor/Baño/Oficina/Exterior) para descubrir qué hay por espacio. Llamala para encontrar el id de un mueble; después construilo con construir_mueble (recomendado) o cotizá/mostrá con ese id. (list furniture presets, parametric furniture types by room, Argentina cut list)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'ambiente': {'type': 'string', 'description': 'Filtro opcional por ambiente: Dormitorio, Living, Cocina y comedor, Baño, Oficina, Exterior u Otros.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['presets'], 'properties': {'presets': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'nombre', 'tipo', 'medidas_mm', 'descripcion', 'ambiente', 'editor_url', 'imagen_url'], 'properties': {'id': {'type': 'string'}, 'tipo': {'type': 'string'}, 'nombre': {'type': 'string'}, 'ambiente': {'type': 'string'}, 'editor_url': {'type': 'string'}, 'imagen_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}, 'descripcion': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
pasos_de_armado
How to assemble it (step by step)
Devuelve CÓMO SE ARMA el mueble: los pasos en orden, en castellano, con las piezas de cada paso (rol y cantidad), la compra completa de herrajes, el peso armado y los avisos previos al corte. Es lo que convierte una lista de cortes en un mueble armable: el orden importa (se arma acostado sobre un lateral y cada pieza tiene que poder bajar en una sola dirección). Acepta los mismos args que cotizar_mueble: preset o params, más ajustes de medidas opcionales. (how to assemble, assembly instructions, step by step, build guide, armado paso a paso)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': "Params paramétricos completos del mueble (alternativa a 'preset'). Requerido si no se pasa 'preset'. Debe incluir kind, material y las medidas y opciones requeridas por ese kind; deck no lleva height. El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla."}, 'preset': {'type': 'string', 'description': "ID del preset del mueble a armar. Requerido si no se pasa 'params'. Ejemplos: 'placard-corredizo', 'biblioteca', 'escritorio-cajonera', 'comoda', 'bajo-mesada'. Usá listar_presets para ver todos los ids disponibles."}, 'ajustes': {'type': 'object', 'properties': {'alto_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'ancho_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'profundidad_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Ajustes de medidas opcionales, en milÃ\xadmetros, sobre el preset O sobre los params que pases. Sólo los campos que querés sobreescribir. Ej: {ancho_mm: 2400}.', 'additionalProperties': False}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mueble', 'medidas_mm', 'peso_kg', 'pasos', 'herrajes', 'avisos', 'nota', 'editor_url'], 'properties': {'nota': {'type': 'string'}, 'pasos': {'type': 'array', 'items': {'type': 'object', 'required': ['n', 'titulo', 'detalle', 'piezas', 'panel_ids'], 'properties': {'n': {'type': 'number'}, 'piezas': {'type': 'array', 'items': {'type': 'string'}}, 'titulo': {'type': 'string'}, 'detalle': {'type': 'string'}, 'panel_ids': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'avisos': {'type': 'array', 'items': {'type': 'object', 'required': ['tipo', 'severidad', 'mensaje'], 'properties': {'tipo': {'type': 'string'}, 'mensaje': {'type': 'string'}, 'severidad': {'type': 'string'}}, 'additionalProperties': False}}, 'mueble': {'type': 'string'}, 'peso_kg': {'type': 'number'}, 'herrajes': {'type': 'array', 'items': {'type': 'object', 'required': ['concepto', 'cantidad', 'precio_unitario_ars', 'subtotal_ars'], 'properties': {'cantidad': {'type': 'number'}, 'concepto': {'type': 'string'}, 'subtotal_ars': {'type': 'number'}, 'precio_unitario_ars': {'type': 'number'}}, 'additionalProperties': False}}, 'editor_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}
validar_factibilidad
Validate buildability
Revisa si un mueble se puede ARMAR sano a partir de su geometría: piezas sueltas o sin apoyo, voladizos, bastidor que se hamaca, riesgo de vuelco, y flecha/pandeo de estantes y puertas (se descuelgan con el peso). Devuelve 'factible' y una lista de warnings. Usala antes de cotizar o fabricar para atrapar problemas estructurales (el 'compile-check' del mueble). (validate furniture buildability, structural warnings, sag deflection, tip-over risk)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': 'Params paramétricos completos del mueble a validar.'}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['factible', 'warnings', 'nota'], 'properties': {'nota': {'type': 'string'}, 'factible': {'type': 'boolean'}, 'warnings': {'type': 'array', 'items': {'type': 'object', 'required': ['tipo', 'severidad', 'mensaje'], 'properties': {'tipo': {'type': 'string'}, 'mensaje': {'type': 'string'}, 'severidad': {'type': 'string'}}, 'additionalProperties': False}}, 'editor_url': {'type': 'string'}}, 'additionalProperties': False}
ver_mueble
Preview furniture (2D views)
Devuelve una VISTA 2D del mueble (frente + lateral + planta, a la misma escala) como imagen SVG, más el link al editor 3D. Para el MODELO 3D (GLB) o para armar+cotizar de una, preferí construir_mueble; usá ver_mueble solo si querés únicamente la vista 2D rápida. Acepta los mismos args que cotizar_mueble: preset o params, más ajustes de medidas opcionales. (preview furniture, orthographic views, see the design, front side top view)
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'params': {'oneOf': [{'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'shelves', 'backPanel', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'shelf'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'openFrame': {'type': 'boolean'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'drawers', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'desk'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'drawers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'doors', 'rod', 'material'], 'properties': {'rod': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'wardrobe'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'doors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'techoPasante': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'height', 'rafters', 'postSize', 'slope', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'pergola'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'rafters': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'postSize': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'depth', 'boardWidth', 'gap', 'joists', 'material'], 'properties': {'gap': {'type': 'number', 'minimum': 0}, 'kind': {'type': 'string', 'const': 'deck'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'joists': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'material': {'type': 'string'}, 'boardWidth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'legSize', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'table'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'legSize': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'tabletopDepth', 'seatHeight', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'picnic'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'tabletopDepth': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'storage', 'material'], 'properties': {'bunk': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'cama'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'storage': {'type': 'boolean'}, 'material': {'type': 'string'}, 'headboard': {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}, 'baseHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'bunkHeight': {'type': 'number', 'maximum': 1600, 'minimum': 900}, 'bunkLadderSide': {'enum': ['izq', 'der'], 'type': 'string'}, 'drawersPerSide': {'type': 'integer', 'maximum': 4, 'minimum': 0}, 'headboardShelves': {'type': 'integer', 'maximum': 6, 'minimum': 0}, 'mattressThickness': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'arms', 'material'], 'properties': {'arms': {'type': 'boolean'}, 'kind': {'type': 'string', 'const': 'sofa'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}, 'seatHeight': {'type': 'number', 'exclusiveMinimum': 0}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'backrest', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'banqueta'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'backrest': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backrestAngle': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'cushionThickness': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'espejo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'lid', 'wheels', 'material'], 'properties': {'lid': {'enum': ['ninguna', 'fija', 'abisagrada'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'caja'}, 'legs': {'type': 'number', 'maximum': 900, 'minimum': 0}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'wheels': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'cortina'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'hojas', 'relleno', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'biombo'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'hojas': {'type': 'integer', 'maximum': 6, 'minimum': 2}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'relleno': {'type': 'boolean'}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'slope', 'shelves', 'puerta', 'material'], 'properties': {'kind': {'type': 'string', 'const': 'invernadero'}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'slope': {'type': 'number', 'maximum': 45, 'minimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'puerta': {'type': 'boolean'}, 'shelves': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'material': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'width', 'height', 'depth', 'material', 'backPanel', 'root'], 'properties': {'base': {'enum': ['zocalo', 'patas', 'ruedas'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'modular'}, 'root': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'depth': {'type': 'number', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'exclusiveMinimum': 0}, 'height': {'type': 'number', 'exclusiveMinimum': 0}, 'colgado': {'type': 'boolean'}, 'overlay': {'type': 'boolean'}, 'material': {'type': 'string'}, 'backPanel': {'type': 'boolean'}, 'enCuerpos': {'type': 'boolean'}, 'softClose': {'type': 'boolean'}, 'glassDoors': {'type': 'boolean'}, 'slidingDoor': {'enum': ['full', 'per-column'], 'type': 'string'}, 'techoPasante': {'type': 'boolean'}, 'frontMaterial': {'type': 'string'}}, 'additionalProperties': False}], 'description': "Params paramétricos completos del mueble (alternativa a 'preset'). Requerido si no se pasa 'preset'. Debe incluir kind, material y las medidas y opciones requeridas por ese kind; deck no lleva height. El schema enumera todos los campos por kind. Modular: frontMaterial (mismo espesor que material), softClose, base, colgado, enCuerpos, slidingDoor, glassDoors, overlay y techoPasante (techo al ancho total sobre los laterales; también en shelf y wardrobe). root admite cortes V/H anidados; cada hijo tiene f y, si genera cuerpo, alto/prof/colgado. En cortes H el alto se reparte con f, no con alto. height y depth deben abarcar todos los cuerpos. Cada hoja admite door, lock, push y led; content.c incluye cajonSecreto y cajones con content.lock/content.push. Shelf: shelves:0 deja solo carcasa; openFrame usa bastidor sin fondo. Cama: headboard modular, headboardShelves, drawersPerSide, bunk, bunkHeight, bunkLadderSide, mattressThickness, baseHeight. Sofá/banqueta: seatHeight (sofá), backrestAngle y cushionThickness. Otros tipos exponen sus opciones en el schema. Los avisos explican qué opción se recortó o no se aplicó y cómo corregirla."}, 'preset': {'type': 'string', 'description': "ID del preset del mueble a visualizar. Requerido si no se pasa 'params'. Ejemplos: 'placard-corredizo', 'biblioteca', 'escritorio-cajonera', 'comoda', 'bajo-mesada'. Usá listar_presets para ver todos los ids disponibles."}, 'ajustes': {'type': 'object', 'properties': {'alto_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'ancho_mm': {'type': 'number', 'exclusiveMinimum': 0}, 'profundidad_mm': {'type': 'number', 'exclusiveMinimum': 0}}, 'description': 'Ajustes de medidas opcionales, en milÃ\xadmetros, sobre el preset O sobre los params que pases. Sólo los campos que querés sobreescribir. Ej: {ancho_mm: 2400}.', 'additionalProperties': False}}, 'definitions': {'__schema0': {'type': 'object', 'required': ['s', 'ch'], 'properties': {'s': {'enum': ['V', 'H'], 'type': 'string'}, 'ch': {'type': 'array', 'items': {'type': 'object', 'required': ['f', 'node'], 'properties': {'f': {'type': 'number', 'exclusiveMinimum': 0}, 'alto': {'type': 'number', 'maximum': 3000, 'minimum': 150}, 'node': {'anyOf': [{'type': 'object', 'required': ['content'], 'properties': {'led': {'type': 'boolean'}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}, 'content': {'oneOf': [{'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'estantes'}, 'n': {'type': 'integer', 'maximum': 12, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'cajones'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'cajonSecreto'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'barral'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'botellero'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'zapatero'}, 'n': {'type': 'integer', 'maximum': 5, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'vidrio'}, 'n': {'type': 'integer', 'maximum': 8, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'bandeja'}, 'n': {'type': 'integer', 'maximum': 6, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c', 'n'], 'properties': {'c': {'type': 'string', 'const': 'ranurado'}, 'n': {'type': 'integer', 'maximum': 30, 'minimum': 3}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'hueco'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['c'], 'properties': {'c': {'type': 'string', 'const': 'vacio'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'$ref': '#/definitions/__schema0'}]}, 'prof': {'type': 'number', 'maximum': 1200, 'minimum': 80}, 'colgado': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 2}, 'door': {'enum': ['izq', 'der', 'doble', 'arriba', 'abajo', 'corrediza'], 'type': 'string'}, 'lock': {'enum': ['magnetica', 'llave'], 'type': 'string'}, 'push': {'type': 'boolean'}}, 'additionalProperties': False}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mueble', 'medidas_mm', 'nota', 'editor_url'], 'properties': {'nota': {'type': 'string'}, 'mueble': {'type': 'string'}, 'editor_url': {'type': 'string'}, 'medidas_mm': {'type': 'object', 'required': ['ancho', 'alto', 'profundidad'], 'properties': {'alto': {'type': 'number'}, 'ancho': {'type': 'number'}, 'profundidad': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Modificado
construir_mueble
23 de September de 2026 a las 02:52
Modificado
validar_factibilidad
23 de September de 2026 a las 02:52
Modificado
pasos_de_armado
23 de September de 2026 a las 02:52
Modificado
ajustar_mueble
23 de September de 2026 a las 02:52
Modificado
ver_mueble
23 de September de 2026 a las 02:52
Modificado
crear_diseno
23 de September de 2026 a las 02:52
Modificado
despiece
23 de September de 2026 a las 02:52
Modificado
cotizar_mueble
23 de September de 2026 a las 02:52
Modificado
construir_mueble
21 de September de 2026 a las 02:58
Modificado
validar_factibilidad
21 de September de 2026 a las 02:58
Modificado
pasos_de_armado
21 de September de 2026 a las 02:58
Modificado
ajustar_mueble
21 de September de 2026 a las 02:58
Modificado
ver_mueble
21 de September de 2026 a las 02:58
Modificado
crear_diseno
21 de September de 2026 a las 02:58
Modificado
despiece
21 de September de 2026 a las 02:58
Modificado
cotizar_mueble
21 de September de 2026 a las 02:58
Añadido
construir_mueble
17 de September de 2026 a las 07:58
Añadido
validar_factibilidad
17 de September de 2026 a las 07:58
Añadido
pasos_de_armado
17 de September de 2026 a las 07:58
Añadido
ajustar_mueble
17 de September de 2026 a las 07:58
Añadido
ver_mueble
17 de September de 2026 a las 07:58
Añadido
crear_diseno
17 de September de 2026 a las 07:58
Añadido
despiece
17 de September de 2026 a las 07:58
Añadido
cotizar_mueble
17 de September de 2026 a las 07:58
Añadido
buscar_catalogo
17 de September de 2026 a las 07:58
Añadido
listar_presets
17 de September de 2026 a las 07:58