Spaces:
Sleeping
Sleeping
| <html lang="fr"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Getaround — Documentation de l'API Pricing</title> | |
| <style> | |
| body { font-family: sans-serif; max-width: 860px; margin: 40px auto; padding: 0 24px; color: #1a1a1a; } | |
| h1 { color: #1565C0; } | |
| h2 { color: #1565C0; border-bottom: 1px solid #e0e0e0; padding-bottom: 6px; } | |
| h3 { color: #333; } | |
| code, pre { background: #f4f4f4; border-radius: 6px; padding: 2px 6px; font-family: monospace; font-size: 13px; } | |
| pre { padding: 14px; overflow-x: auto; } | |
| .endpoint { background: #f0f4ff; border-left: 4px solid #1565C0; padding: 10px 16px; border-radius: 6px; margin-bottom: 10px; } | |
| .badge { display: inline-block; padding: 2px 10px; border-radius: 4px; font-size: 12px; font-weight: 700; margin-right: 8px; } | |
| .get { background: #e3f2fd; color: #1565C0; } | |
| .post { background: #fff3e0; color: #e65100; } | |
| ul li { margin-bottom: 6px; } | |
| .note { background: #fff8e1; border-left: 4px solid #f9a825; padding: 10px 16px; border-radius: 6px; margin-top: 16px; } | |
| </style> | |
| </head> | |
| <body> | |
| <h1>🚗 Getaround — Documentation de l'API Pricing</h1> | |
| <p>Documentation de l'API accessible via <code>/docs</code>. Cette API expose un modèle de Machine Learning qui prédit <code>rental_price_per_day</code> en fonction des caractéristiques du véhicule.</p> | |
| <h2>Vue d'ensemble</h2> | |
| <ul> | |
| <li><span class="badge get">GET</span> <code>/</code> — Page d'accueil (HTML)</li> | |
| <li><span class="badge get">GET</span> <code>/health</code> — Healthcheck (JSON)</li> | |
| <li><span class="badge post">POST</span> <code>/predict</code> — Prédiction (JSON)</li> | |
| <li><span class="badge get">GET</span> <code>/docs</code> — Documentation (HTML)</li> | |
| </ul> | |
| <h2>GET /</h2> | |
| <div class="endpoint"> | |
| <span class="badge get">GET</span> Page d'accueil HTML listant les endpoints disponibles. | |
| </div> | |
| <pre>curl -s https://anabeldg-getaround-pricing-api.hf.space/</pre> | |
| <h2>GET /health</h2> | |
| <div class="endpoint"> | |
| <span class="badge get">GET</span> Vérifie que le service est actif et que le modèle est correctement chargé. | |
| </div> | |
| <pre>curl -s https://anabeldg-getaround-pricing-api.hf.space/health</pre> | |
| <p>Réponse attendue :</p> | |
| <pre>{ | |
| "status": "ok" | |
| }</pre> | |
| <h2>GET /docs</h2> | |
| <div class="endpoint"> | |
| <span class="badge get">GET</span> Page HTML contenant la documentation de l'API. | |
| </div> | |
| <pre>curl -s https://anabeldg-getaround-pricing-api.hf.space/docs</pre> | |
| <h2>POST /predict</h2> | |
| <div class="endpoint"> | |
| <span class="badge post">POST</span> Retourne les prédictions de prix journalier (<code>rental_price_per_day</code>) pour une ou plusieurs lignes en entrée. | |
| </div> | |
| <ul> | |
| <li><strong>Méthode :</strong> POST</li> | |
| <li><strong>Entrée :</strong> JSON avec une clé <code>input</code></li> | |
| <li><strong>Sortie :</strong> JSON <code>{"prediction": [...]}</code> (une prédiction par ligne)</li> | |
| </ul> | |
| <h3>Formats acceptés</h3> | |
| <ul> | |
| <li>Format matrice (requis pour l'évaluation) : <code>{"input": [[...], [...]]}</code></li> | |
| <li>Format dictionnaires (optionnel / compatibilité) : <code>{"input": [{"feature": value, ...}]}</code></li> | |
| </ul> | |
| <h3>1) Format matrice (requis)</h3> | |
| <p>Chaque ligne doit contenir exactement <strong>13 valeurs</strong>, dans l'ordre strict suivant (défini par <code>feature_order.json</code>) :</p> | |
| <pre>model_key, mileage, engine_power, fuel, paint_color, car_type, | |
| private_parking_available, has_gps, has_air_conditioning, automatic_car, | |
| has_getaround_connect, has_speed_regulator, winter_tires</pre> | |
| <p>Types attendus :</p> | |
| <ul> | |
| <li><code>model_key</code>, <code>fuel</code>, <code>paint_color</code>, <code>car_type</code> → chaînes de caractères</li> | |
| <li><code>mileage</code>, <code>engine_power</code> → valeurs numériques</li> | |
| <li>Variables booléennes → <code>true</code>/<code>false</code> ou <code>0</code>/<code>1</code></li> | |
| </ul> | |
| <p>Si une ligne n'a pas 13 valeurs, l'API renvoie une erreur <code>422</code>.</p> | |
| <p><strong>Exemple de requête (matrice) :</strong></p> | |
| <pre>{ | |
| "input": [ | |
| ["Citroën", 140411, 100, "diesel", "black", "convertible", 1, 1, 0, 0, 1, 1, 1] | |
| ] | |
| }</pre> | |
| <p><strong>curl :</strong></p> | |
| <pre>curl -X POST "https://anabeldg-getaround-pricing-api.hf.space/predict" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"input":[["Citroën",140411,100,"diesel","black","convertible",1,1,0,0,1,1,1]]}'</pre> | |
| <p><strong>Python :</strong></p> | |
| <pre>import requests | |
| payload = { | |
| "input": [ | |
| ["Citroën", 140411, 100, "diesel", "black", "convertible", 1, 1, 0, 0, 1, 1, 1] | |
| ] | |
| } | |
| r = requests.post("https://anabeldg-getaround-pricing-api.hf.space/predict", json=payload) | |
| print(r.json()) | |
| # {"prediction": [106.57]}</pre> | |
| <h3>2) Format dictionnaires (compatibilité)</h3> | |
| <p>Ce format est accepté pour des raisons de compatibilité. Toutes les colonnes attendues doivent être présentes ; l'API réordonne ensuite selon <code>FEATURE_ORDER</code>.</p> | |
| <p><strong>Exemple de requête (dictionnaires) :</strong></p> | |
| <pre>{ | |
| "input": [ | |
| { | |
| "model_key": "Citroën", | |
| "mileage": 140411, | |
| "engine_power": 100, | |
| "fuel": "diesel", | |
| "paint_color": "black", | |
| "car_type": "convertible", | |
| "private_parking_available": true, | |
| "has_gps": true, | |
| "has_air_conditioning": false, | |
| "automatic_car": false, | |
| "has_getaround_connect": true, | |
| "has_speed_regulator": true, | |
| "winter_tires": true | |
| } | |
| ] | |
| }</pre> | |
| <h3>Réponse</h3> | |
| <p>Une prédiction par ligne.</p> | |
| <pre>{ | |
| "prediction": [106.57] | |
| }</pre> | |
| <h2>Erreurs possibles</h2> | |
| <ul> | |
| <li><code>422</code> — entrée invalide (mauvaise dimension de matrice, colonnes manquantes, JSON invalide)</li> | |
| <li><code>500</code> — erreur interne lors de la prédiction (échec du modèle)</li> | |
| </ul> | |
| <div class="note"> | |
| <strong>Notes :</strong> | |
| <ul> | |
| <li>L'API supporte des prédictions en batch (plusieurs lignes dans <code>input</code>).</li> | |
| <li>Les catégories inconnues sont gérées par le pipeline du modèle.</li> | |
| <li>Pour éviter les erreurs 422, respecter strictement l'ordre et le nombre de features en mode matrice.</li> | |
| </ul> | |
| </div> | |
| </body> | |
| </html> |