{
 "openapi": "3.1.0",
 "info": {
  "title": "blindinismo: placas braille de la casa en español, chino e inglés",
  "version": "2026-10-23",
  "summary": "Los datos de blindinismo.com, tal como los usa el sitio: archivos JSON fijos, un STL y un SVG por placa y un gemelo en markdown por página.",
  "description": "Las 169 cosas de una casa con su nombre en español, chino (hanzi y pinyin) e inglés y el braille de cada idioma (español integral, chino por pinyin con las reglas de tono del 国家通用盲文方案 de 2018, inglés UEB grado 2), las medidas de su placa en relieve, en qué cuarto está, dónde está, de qué es, para qué sirve y cómo puede estar, y 15 situaciones de la vida diaria paso a paso con la acción y el estado resultante en los tres idiomas. Escogidas con BEHAVIOR-1K. Cada placa tiene su archivo STL.\n\nSon archivos fijos: no hay parámetros de consulta, se descargan completos y se filtran en el cliente. Todos responden con CORS (Access-Control-Allow-Origin: *). Las placas (STL y SVG), las transcripciones braille, los textos en español e inglés, las posiciones en la casa y las situaciones de blindinismo.com se publican bajo CC BY 4.0: se pueden usar, adaptar, imprimir y vender citando a blindinismo.com. La línea en chino (hanzi y pinyin) que viene de CC-CEDICT va bajo CC BY-SA 4.0, como su fuente.",
  "license": {
   "name": "CC BY 4.0",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "name": "ivebeen3d",
   "url": "https://ivebeen3d.com/"
  }
 },
 "servers": [
  {
   "url": "https://blindinismo.com"
  }
 ],
 "paths": {
  "/data/fichas.json": {
   "get": {
    "summary": "Las 169 placas",
    "description": "Una ficha por cosa, con su braille, medidas, cuarto, frases y situaciones.",
    "responses": {
     "200": {
      "description": "Lista de fichas",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "$ref": "#/components/schemas/Ficha"
         }
        }
       }
      }
     }
    }
   }
  },
  "/data/situaciones.json": {
   "get": {
    "summary": "Las 15 situaciones",
    "responses": {
     "200": {
      "description": "Situaciones con sus pasos",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "situaciones": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Situacion"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/data/situaciones-casa.json": {
   "get": {
    "summary": "Las situaciones con el braille de cada frase, como las recorre la casa 3D",
    "responses": {
     "200": {
      "description": "Lista de situaciones",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "type": "object"
         }
        }
       }
      }
     }
    }
   }
  },
  "/data/cuartos.json": {
   "get": {
    "summary": "Los cuartos de la casa y la posición de cada cosa",
    "responses": {
     "200": {
      "description": "Cuartos y objetos",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "cuartos": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "nombre": {
              "type": "string"
             },
             "x0": {
              "type": "number"
             },
             "x1": {
              "type": "number"
             },
             "z0": {
              "type": "number"
             },
             "z1": {
              "type": "number"
             }
            }
           }
          },
          "objetos": {
           "type": "object",
           "additionalProperties": {
            "type": "object",
            "properties": {
             "cuarto": {
              "type": "string"
             },
             "x": {
              "type": "number"
             },
             "y": {
              "type": "number"
             },
             "z": {
              "type": "number"
             }
            }
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/data/categorias.json": {
   "get": {
    "summary": "Las ocho categorías",
    "responses": {
     "200": {
      "description": "Lista de categorías",
      "content": {
       "application/json": {
        "schema": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "id": {
            "type": "string"
           },
           "nombre": {
            "type": "string"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}.stl": {
   "get": {
    "summary": "La placa de una cosa, en STL binario",
    "description": "Milímetros, escala 1:1, base de 2 mm y puntos de 1,6 mm de diámetro y 0,7 mm de alto; tres filas de braille: español, chino e inglés.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "El id de la ficha, por ejemplo taza."
     }
    ],
    "responses": {
     "200": {
      "description": "Archivo STL",
      "content": {
       "model/stl": {
        "schema": {
         "type": "string",
         "format": "binary"
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}.svg": {
   "get": {
    "summary": "La vista frontal de la placa",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "SVG",
      "content": {
       "image/svg+xml": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}.brf": {
   "get": {
    "summary": "La placa para impresora braille, en .brf",
    "description": "Braille ASCII norteamericano (64 caracteres, ASCII 32 a 95, letras en mayúscula), una página: español, chino e inglés, una línea cada uno. Renglones con CR LF y la página termina en salto de página (0x0C). Hoja de 40 celdas por 25 líneas.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Braille ASCII",
      "content": {
       "text/plain": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}.pef": {
   "get": {
    "summary": "La placa para impresora braille, en PEF",
    "description": "Portable Embosser Format 2008-1 (DAISY): las mismas tres líneas en Unicode braille, en un volumen de 40 celdas por 25 filas.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "PEF",
      "content": {
       "application/x-pef+xml": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}-termico.svg": {
   "get": {
    "summary": "La placa para papel térmico, en SVG a tamaño real",
    "description": "Ancho y alto en milímetros; puntos negros llenos de 1,5 mm de diámetro, 2,5 mm entre puntos, 6 mm de celda a celda y 10 mm entre líneas; fondo blanco y la línea de corte en color, que no se infla.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "SVG",
      "content": {
       "image/svg+xml": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}-termico-{papel}.pdf": {
   "get": {
    "summary": "La placa para papel térmico, en PDF a tamaño real",
    "description": "Una hoja carta o A4 para imprimir al 100 % en papel de microcápsulas: la etiqueta con los puntos en negro, su nombre en color al lado y una regla de 50 mm para comprobar la escala.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "papel",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "carta",
        "a4"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "PDF",
      "content": {
       "application/pdf": {
        "schema": {
         "type": "string",
         "format": "binary"
        }
       }
      }
     }
    }
   }
  },
  "/placas/cuartos/{cuarto}.brf": {
   "get": {
    "summary": "Las placas de un cuarto, para impresora braille",
    "description": "Una placa tras otra, con un renglón en blanco entre placas y sin partir una placa entre dos páginas (seis por hoja de 25 líneas). También /placas/cuartos/{cuarto}.pef. Las 169: /placas/todas.brf y /placas/todas.pef.",
    "parameters": [
     {
      "name": "cuarto",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "El slug del cuarto (cocina, sala, bano…)."
     }
    ],
    "responses": {
     "200": {
      "description": "Braille ASCII",
      "content": {
       "text/plain": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  },
  "/placas/cuartos/{cuarto}-termico-{papel}.pdf": {
   "get": {
    "summary": "Las placas de un cuarto, para papel térmico",
    "description": "Varias placas por hoja, cada una con su nombre en color al lado. Las 169: /placas/todas-termico-carta.pdf y /placas/todas-termico-a4.pdf.",
    "parameters": [
     {
      "name": "cuarto",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "papel",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "carta",
        "a4"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "PDF",
      "content": {
       "application/pdf": {
        "schema": {
         "type": "string",
         "format": "binary"
        }
       }
      }
     }
    }
   }
  },
  "/placas/{id}/index.md": {
   "get": {
    "summary": "La ficha de la placa en markdown",
    "description": "Lo mismo que la página /placas/{id}/, para leer sin navegador. Toda página del sitio tiene su index.md, y pedir la página con Accept: text/markdown devuelve el mismo texto.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  },
  "/llms.txt": {
   "get": {
    "summary": "El índice del sitio para modelos de lenguaje",
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/plain": {
        "schema": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  }
 },
 "components": {
  "schemas": {
   "Braille": {
    "type": "object",
    "description": "Celdas braille Unicode (U+2800 a U+28FF) por idioma.",
    "properties": {
     "es": {
      "type": "string"
     },
     "zh": {
      "type": "string"
     },
     "en": {
      "type": "string"
     }
    }
   },
   "Frase": {
    "type": "object",
    "properties": {
     "es": {
      "type": "string"
     },
     "zh": {
      "type": "string"
     },
     "pinyin": {
      "type": "string"
     },
     "en": {
      "type": "string"
     },
     "relacion": {
      "type": "string",
      "description": "La palabra de relación (sobre, dentro de, al lado de…) cuando la frase dice dónde está."
     },
     "braille": {
      "$ref": "#/components/schemas/Braille"
     }
    }
   },
   "Ficha": {
    "type": "object",
    "required": [
     "id",
     "es",
     "en",
     "hanzi",
     "pinyin",
     "braille",
     "medidas",
     "cuarto"
    ],
    "properties": {
     "id": {
      "type": "string",
      "description": "Identificador y nombre de archivo (placas/{id}.stl)."
     },
     "numero": {
      "type": "integer"
     },
     "es": {
      "type": "string"
     },
     "en": {
      "type": "string"
     },
     "hanzi": {
      "type": "string"
     },
     "pinyin": {
      "type": "string",
      "description": "Con marcas de tono."
     },
     "categoria": {
      "type": "string"
     },
     "categoriaNombre": {
      "type": "string"
     },
     "enSala": {
      "type": "boolean",
      "description": "Si es una de las 16 placas de la sala original (el kit)."
     },
     "braille": {
      "$ref": "#/components/schemas/Braille"
     },
     "grado": {
      "type": "integer",
      "description": "Grado del braille inglés (UEB): 1 o 2."
     },
     "medidas": {
      "type": "object",
      "properties": {
       "ancho": {
        "type": "number"
       },
       "alto": {
        "type": "number"
       },
       "grosor": {
        "type": "number"
       },
       "relieve": {
        "type": "number"
       },
       "puntos": {
        "type": "integer"
       }
      },
      "description": "Milímetros."
     },
     "cuarto": {
      "type": "string",
      "description": "El slug del cuarto (cuarto, pasillo, estudio, bano, sala, cocina, lavadero, calle, tienda, jardin, garaje)."
     },
     "donde": {
      "$ref": "#/components/schemas/Frase"
     },
     "detalles": {
      "type": "object",
      "properties": {
       "material": {
        "$ref": "#/components/schemas/Frase"
       },
       "uso": {
        "$ref": "#/components/schemas/Frase"
       },
       "estados": {
        "$ref": "#/components/schemas/Frase"
       }
      }
     },
     "situaciones": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "id": {
         "type": "string"
        },
        "titulo": {
         "type": "string"
        }
       }
      }
     },
     "archivos": {
      "type": "object",
      "description": "Las direcciones de los archivos de la placa: impresora 3D (stl), vista (svg), impresora braille (brf, pef) y papel térmico (termicoSvg, termicoCarta, termicoA4).",
      "properties": {
       "stl": {
        "type": "string"
       },
       "svg": {
        "type": "string"
       },
       "brf": {
        "type": "string"
       },
       "pef": {
        "type": "string"
       },
       "termicoSvg": {
        "type": "string"
       },
       "termicoCarta": {
        "type": "string"
       },
       "termicoA4": {
        "type": "string"
       }
      }
     }
    }
   },
   "Situacion": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "titulo": {
      "type": "object",
      "properties": {
       "es": {
        "type": "string"
       },
       "zh": {
        "type": "string"
       },
       "pinyin": {
        "type": "string"
       },
       "en": {
        "type": "string"
       }
      }
     },
     "behavior": {
      "type": "string",
      "description": "La tarea de BEHAVIOR-1K de la que sale."
     },
     "pasos": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "objeto": {
         "type": "string",
         "description": "El id de la placa."
        },
        "accion": {
         "$ref": "#/components/schemas/Frase"
        },
        "estado": {
         "$ref": "#/components/schemas/Frase"
        },
        "palabra": {
         "type": "string",
         "description": "La palabra de relación o estado del paso."
        }
       }
      }
     }
    }
   }
  }
 }
}
