YouMotor API v1 · Integrazioni partner

API YouMotor

Tutti gli endpoint sono versionati sotto /api/v1.

Base URLhttps://api.youmotor.com/api/v1
Scarica Postman Collection

23+

Endpoint documentati

5

Scope permessi

100

Veicoli per bulk import

20

Max foto per upload

API key dealer

Bearer ym_live_... oppure header X-API-Key con lo stesso valore. Il prefisso keyPrefix identifica la chiave per supporto e rotazione.

Scope granulari

Permessi separati: vehicles:read, vehicles:write, media:write, submissions:read, stock-status:write.

Pratiche pending

Creazioni e update vanno in revisione YouMotor prima della pubblicazione sul portale.

Media multipart

Massimo 20 immagini e 150 MB complessivi per invio. URL restituiti pronti per il payload.

Flusso consigliato

  1. 1
    Provisioning autosalonePOST /partner/saloni con chiave di provisioning dedicata (es. ym_partner_..., una per integratore). Poi salvare l’API key ym_live_ restituita per lo stock.
  2. 2
    Verifica API keyGET /partner/me per confermare autenticazione e scope attivi.
  3. 3
    Catalogo (select + Quattroruote)GET /partner/vehicle-options e /partner/quattroruote/* con Bearer ym_live_... (scope vehicles:read). Dopo l’accordo, anche il Bearer ym_partner_... è accettato sul catalogo; in produzione conviene usare la chiave salone.
  4. 4
    Upload fotoPOST /partner/vehicles/:plate/photos e salvare gli URL restituiti.
  5. 5
    Crea annuncioPOST /partner/vehicles con payload completo. Il veicolo entra in stato pending.
  6. 6
    Monitora praticheGET /partner/submissions per leggere note e correggere dati richiesti da YouMotor.
  7. 7
    Gestione stockPOST /partner/vehicles/:id/sold quando il veicolo è venduto.

Autenticazione

Nessun endpoint di catalogo è anonimo: servono token partner e/o API key dealer.

Token provisioning (integratore)

GET /partner/saloni e POST /partner/saloni — una chiave distinta per ogni multicaricatore

Authorization: Bearer ym_partner_xxx

Formato: Bearer ym_partner_...

Dealer API key

Stock, pratiche, upload: scope come da accordo

Authorization: Bearer ym_live_xxx — oppure — X-API-Key: ym_live_xxx

Formato: Bearer ym_live_...

Catalogo veicoli

GET /partner/vehicle-options e /partner/quattroruote/* — API key dealer con vehicles:read (consigliato). Con accordo, anche Bearer ym_partner_... per lo stesso catalogo.

Authorization: Bearer ym_live_xxx

Formato: Bearer ym_live_...

Flusso integrazione (end-to-end)

Ordine operativo consigliato: credenziali, catalogo, caricamento media, pratiche e gestione stock.

Fase A — Credenziali e accesso

  1. Viene consegnata una chiave di provisioning ym_partner_..., da usare come Bearer solo sui servizi di creazione ed elenco saloni. È personale del vostro accordo: non condividetela tra integrazioni o ambienti diversi senza coordinamento con YouMotor.
  2. POST /partner/saloni con Authorization: Bearer ym_partner_... crea l'autosalone. La password temporanea per il portale salone arriva solo via emailall'indirizzo inviato nel body; non è nel JSON di risposta.
  3. Con issueApiKey: true la risposta include dealerApiKey con la chiave completa ym_live_... (mostrata una sola volta) e l'oggetto apiKey con metadati (id, keyPrefix, scopes).
  4. GET /partner/me con la ym_live_... verifica dealer e scope attivi.

Fase B — Catalogo e payload

  1. Chiamate GET /partner/vehicle-options e le route Quattroruote per costruire liste coerenti (marca/modello/allestimento, fuel_type, color, ecc.).
  2. Caricate le foto con POST /partner/vehicles/{TARGA}/photos (multipart, campo images). Usate gli URL in uploaded[].url nel JSON dell'annuncio (coverImage, gallery).
  3. POST /partner/vehicles crea una pratica pending: la risposta contiene l'UUID della submission (id), non l'id del veicolo pubblicato. Dopo l'approvazione YouMotor, il veicolo compare in GET /partner/vehicles con il suo UUID.
  4. Seguite GET /partner/submissions e, se serve, PATCH /partner/submissions/:id per correggere il payload mentre è ancora in pending.
  5. Aggiornamenti a veicoli già esistenti: PATCH /partner/vehicles/:id con l'UUID veicolo. Vendita/archivio: POST /partner/vehicles/:id/sold, DELETE .../sold, POST .../archive, POST .../unarchive (scope stock-status:write).

Sicurezza delle chiavi

Trattate ym_partner_... e ym_live_... come segreti: conservateli solo su server controllati da voi, usate sempre HTTPS, evitate di esporli in app o browser pubblici e non li incluse nei log applicativi. In caso di compromissione o dubbio, revocate la chiave con YouMotor e richiedetene una nuova.

Per provare le chiamate potete usare la Postman collection scaricabile dal pulsante in alto in questa pagina.

Partner provisioning

Creazione e elenco autosaloni tramite token partner. Richiede accordo commerciale con YouMotor.

GEThttps://api.youmotor.com/api/v1/partner/saloniPartner token

Lista autosaloni del partner

Elenco degli autosaloni collegati alla vostra chiave di provisioning: la lista riflette solo i saloni creati con lo stesso Bearer usato in questa richiesta.

bash · cURL
curl "https://api.youmotor.com/api/v1/partner/saloni" \
  -H "Authorization: Bearer <partner_token>"
POSThttps://api.youmotor.com/api/v1/partner/saloniPartner token

Crea autosalone da partner autorizzato

Crea un nuovo autosalone collegato alla vostra integrazione, usando la chiave di provisioning (Bearer). Con `issueApiKey: true` la risposta può includere una API key `ym_live_...` mostrata **una sola volta**: va copiata e custodita in modo sicuro.

  • La chiave completa è nel campo dealerApiKey (non in apiKey). Non è recuperabile in seguito.
  • externalAccount.customerReference collega il dealer al CRM del partner.
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/saloni \
  -H "Authorization: Bearer <partner_token>" \
  -H "Content-Type: application/json" \
  --data '{
    "email": "dealer@autorossi.it",
    "displayName": "Auto Rossi",
    "legalName": "Auto Rossi Srl",
    "phone": "+390212345678",
    "vatNumber": "12345678901",
    "address": {
      "line1": "Via Roma 10",
      "city": "Milano",
      "province": "MI",
      "postalCode": "20100",
      "country": "IT"
    },
    "issueApiKey": true,
    "apiKeyLabel": "multicaricatore",
    "externalAccount": {
      "provider": "partner-name",
      "customerReference": "customer-123"
    }
  }'

Partner — Catalogo

Opzioni select e tassonomia Quattroruote. Autenticazione: token partner di provisioning oppure API key dealer con scope vehicles:read.

GEThttps://api.youmotor.com/api/v1/partner/vehicle-optionsToken / API key

Catalogo opzioni select veicolo

Restituisce i gruppi di opzioni per compilare gli annunci (alimentazione, cambio, colore, optional, ecc.). Richiede Bearer: token partner di provisioning, oppure API key dealer con scope vehicles:read.

  • Consigliato cachare la risposta: i valori cambiano raramente.
  • Senza filtro groups restituisce tutti i 15 gruppi elencati sotto.
  • Per equipment, safety, comfort e infotainment il campo annuncio è un array di stringhe; almeno una delle quattro liste deve essere valorizzata.

Parametri

NomeInTipoDescrizione
groupsquerystringFiltro opzionale: chiavi gruppo separate da virgola (es. fuel_type,transmission,equipment). Valori ammessi: fuel_type, transmission, segment, body_type, drivetrain, availability, warranty, service_history, color, owners, equipment, safety, comfort, infotainment, province.

Gruppi disponibili e valori restituiti

Ogni riga corrisponde a un groups= valido. La risposta include key, label e options[] con oggetti { key, label, value, position, metadata }. Nel payload annuncio usare il campo value (non key).

fuel_typeAlimentazionefuel_typestring
Valori value: Benzina · Diesel · Ibrida · Ibrida Plug-in · Elettrica
transmissionCambiotransmissionstring
Valori value: Automatica · Manuale
segmentSegmentosegmentstring
Valori value: SUV · Berlina · City Car · Station Wagon · Coupe
body_typeCarrozzeriabody_typestring
Valori value: SUV · Berlina · City Car · Station Wagon · Coupe · Cabrio · Monovolume · Furgone · Pickup
drivetrainTrazionedrivetrainstring
Valori value: Anteriore · Posteriore · Integrale · AWD · 4x4 inseribile · 4x4 permanente
availabilityDisponibilitàavailabilitystring
Valori value: Nuova · KM0 · Usata · Usata garantita · Pronta consegna · Disponibile a breve · In arrivo · Su ordinazione · In trattativa · Prenotata
warrantyGaranziawarrantystring
Valori value: Nessuna · 6 mesi concessionario · 12 mesi legale conformità · 12 mesi concessionario · 12 mesi estensione premium · 24 mesi concessionario · 24 mesi estensione premium · 36 mesi concessionario · 48 mesi concessionario · 60 mesi concessionario · Garanzia usato certificato · Garanzia ufficiale casa madre · Garanzia ufficiale residua · Garanzia batteria EV residua · Garanzia estendibile fino a 36 mesi · Garanzia estendibile fino a 48 mesi · Garanzia estendibile fino a 60 mesi
service_historyCronologia tagliandiservice_historystring
Valori value: Tagliandi ufficiali completi · Tagliandi certificati ufficiali · Tagliandi certificati indipendenti · Tagliandi regolari documentati · Tagliandi ufficiali + indipendenti · Storico parziale disponibile · Storico digitale disponibile · Cronologia completa con fatture · Nessun storico disponibile · Fatture manutenzione disponibili · Ultimo tagliando appena eseguito · Distribuzione sostituita · Batteria EV verificata
colorColore esternocolorstring
Valori value: Bianco · Bianco Perla · Bianco Ghiaccio · Nero · Nero Metallizzato · Nero Opaco · Grigio · Grigio Chiaro · Grigio Scuro · Grigio Metallizzato · Argento · Blu · Blu Chiaro · Blu Scuro · Blu Notte · Azzurro · Rosso · Rosso Corsa · Rosso Bordeaux · Arancione · Giallo · Verde · Verde Scuro · Marrone · Bronzo · Oro Champagne · Viola Metallizzato · Rosa Cipria · Bicolore Tetto Nero · Bicolore Nero/Bianco
ownersProprietari precedentiownersnumber
Valori value: 0 · 1 · 2 · 3 · 4 · 5
equipmentEquipaggiamentoequipmentstring[]
Valori value: Cerchi in lega · Cerchi in lega da 17" · Cerchi in lega da 18" · Cerchi in lega da 19" · Cerchi in lega da 20" · Pacchetto sportivo · Pacchetto Business · Pacchetto inverno · Fari LED · Fari Matrix LED · Fari Full LED · Fari Xenon · Tetto panoramico · Tetto apribile · Gancio traino · Portellone elettrico · Pneumatici invernali · Ruotino di scorta · Sospensioni adattive · Vetri oscurati
safetySicurezzasafetystring[]
Valori value: ADAS completo · Cruise control adattivo · Cruise control · Frenata automatica emergenza · Mantenimento corsia · Riconoscimento segnali stradali · Monitoraggio stanchezza conducente · Blind spot monitor · Rear cross traffic alert · Sensori parcheggio · Sensori parcheggio anteriori · Sensori parcheggio posteriori · Telecamera 360 · Telecamera posteriore · Airbag laterali · ISOFIX · Hill Hold Control · ABS · ESP · TPMS
comfortComfortcomfortstring[]
Valori value: Sedili riscaldati · Sedili ventilati · Sedili elettrici · Regolazione lombare elettrica · Memorie sedili · Volante riscaldato · Volante in pelle · Bracciolo anteriore · Bracciolo posteriore · Clima automatico bi-zona · Clima tri-zona · Climatizzatore automatico · Climatizzatore manuale · Keyless entry · Avviamento keyless · Sensore luci · Sensore pioggia · Vetri elettrici anteriori · Vetri elettrici posteriori
infotainmentInfotainmentinfotainmentstring[]
Valori value: Navigatore · Navigatore integrato · Apple CarPlay · Apple CarPlay wireless · Android Auto · Android Auto wireless · Ricarica wireless · Impianto audio premium · Bluetooth · Vivavoce · Radio DAB · Schermo touch · Quadro strumenti digitale · Comandi vocali · Comandi al volante · Hotspot Wi-Fi · Sistema SOS emergenza · Head-up display
provinceProvincia / cittàlocationstring
Valori value: Agrigento · Alessandria · Ancona · Aosta · Arezzo · Bari · Bergamo · Bologna · Bolzano · Brescia · Cagliari · Catania · Como · Firenze · Genova · Milano · Modena · Napoli · Padova · Palermo · Parma · Roma · Torino · Trento · Treviso · Varese · Venezia · Verona · Vicenza
bash · cURL
curl "https://api.youmotor.com/api/v1/partner/vehicle-options?groups=fuel_type,transmission,equipment" \
  -H "Authorization: Bearer <partner_token_o_ym_live>"
GEThttps://api.youmotor.com/api/v1/partner/quattroruote/marcheToken / API key

Marche Quattroruote

Catalogo marche Quattroruote. I code sono stringhe numeriche (es. 8 = FIAT); usarle come codiceMarca per modelli/allestimenti.

bash · cURL
curl "https://api.youmotor.com/api/v1/partner/quattroruote/marche" \
  -H "Authorization: Bearer <partner_token_o_ym_live>"
GEThttps://api.youmotor.com/api/v1/partner/quattroruote/modelliToken / API key

Modelli Quattroruote per marca

Lista modelli per codice marca. Parametro obbligatorio codiceMarca.

Parametri

NomeInTipoDescrizione
codiceMarca*querystringCodice numerico da /partner/quattroruote/marche (es. 8 per FIAT).
bash · cURL
curl "https://api.youmotor.com/api/v1/partner/quattroruote/modelli?codiceMarca=8" \
  -H "Authorization: Bearer <partner_token_o_ym_live>"
GEThttps://api.youmotor.com/api/v1/partner/quattroruote/allestimentiToken / API key

Allestimenti Quattroruote per modello

Lista allestimenti per codice modello. Parametro obbligatorio codiceModello.

Parametri

NomeInTipoDescrizione
codiceModello*querystringCodice modello da /partner/quattroruote/modelli (es. 4405).
bash · cURL
curl "https://api.youmotor.com/api/v1/partner/quattroruote/allestimenti?codiceModello=4405" \
  -H "Authorization: Bearer <partner_token_o_ym_live>"

Partner — Veicoli

Gestione stock, annunci e foto del salone. Richiede API key con scope appropriati.

GEThttps://api.youmotor.com/api/v1/partner/meDealer API key

Verifica API key e autosalone

Restituisce i dati del dealer associato alla API key corrente e le informazioni sulla chiave stessa inclusi scope attivi. Usato per verificare autenticazione e permessi.

bash · cURL
curl https://api.youmotor.com/api/v1/partner/me \
  -H "Authorization: Bearer ym_live_xxx"
GEThttps://api.youmotor.com/api/v1/partner/vehiclesDealer API key

Lista veicoli del salone

Ritorna lo stock corrente del dealer con paginazione tramite limit e offset. Richiede scope vehicles:read. I campi veicolo sono in snake_case (come restituiti dal database).

Parametri

NomeInTipoDescrizione
limitqueryintegerMax risultati. Default 100, max 200.
offsetqueryintegerRisultati da saltare. Default 0.
bash · cURL
curl "https://api.youmotor.com/api/v1/partner/vehicles?limit=50&offset=0" \
  -H "Authorization: Bearer ym_live_xxx"
POSThttps://api.youmotor.com/api/v1/partner/vehiclesDealer API key

Crea pratica nuovo annuncio

Invia il payload annuncio completo. Crea una pratica in stato pending che YouMotor revisiona prima della pubblicazione. La risposta contiene l'UUID della submission (campo id). In caso di errore di validazione, la risposta include details.fieldErrors.

  • Il veicolo non viene pubblicato subito: resta in revisione fino all’approvazione da parte di YouMotor.
  • condition è obbligatorio: nuovo, km0 o usato.
  • youmotor_fee: minimo 300, multiplo di 50.
  • max_negotiation_price: deve essere > 0 e ≤ price.
  • Almeno uno tra equipment, safety, comfort, infotainment deve essere valorizzato.
  • Se la stessa pratica (stesso payload) è già pending risponde 409 Conflict.
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/vehicles \
  -H "Authorization: Bearer ym_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "title": "Volkswagen Golf 8 Life 1.5 TSI",
    "make": "Volkswagen",
    "model": "Golf",
    "version": "1.5 TSI Life",
    "segment": "Berlina",
    "model_year": 2022,
    "first_registration": "2022-03-01",
    "price": 27500,
    "max_negotiation_price": 26000,
    "youmotor_fee": 300,
    "km": 18000,
    "mileage": 1498,
    "condition": "usato",
    "fuel_type": "Benzina",
    "transmission": "Manuale",
    "drivetrain": "Anteriore",
    "power_kw": 96,
    "power_hp": 131,
    "co2_emissions": 124,
    "fuel_consumption_combined": "5.4 l/100km",
    "plate": "EF456GH",
    "owners": 1,
    "warranty": "12 mesi concessionario",
    "service_history": "Tagliandi ufficiali completi",
    "availability": "Pronta consegna",
    "location": "Milano",
    "color": "Grigio Metallizzato",
    "interior": "Tessuto nero",
    "highlights": [
      "Unico proprietario",
      "Tagliandi ufficiali",
      "Pronta consegna"
    ],
    "description": "Auto in ottimo stato, pronta consegna con storico manutenzione completo.",
    "equipment": ["Cerchi in lega 17\"", "Fari full LED"],
    "comfort": ["Clima automatico bi-zona", "Sedili riscaldati"],
    "safety": ["Frenata autonoma di emergenza", "Mantenimento corsia"],
    "infotainment": ["App-Connect (Android Auto/CarPlay)"],
    "coverImage": "https://cdn.youmotor.com/img/EF456GH/cover.jpg",
    "gallery": [
      "https://cdn.youmotor.com/img/EF456GH/01.jpg",
      "https://cdn.youmotor.com/img/EF456GH/02.jpg"
    ]
  }'
GEThttps://api.youmotor.com/api/v1/partner/vehicles/:idDealer API key

Dettaglio veicolo

Ritorna il record completo del veicolo (snake_case) identificato dall'UUID. Richiede scope vehicles:read.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID del veicolo.
bash · cURL
curl "https://api.youmotor.com/api/v1/partner/vehicles/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
  -H "Authorization: Bearer ym_live_xxx"
PATCHhttps://api.youmotor.com/api/v1/partner/vehicles/:idDealer API key

Crea pratica aggiornamento annuncio

Invia un payload completo per aggiornare un annuncio esistente. Come per la creazione, genera una pratica pending che YouMotor deve approvare. L'annuncio corrente rimane pubblicato fino all'approvazione.

  • Richiede il payload completo, non solo i campi modificati.
  • L'annuncio pubblicato non cambia fino all'approvazione dell'update.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID del veicolo da aggiornare.
bash · cURL
curl -X PATCH https://api.youmotor.com/api/v1/partner/vehicles/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer ym_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "title": "Volkswagen Golf 8 Life 1.5 TSI — Prezzo ribassato",
    "make": "Volkswagen",
    "model": "Golf",
    "version": "1.5 TSI Life",
    "segment": "Berlina",
    "model_year": 2022,
    "first_registration": "2022-03-01",
    "price": 26900,
    "max_negotiation_price": 25500,
    "youmotor_fee": 300,
    "km": 18500,
    "mileage": 1498,
    "condition": "usato",
    "fuel_type": "Benzina",
    "transmission": "Manuale",
    "drivetrain": "Anteriore",
    "plate": "EF456GH",
    "owners": 1,
    "warranty": "12 mesi concessionario",
    "service_history": "Tagliandi ufficiali completi",
    "availability": "Pronta consegna",
    "location": "Milano",
    "color": "Grigio Metallizzato",
    "description": "Prezzo aggiornato. Auto in ottimo stato pronta consegna.",
    "equipment": ["Cerchi in lega 17\"", "Fari full LED"]
  }'
POSThttps://api.youmotor.com/api/v1/partner/vehicles/importDealer API key

Import bulk annunci

Invia fino a 1000 veicoli in una singola richiesta. Ogni elemento crea una pratica pending indipendente. La risposta riporta l'esito per ogni riga: gli errori di validazione per singola riga non bloccano le altre.

  • Massimo 1000 veicoli per chiamata.
  • Errori di singola riga non bloccano l'elaborazione delle altre.
  • Pratiche duplicate (stesso payload già pending) restituiscono ok: false con messaggio di errore.
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/vehicles/import \
  -H "Authorization: Bearer ym_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "vehicles": [
      {
        "title": "Fiat Panda 1.0 Hybrid",
        "make": "Fiat",
        "model": "Panda",
        "version": "1.0 Hybrid",
        "segment": "City Car",
        "model_year": 2023,
        "first_registration": "2023-05-01",
        "price": 13900,
        "max_negotiation_price": 13000,
        "youmotor_fee": 300,
        "km": 9500,
        "mileage": 999,
        "condition": "usato",
        "fuel_type": "Ibrida",
        "transmission": "Manuale",
        "drivetrain": "Anteriore",
        "plate": "GH123JK",
        "owners": 1,
        "warranty": "12 mesi concessionario",
        "service_history": "Tagliandi regolari documentati",
        "availability": "Pronta consegna",
        "location": "Torino",
        "color": "Bianco",
        "description": "City car ibrida efficiente, pronta consegna.",
        "equipment": ["Cerchi in lega 15\""]
      }
    ]
  }'
POSThttps://api.youmotor.com/api/v1/partner/vehicles/:plate/photosDealer API key

Upload foto veicolo

Carica fino a 20 immagini via multipart/form-data (campo images). Gli URL in uploaded[].url vanno nel payload annuncio (coverImage, gallery/images). Richiede scope media:write.

  • Massimo 20 immagini per upload, 150 MB complessivi.
  • Formati accettati: JPEG, PNG, WebP.
  • Gli URL restituiti in uploaded[].url puntano al CDN pubblico (formato WebP).

Parametri

NomeInTipoDescrizione
plate*pathstringTarga del veicolo (5–10 caratteri A-Z0-9).
kindquerystringPassa kind=cover per impostare la prima immagine come cover.
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/vehicles/EF456GH/photos \
  -H "Authorization: Bearer ym_live_xxx" \
  -F "images=@frontale.jpg" \
  -F "images=@interni.jpg" \
  -F "images=@laterale.jpg"
POSThttps://api.youmotor.com/api/v1/partner/vehicles/:id/soldDealer API key

Segna veicolo come venduto

Imposta sold=true sul veicolo con data, prezzo e note opzionali. Richiede scope stock-status:write.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID del veicolo.
pricebodynumberPrezzo di vendita effettivo (opzionale).
notesbodystringNote sulla vendita (opzionale).
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/vehicles/a1b2c3d4-e5f6-7890-abcd-ef1234567890/sold \
  -H "Authorization: Bearer ym_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "price": 26500,
    "notes": "Venduta tramite portale partner"
  }'
DELETEhttps://api.youmotor.com/api/v1/partner/vehicles/:id/soldDealer API key

Annulla stato venduto

Ripristina un veicolo precedentemente segnato come venduto (sold=false). Richiede scope stock-status:write.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID del veicolo.
bash · cURL
curl -X DELETE https://api.youmotor.com/api/v1/partner/vehicles/a1b2c3d4-e5f6-7890-abcd-ef1234567890/sold \
  -H "Authorization: Bearer ym_live_xxx"
POSThttps://api.youmotor.com/api/v1/partner/vehicles/:id/archiveDealer API key

Archivia veicolo

Imposta status=archived sul veicolo. Richiede scope stock-status:write.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID del veicolo.
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/vehicles/a1b2c3d4-e5f6-7890-abcd-ef1234567890/archive \
  -H "Authorization: Bearer ym_live_xxx"
POSThttps://api.youmotor.com/api/v1/partner/vehicles/:id/unarchiveDealer API key

Ripristina veicolo archiviato

Imposta status=active su un veicolo archiviato. Richiede scope stock-status:write.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID del veicolo.
bash · cURL
curl -X POST https://api.youmotor.com/api/v1/partner/vehicles/a1b2c3d4-e5f6-7890-abcd-ef1234567890/unarchive \
  -H "Authorization: Bearer ym_live_xxx"

Partner — Pratiche

Monitoraggio pratiche di pubblicazione. Eventuali richieste di correzione compaiono su latest_notify_note.

GEThttps://api.youmotor.com/api/v1/partner/submissionsDealer API key

Lista pratiche dealer

Ritorna tutte le pratiche (creazioni e update) del salone. Campi in snake_case; latest_notify_note contiene l'ultima richiesta di correzione da YouMotor. Richiede scope submissions:read.

bash · cURL
curl https://api.youmotor.com/api/v1/partner/submissions \
  -H "Authorization: Bearer ym_live_xxx"
GEThttps://api.youmotor.com/api/v1/partner/submissions/:idDealer API key

Dettaglio pratica

Ritorna il dettaglio completo di una pratica, incluso il payload del veicolo e la cronologia delle note di notifica.

Parametri

NomeInTipoDescrizione
id*pathuuidUUID della pratica.
bash · cURL
curl "https://api.youmotor.com/api/v1/partner/submissions/sub_xyz789" \
  -H "Authorization: Bearer ym_live_xxx"
PATCHhttps://api.youmotor.com/api/v1/partner/submissions/:idDealer API key

Aggiorna payload pratica pending

Aggiorna il payload di una pratica in stato pending. Dopo l'aggiornamento la pratica resta pending per nuova revisione.

  • Funziona solo su pratiche in stato pending.
  • Richiede scope vehicles:write (non submissions:read).

Parametri

NomeInTipoDescrizione
id*pathuuidUUID della pratica da aggiornare.
bash · cURL
curl -X PATCH https://api.youmotor.com/api/v1/partner/submissions/sub_xyz789 \
  -H "Authorization: Bearer ym_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "title": "Volkswagen Golf 8 Life 1.5 TSI — Prezzo corretto",
    "make": "Volkswagen",
    "model": "Golf",
    "version": "1.5 TSI Life",
    "segment": "Berlina",
    "model_year": 2022,
    "first_registration": "2022-03-01",
    "price": 25900,
    "max_negotiation_price": 24500,
    "youmotor_fee": 300,
    "km": 18000,
    "mileage": 1498,
    "condition": "usato",
    "fuel_type": "Benzina",
    "transmission": "Manuale",
    "drivetrain": "Anteriore",
    "plate": "EF456GH",
    "owners": 1,
    "warranty": "12 mesi concessionario",
    "service_history": "Tagliandi ufficiali completi",
    "availability": "Pronta consegna",
    "location": "Milano",
    "color": "Grigio Metallizzato",
    "description": "Prezzo corretto come richiesto. Auto in ottimo stato.",
    "equipment": ["Cerchi in lega 17\""]
  }'

Schema veicolo

Payload completo richiesto da POST /partner/vehicles, PATCH /partner/vehicles/:id e POST /partner/vehicles/import (camelCase). Le risposte di lista/dettaglio veicolo e pratiche usano invece snake_case come nel database. I campi con asterisco * sono obbligatori.certified non è impostabile tramite questa API; contattare il supporto YouMotor se necessario.

CampoTipoObbl.Descrizione
title*stringSiTitolo annuncio (2–200 caratteri).
make*stringSiMarca; preferire valori da API Quattroruote marche.
model*stringSiModello; preferire valori da API Quattroruote modelli.
version*stringSiAllestimento o versione commerciale (max 200 caratteri).
segment*stringSiSegmento da vehicle-options group=segment.
model_year*integerSiAnno modello (min 1886).
first_registration*dateSiPrima immatricolazione formato YYYY-MM-DD.
price*numberSiPrezzo pubblico in euro (≥ 0).
max_negotiation_price*numberSiPrezzo minimo trattativa (> 0 e ≤ price).
youmotor_fee*numberSiGettone YouMotor: minimo 300, multiplo di 50.
km*integerSiChilometraggio odometro (≥ 0).
mileage*integerSiCilindrata in cc (≥ 0).
condition*enumSiCondizione: nuovo | km0 | usato (obbligatorio per le API partner).
fuel_type*stringSiAlimentazione da vehicle-options group=fuel_type.
transmission*stringSiCambio da vehicle-options group=transmission.
drivetrain*stringSiTrazione da vehicle-options group=drivetrain.
power_kwinteger?NoPotenza in kW (0–2000).
power_hpinteger?NoPotenza in CV (0–2000).
co2_emissionsinteger?NoEmissioni CO₂ in g/km (0–1500).
fuel_consumption_combinedstring?NoConsumo combinato es. "5.4 l/100km" (max 120 caratteri).
plate*stringSiTarga normalizzata, pattern [A-Z0-9]{5,10}.
vinstring?NoNumero telaio VIN.
owners*integerSiProprietari precedenti (1–5).
warranty*stringSiGaranzia da vehicle-options o testo libero.
service_history*stringSiCronologia tagliandi da vehicle-options o testo libero.
availability*stringSiDisponibilità da vehicle-options.
location*stringSiProvincia o sede del veicolo.
color*stringSiColore esterno da vehicle-options group=color.
interiorstring?NoColore o materiale interno.
highlightsstring[]NoFino a 6 punti di forza (max 300 caratteri ciascuno).
description*stringSiDescrizione pubblica (1–5000 caratteri).
equipmentstring[]NoDotazioni generali. Almeno una lista tra equipment, safety, comfort, infotainment deve essere valorizzata.
safetystring[]NoDotazioni sicurezza.
comfortstring[]NoDotazioni comfort.
infotainmentstring[]NoDotazioni infotainment.
coverImagestring?NoURL immagine di copertina (dall'upload foto).
gallerystring[]NoURL immagini galleria (max 100, dall'upload foto).
imagesstring[]NoURL immagini aggiuntive (max 50).

Codici di errore

Tutti gli errori sono JSON con campo error. Le risposte di validazione possono includere anche details.fieldErrors.

json · esempio errore validazione
{
  "error": "Validation failed",
  "details": {
    "fieldErrors": {
      "youmotor_fee": ["Deve essere un multiplo di 50"],
      "max_negotiation_price": ["Deve essere inferiore o uguale a price"]
    }
  }
}
CodiceStatusCausa
400Bad RequestPayload non valido. La risposta include details.fieldErrors con i campi problematici.
401UnauthorizedAutenticazione mancante o API key non valida.
403ForbiddenScope insufficiente per l'operazione richiesta.
404Not FoundRisorsa non trovata.
409ConflictRisorsa duplicata (es. targa già presente nello stock).
422UnprocessableDati semanticamente non validi (es. max_negotiation_price > price).
429Too Many RequestsRate limit superato. Riprovare dopo il periodo indicato nell'header Retry-After.
500Server ErrorErrore interno. Contattare il supporto YouMotor se persiste.

Torna al sito