API YAML vers JSON#

Convertissez un fichier YAML en JSON avec une seule requête vers POST /v1/convert/yaml-to-json. L'endpoint accepte des entrées .yaml ou .yml, utilise une analyse sûre (pas d'exécution de code arbitraire) et produit du JSON formaté avec une indentation de 2 espaces. Les réponses renvoient les octets JSON bruts par défaut, ou des métadonnées avec une URL de téléchargement présignée lorsque direct_download=false.


Endpoint#

POST /v1/convert/yaml-to-json

Content-Type : multipart/form-data

Entrée acceptée : fichiers .yaml ou .yml (encodés en UTF-8)

Format de sortie : .json (application/json)


Authentification#

Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.

X-API-Key: sk_your_private_key

Ou :

Authorization: Bearer <jwt_token>

Paramètres de la requête#

Paramètre Type Requis Par défaut Description
file file Oui -- Le fichier .yaml ou .yml à convertir. Doit être encodé en UTF-8.
output_filename string Non Nom du fichier d'entrée Nom de fichier de sortie personnalisé. L'extension .json est ajoutée automatiquement.
direct_download boolean Non true Lorsque true, renvoie les octets JSON bruts. Lorsque false, renvoie des métadonnées avec une URL de téléchargement présignée.

Règles de conversion#

Correspondance directe de YAML vers JSON :

database:
  host: localhost
  port: 5432
features:
- auth
- logging
enabled: true

Devient :

{
  "database": {
    "host": "localhost",
    "port": 5432
  },
  "features": ["auth", "logging"],
  "enabled": true
}
  • Utilise une analyse sûre -- pas de construction d'objets Python arbitraires à partir de balises YAML
  • Les types YAML sont mappés naturellement : chaînes, nombres, booléens, nulls, tableaux, objets
  • La sortie est indentée avec 2 espaces et l'unicode préservé
Note : Seul le premier document YAML est converti. Pour les fichiers YAML multi-documents séparés par ---, seul le premier document sera traité.

Réponse#

Téléchargement direct (direct_download=true, par défaut)#

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

Réponse avec métadonnées (direct_download=false)#

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/yaml-to-json/config_20260405_123456789.json",
    "filename": "config_20260405_123456789.json",
    "file_size": 1234,
    "conversion_time_seconds": 0.03
}

Exemples de code#

Python#

import requests

with open("config.yaml", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/yaml-to-json",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("config.yaml", f, "application/x-yaml")}
    )

with open("config.json", "wb") as out:
    out.write(response.content)

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("config.yaml"));

const response = await fetch("https://api.enconvert.com/v1/convert/yaml-to-json", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

const json = await response.json();

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/yaml-to-json");
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.yaml")]
]);
$json = curl_exec($ch);
curl_close($ch);

Go#

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "config.yaml")
file, _ := os.Open("config.yaml")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/yaml-to-json", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)

Réponses d'erreur#

Statut Condition
400 Bad Request Le fichier n'est pas un fichier .yaml ou .yml
400 Bad Request Contenu YAML invalide
400 Bad Request Échec de la conversion YAML vers JSON
401 Unauthorized Clé API / jeton JWT manquant ou invalide
402 Payment Required Quota mensuel d'ops épuisé
413 Payload Too Large Le fichier dépasse la taille maximale du forfait

Limites#

Limite Valeur
Taille de fichier max Dépend du forfait (Founding : 5 MB)
Encodage d'entrée UTF-8 uniquement
Documents YAML Premier document uniquement
Conversions mensuelles Dépend du forfait

Questions fréquentes#

Comment convertir du YAML en JSON avec une API REST ?#

Envoyez une requête POST multipart/form-data à /v1/convert/yaml-to-json avec votre fichier .yaml ou .yml dans le champ file, authentifiée avec un en-tête X-API-Key ou un jeton JWT Authorization: Bearer. La réponse est du JSON formaté avec une indentation de 2 espaces.

Est-il sûr de convertir des fichiers YAML non fiables en JSON ?#

L'endpoint utilise une analyse sûre, sans construction d'objets Python arbitraires à partir de balises YAML ni exécution de code arbitraire. Les types YAML sont mappés naturellement vers les chaînes, nombres, booléens, nulls, tableaux et objets JSON.

Puis-je convertir des fichiers YAML multi-documents en JSON ?#

Seul le premier document YAML est converti. Dans les fichiers contenant plusieurs documents séparés par ---, tout ce qui suit le premier document n'est pas traité.

Les fichiers .yml sont-ils acceptés au même titre que les .yaml ?#

Oui. Les extensions .yaml et .yml sont toutes deux acceptées ; toute autre extension renvoie 400 Bad Request. Les fichiers doivent être encodés en UTF-8.

Puis-je obtenir une URL de téléchargement présignée au lieu des octets JSON bruts ?#

Oui. Définissez direct_download=false pour recevoir des métadonnées avec presigned_url, object_key, filename, file_size et conversion_time_seconds.