API de JSON a YAML#
Convierte un archivo JSON a YAML con una sola petición a POST /v1/convert/json-to-yaml. La conversión es un mapeo directo sin reestructuración: la salida es YAML en estilo bloque legible por humanos, con el orden original de las claves y los caracteres unicode preservados. Por defecto la respuesta son los bytes YAML sin procesar; establece direct_download=false para recibir en su lugar metadatos con una URL de descarga prefirmada.
Endpoint#
POST /v1/convert/json-to-yaml
Content-Type: multipart/form-data
Entrada aceptada: archivos .json (codificados en UTF-8)
Formato de salida: .yaml (application/x-yaml)
Autenticación#
Requiere una clave API privada o un token JWT obtenido de una clave pública.
X-API-Key: sk_your_private_key
O bien:
Authorization: Bearer <jwt_token>
Parámetros de la petición#
| Parámetro | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
file |
file | Sí | -- | El archivo .json a convertir. Debe estar codificado en UTF-8. |
output_filename |
string |
No | Nombre del archivo de entrada | Nombre de archivo de salida personalizado. La extensión .yaml se añade automáticamente. |
direct_download |
boolean |
No | true |
Con true, devuelve los bytes YAML sin procesar. Con false, devuelve metadatos con una URL de descarga prefirmada. |
Reglas de conversión#
Mapeo directo de JSON a YAML sin reestructuración:
{
"database": {
"host": "localhost",
"port": 5432,
"credentials": {
"user": "admin",
"password": "secret"
}
},
"features": ["auth", "logging"]
}
Se convierte en:
database:
host: localhost
port: 5432
credentials:
user: admin
password: secret
features:
- auth
- logging
- La salida usa estilo bloque (multilínea, legible por humanos), no estilo flow
- El orden de las claves se preserva respecto al JSON original
- Los caracteres unicode se preservan tal cual
Respuesta#
Descarga directa (direct_download=true, por defecto)#
HTTP 200 OK
Content-Type: application/x-yaml
Content-Disposition: inline; filename="config_20260405_123456789.yaml"
Respuesta con metadatos (direct_download=false)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/json-to-yaml/config_20260405_123456789.yaml",
"filename": "config_20260405_123456789.yaml",
"file_size": 1234,
"conversion_time_seconds": 0.03
}
Ejemplos de código#
Python#
import requests
with open("config.json", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/json-to-yaml",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("config.json", f, "application/json")}
)
with open("config.yaml", "wb") as out:
out.write(response.content)
Node.js#
const form = new FormData();
form.append("file", fs.createReadStream("config.json"));
const response = await fetch("https://api.enconvert.com/v1/convert/json-to-yaml", {
method: "POST",
headers: { "X-API-Key": "sk_your_private_key" },
body: form
});
const yaml = await response.text();
PHP#
$ch = curl_init("https://api.enconvert.com/v1/convert/json-to-yaml");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
CURLOPT_POSTFIELDS => ["file" => new CURLFile("config.json", "application/json")]
]);
$yaml = curl_exec($ch);
curl_close($ch);
Go#
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "config.json")
file, _ := os.Open("config.json")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/json-to-yaml", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
Respuestas de error#
| Estado | Condición |
|---|---|
400 Bad Request |
El archivo no es un archivo .json |
400 Bad Request |
Contenido JSON no válido |
400 Bad Request |
La conversión de JSON a YAML falló |
401 Unauthorized |
Clave API o token JWT ausente o no válido |
402 Payment Required |
Cuota mensual de ops agotada |
413 Payload Too Large |
El archivo supera el tamaño máximo de archivo del plan |
Límites#
| Límite | Valor |
|---|---|
| Tamaño máximo de archivo | Según el plan (Founding: 5 MB) |
| Codificación de entrada | Solo UTF-8 |
| Conversiones mensuales | Según el plan |
Preguntas frecuentes#
¿Cómo convierto JSON a YAML con una API REST?#
Envía una petición POST multipart/form-data a /v1/convert/json-to-yaml con tu archivo .json en el campo file, autenticada con una cabecera X-API-Key o un token JWT Authorization: Bearer. La respuesta es el YAML convertido.
¿La conversión de JSON a YAML preserva el orden de las claves?#
Sí. El orden de las claves del JSON original se preserva, los caracteres unicode se mantienen tal cual y la estructura se mapea directamente sin reestructuración.
¿La salida YAML es de estilo bloque o estilo flow?#
La salida usa estilo bloque (YAML multilínea y legible por humanos), no estilo flow en línea, como se muestra en el ejemplo de conversión de esta página.
¿Puedo obtener una URL de descarga prefirmada en lugar de los bytes YAML sin procesar?#
Sí. Establece direct_download=false para recibir una respuesta de metadatos con presigned_url, object_key, filename, file_size y conversion_time_seconds.
¿Por qué la API de JSON a YAML devuelve 400 Bad Request?#
Se devuelve un 400 cuando el archivo no es un archivo .json, el contenido no es JSON válido o la conversión falla. Los archivos que superan el límite de tamaño de tu plan devuelven 413 Payload Too Large.