API de JSON a TOML#

La API de JSON a TOML convierte un archivo JSON a formato TOML con una sola solicitud a POST /v1/convert/json-to-toml. Sube un archivo .json mediante un formulario multipart y recibe el TOML convertido directamente, o establece direct_download=false para obtener metadatos con una URL de descarga prefirmada. Los arrays JSON se envuelven bajo una clave items y los valores escalares bajo una clave value, ya que TOML requiere una tabla de nivel superior.


Endpoint#

POST /v1/convert/json-to-toml

Content-Type: multipart/form-data

Entrada aceptada: archivos .json (codificados en UTF-8)

Formato de salida: .toml (application/toml)


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 solicitud#

Parámetro Tipo Obligatorio Predeterminado Descripción
file file -- El archivo .json a convertir. Debe estar codificado en UTF-8. No debe contener valores null.
output_filename string No Nombre del archivo de entrada Nombre de archivo de salida personalizado. La extensión .toml se añade automáticamente.
direct_download boolean No true Con true, devuelve los bytes TOML sin procesar. Con false, devuelve metadatos con una URL de descarga prefirmada.

Reglas de conversión#

  • Un objeto JSON pasa directamente: json {"database": {"host": "localhost", "port": 5432}} Se convierte en: toml [database] host = "localhost" port = 5432

  • Un array JSON se envuelve bajo una clave items (TOML requiere una tabla de nivel superior): json [1, 2, 3] Se convierte en: toml items = [1, 2, 3]

  • Un valor escalar se envuelve bajo una clave value: json 42 Se convierte en: toml value = 42

Importante: TOML no admite valores null. Si tu JSON contiene algún valor null, la conversión fallará con un error 400. Elimina o reemplaza los valores null antes de convertir.

Respuesta#

Descarga directa (direct_download=true, predeterminado)#

HTTP 200 OK
Content-Type: application/toml
Content-Disposition: inline; filename="config_20260405_123456789.toml"

Respuesta con metadatos (direct_download=false)#

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/json-to-toml/config_20260405_123456789.toml",
    "filename": "config_20260405_123456789.toml",
    "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-toml",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("config.json", f, "application/json")}
    )

with open("config.toml", "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-toml", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

const toml = await response.text();

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/json-to-toml");
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")]
]);
$toml = 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-toml", 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 TOML falló (normalmente por valores null)
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 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
Valores null No admitidos (limitación de TOML)
Conversiones mensuales Según el plan

Preguntas frecuentes#

¿Cómo convierto JSON a TOML con una API REST?#

Envía una solicitud POST multipart/form-data a POST /v1/convert/json-to-toml con tu archivo .json en el campo file, autenticándote con una cabecera X-API-Key o un token JWT Authorization: Bearer. Por defecto, el cuerpo de la respuesta son los bytes TOML sin procesar.

¿Por qué mi conversión de JSON a TOML falla con un error 400?#

TOML no admite valores null, así que cualquier JSON que contenga null falla con un 400 Bad Request. También se devuelve un 400 cuando el archivo subido no es un archivo .json o el contenido JSON no es válido.

¿Puedo convertir un array JSON o un valor escalar a TOML?#

Sí. Como TOML requiere una tabla de nivel superior, un array JSON se envuelve bajo una clave items y un valor escalar se envuelve bajo una clave value.

¿Cómo obtengo una URL de descarga en lugar del archivo TOML sin procesar?#

Establece direct_download=false en la solicitud. La API devuelve entonces metadatos JSON que incluyen presigned_url, object_key, filename, file_size y conversion_time_seconds.

¿Qué límite de tamaño de archivo aplica a las conversiones de JSON a TOML?#

El tamaño máximo de archivo depende del plan (plan Founding: 5 MB). Los archivos que superan el límite de tu plan devuelven 413 Payload Too Large.