Riferimento agli strumenti di Spaceship MCP Connector —
Spaceship MCP Connector collega il tuo assistente AI (come Claude) al tuo account Spaceship. Tramite esso, l'assistente può verificare la disponibilità e i prezzi dei domini, fornirti link per acquistare domini sulla pagina di pagamento di Spaceship, gestire i contatti e i nameserver dei domini, leggere o modificare i record DNS e acquistare e vendere domini sul marketplace di Spaceship per tuo conto — tu devi solo fare la richiesta in linguaggio naturale e l'assistente richiama gli strumenti giusti.
L'assistente non addebita mai il tuo account. L'acquisto di un dominio avviene sempre tramite domain_purchase_link: apri il link, poi controlli e paghi tu stesso sulla pagina di pagamento di Spaceship.
Per iniziare
Hai bisogno di un account Spaceship. Spaceship MCP Connector è disponibile su https://connector-mcp.spaceship.com/mcp.
Claude (web e desktop) — apri Impostazioni, scegli Connectors, trova Spaceship nella directory dei connettori e aggiungilo. Claude di Anthropic è attualmente il client con cui abbiamo verificato che Spaceship MCP Connector funzioni.
Altri client MCP — aggiungi un server MCP remoto e puntalo a
https://connector-mcp.spaceship.com/mcp. Altri client potrebbero funzionare, ma non li abbiamo ancora verificati.
Quando ti connetti, ti verrà chiesto di accedere a Spaceship e concedere all'assistente l'accesso al tuo account. Gli strumenti che l'assistente può usare dipendono dall'accesso che approvi — se uno strumento non è disponibile perché l'accesso non è stato concesso, vedi Accesso che concedi, quindi riconnettiti e approva l'accesso di cui ha bisogno.
Termini e privacy
Gli accordi e le policy che si applicano a Spaceship MCP Connector e a tutto ciò che acquisti tramite esso:
Panoramica degli strumenti
Strumento:
contacts_saveCosa fa: Salva i dettagli di contatto e ottiene un ID contatto
Accesso: Scrittura
Strumento:
contacts_getCosa fa: Legge un contatto salvato tramite il suo ID
Accesso: Lettura
Strumento:
contacts_listCosa fa: Elenca tutti i contatti salvati per trovarne e riutilizzarne uno
Accesso: Lettura
Strumento:
domains_listCosa fa: Elenca i tuoi domini oppure cerca un singolo dominio
Accesso: Lettura
Strumento:
domains_check_availabilityCosa fa: Controlla se i domini sono disponibili per la registrazione e il loro prezzo
Accesso: Lettura
Strumento:
domain_purchase_linkCosa fa: Ottiene link di pagamento per acquistare domini sulla pagina di pagamento di Spaceship — la chiamata non addebita nulla
Accesso: Scrittura
Strumento:
domain_set_contactsCosa fa: Assegna contatti a un dominio di tua proprietà
Accesso: Scrittura sensibile
Strumento:
domain_set_nameserversCosa fa: Passa un dominio a nameserver di base o personalizzati
Accesso: Scrittura sensibile
Strumento:
dns_records_getCosa fa: Legge i record DNS di un dominio
Accesso: Lettura
Strumento:
dns_records_saveCosa fa: Aggiunge record DNS o ne aggiorna il TTL
Accesso: Scrittura
Strumento:
dns_records_deleteCosa fa: Elimina record DNS
Accesso: Scrittura sensibile
Strumento:
async_operation_getCosa fa: Controlla lo stato di un'operazione di lunga durata
Accesso: Lettura
Strumento:
marketplace_listings_listCosa fa: Elenca i domini che hai messo in vendita, con filtri
Accesso: Lettura
Strumento:
marketplace_listing_getCosa fa: Legge un'inserzione completa, con i suoi link Aggiungi al carrello
Accesso: Lettura
Strumento:
marketplace_listing_createCosa fa: Mette un dominio in vendita nel marketplace di Spaceship
Accesso: Scrittura sensibile
Strumento:
marketplace_listing_updateCosa fa: Modifica i prezzi, la descrizione, le impostazioni della pagina o Lease-to-Own di un'inserzione
Accesso: Scrittura sensibile
Strumento:
marketplace_listing_deleteCosa fa: Rimuove un dominio dalla vendita — operazione irreversibile
Accesso: Scrittura sensibile
Strumento:
marketplace_listing_verifyCosa fa: Avvia un controllo di proprietà per un annuncio in attesa di verifica
Accesso: Scrittura
Strumento:
marketplace_listings_bulk_verifyCosa fa: Avvia i controlli di proprietà per ogni annuncio in attesa di verifica
Accesso: Scrittura
Strumento:
marketplace_seller_settings_getCosa fa: Legge la pagina portfolio, Quality Offer, i metodi di pagamento mascherati e i record di verifica
Accesso: Lettura
Strumento:
marketplace_seller_settings_updateCosa fa: Modifica la pagina portfolio e/o l'impostazione Quality Offer a livello di account
Accesso: Scrittura sensibile
Strumento:
marketplace_insights_getCosa fa: Dati su portfolio, negoziazioni, vendite, traffico e ricavi, oltre ai domini principali
Accesso: Lettura
Strumento:
marketplace_sales_listCosa fa: Elenca i domini venduti dal venditore, con prezzo e pagamento
Accesso: Lettura
Strumento:
marketplace_checkout_links_listCosa fa: Elenca i link di checkout del venditore con stato, prezzo e ripartizione delle commissioni
Accesso: Lettura
Strumento:
marketplace_checkout_link_createCosa fa: Crea un link di checkout condivisibile "acquista ora" valido 7 giorni per un dominio elencato
Accesso: Scrittura sensibile
Strumento:
marketplace_checkout_link_deactivateCosa fa: Disattiva definitivamente un link di checkout attivo, dopo conferma
Accesso: Scrittura sensibile
Strumento:
marketplace_negotiations_listCosa fa: Elenca le tue trattative come venditore o come acquirente, filtrate per stato o dominio
Accesso: Lettura
Strumento:
marketplace_negotiation_getCosa fa: Legge una trattativa con le sue offerte e i messaggi più recenti
Accesso: Lettura
Strumento:
marketplace_negotiation_message_sendCosa fa: Invia un messaggio di testo all'altra parte di una trattativa
Accesso: Scrittura sensibile
Strumento:
marketplace_offer_makeCosa fa: Fa un'offerta, come acquirente, per un dominio messo in vendita
Accesso: Scrittura sensibile
Strumento:
marketplace_offer_counterCosa fa: Controbatti l'offerta dell'altra parte con un importo o termini Lease-to-Own
Accesso: Scrittura sensibile
Strumento:
marketplace_offer_acceptCosa fa: Accetta l'ultima offerta dell'altra parte — un accordo vincolante
Accesso: Scrittura sensibile
Strumento:
marketplace_offer_declineCosa fa: Rifiuta, come venditore, l'ultima offerta dell'acquirente
Accesso: Scrittura sensibile
Strumento:
marketplace_offer_withdrawCosa fa: Ritira, in qualità di venditore, la tua controfferta in sospeso
Accesso: Scrittura sensibile
Strumento:
marketplace_negotiation_suspendCosa fa: Annulla (sospende), in qualità di venditore, un'intera trattativa sul tuo annuncio, dopo conferma
Accesso: Scrittura sensibile
Strumento:
marketplace_negotiation_restoreCosa fa: Ripristina, in qualità di venditore, una trattativa sospesa
Accesso: Scrittura
Strumento:
marketplace_safepay_deals_listCosa fa: Elenca le tue offerte SafePay come venditore, acquirente o entrambi, filtrate per stato o dominio
Accesso: Lettura
Strumento:
marketplace_safepay_deal_getCosa fa: Legge una singola offerta SafePay: termini, chi paga cosa, il tuo passaggio successivo e il tuo link
Accesso: Lettura
Strumento:
marketplace_safepay_deal_createCosa fa: Apre un accordo SafePay per un dominio come venditore o acquirente
Accesso: Scrittura sensibile
Strumento:
marketplace_safepay_deal_confirmCosa fa: Conferma i termini di un accordo SafePay aperto dall'altra parte, dopo un passaggio di conferma
Accesso: Scrittura sensibile
Strumento:
marketplace_leases_listCosa fa: Elenca i contratti di lease-to-own che prendi o concedi in leasing
Accesso: Lettura
Strumento:
marketplace_lease_getCosa fa: Legge un contratto di lease-to-own: stato, pagato, rimanente e prossimo pagamento
Accesso: Lettura
Strumento:
marketplace_lease_cancelCosa fa: Annulla un contratto lease-to-own come acquirente, dopo un passaggio di conferma
Accesso: Scrittura sensibile
Strumento:
marketplace_listings_searchCosa fa: Cerca domini che altre persone mettono in vendita tramite una parola chiave obbligatoria, filtrati per TLD, prezzo, lunghezza e opzione
Accesso: Lettura
Strumento:
marketplace_purchase_linkCosa fa: Ottiene un link per pagare su Spaceship un dominio del marketplace, un accordo o un accordo SafePay — la chiamata non addebita nulla
Accesso: Scrittura
Strumento:
marketplace_listings_importCosa fa: Mette in vendita fino a 5000 domini in un'unica operazione eseguita dopo la chiamata
Accesso: Scrittura sensibile
Strumento:
marketplace_listings_bulk_updateCosa fa: Modifica prezzi, impostazioni della pagina o lease-to-own su molte inserzioni in un'unica operazione
Accesso: Scrittura sensibile
Strumento:
marketplace_negotiations_bulk_cancelCosa fa: Annulla molte trattative sui tuoi annunci in un'unica operazione, dopo conferma
Accesso: Scrittura sensibile
Strumento:
marketplace_listings_exportCosa fa: Esporta ogni annuncio in un file CSV, preparato dopo la chiamata
Accesso: Lettura
Strumento:
marketplace_sales_exportCosa fa: Esporta i domini venduti tra due date in un file CSV, preparato dopo la chiamata
Accesso: Lettura
Accesso:Lettura recupera solo informazioni. Scrittura modifica i dati in un modo che puoi facilmente annullare. Scrittura sensibile ha un effetto che non puoi semplicemente annullare (spende denaro, non può essere annullata, cambia immediatamente il funzionamento del tuo dominio, raggiunge un'altra persona o imposta un prezzo a cui altri possono acquistare); il tuo assistente dovrebbe chiederti di confermare ogni chiamata.
Nessuno di questi strumenti addebita costi al tuo account. Per acquistare un dominio, domain_purchase_link restituisce link che apri e paghi tu stesso, e domains_list conferma successivamente il risultato.
Accesso che concedi
Quando accedi, Spaceship mostra una schermata di consenso che chiede quale accesso concedere all'assistente. L'accesso in lettura è sempre incluso; l'accesso in scrittura è una scelta separata. L'accesso a cui acconsenti decide quali strumenti l'assistente può usare:
Consenti: Lettura
L'assistente può usare: Gli strumenti contrassegnati come Lettura sopra:
contacts_get,contacts_list,domains_list,domains_check_availability,dns_records_get,async_operation_get,marketplace_listings_list,marketplace_listing_get,marketplace_listings_search,marketplace_seller_settings_get,marketplace_insights_get,marketplace_sales_list,marketplace_checkout_links_list,marketplace_negotiations_list,marketplace_negotiation_get,marketplace_safepay_deals_list,marketplace_safepay_deal_get,marketplace_leases_list,marketplace_lease_get,marketplace_listings_exportemarketplace_sales_export.Consenti: Lettura e scrittura
L'assistente può usare: Ogni strumento nella tabella sopra.
L'accesso in scrittura da solo funziona come lettura e scrittura.
Uno strumento che non hai consentito non viene mostrato all'assistente, e una chiamata a esso riceve risposta come se lo strumento non esistesse: l'errore JSON-RPC
-32602con il messaggioTool <name> not found. La risposta non dice mai il motivo.Con il solo accesso in lettura, all'assistente viene detto che la connessione può solo leggere i dati dell'account e di chiederti di ricollegarti e consentire operazioni di scrittura quando chiedi qualcosa che non può fare. Se l'accesso che hai concesso non lascia disponibile alcuno strumento, gli viene invece detto che la connessione non ha accesso ai dati dell'account e di chiederti di ricollegarti e consentire l'accesso. Nessuno dei due testi viene inviato quando è consentito l'accesso in scrittura.
Una connessione approvata prima che questa scelta esistesse, o che ha richiesto solo l'accesso base a Spaceship, mantiene l'accesso a ogni strumento. Una modifica alla tua scelta ha effetto quando l'assistente effettua di nuovo l'accesso o aggiorna il suo token.
Una connessione senza accesso Spaceship utilizzabile non vede alcuno strumento.
Contatti: referenziati per ID
Ogni strumento che richiede un contatto accetta una contactId stringa per ogni ruolo, mai dettagli di contatto inline. Questi strumenti sono domain_purchase_link, domain_set_contacts e marketplace_purchase_link.
Salva prima il contatto con contacts_save, che restituisce il suo ID, poi passa quell'ID dove il contatto è accettato. Non esiste il salvataggio automatico inline; un ruolo non può ricevere un oggetto contatto completo. Puoi anche riutilizzare un ID da un risultato di contacts_list o domains_list.
Un contactId è una stringa di 27–32 caratteri alfanumerici. Basta ripassarla dove un contatto è accettato.
Flussi di lavoro comuni
Diversi strumenti sono progettati per essere usati insieme: l'output di uno diventa l'input del successivo.
Acquista domini tramite un link di pagamento
domains_check_availability— controlla il nome o i nomi che desideri. Procedi solo quandoresultèavailable. Ogni nome disponibile include ilpricein USD per registrarlo (sia standard sia premium), oppurepriceUnavailableReasonquando non può essere determinato, oltre aminRegisterPeriodInYearsemaxRegisterPeriodInYears— le durate consentite dal TLD. Nota che ilpricecopreprice.pricedYearsanni, che è la durata minima consentita dal TLD e non è sempre 1.domain_purchase_link— una volta che sei d'accordo, passa i domini comeitemse i contatti da assegnare comecontacts— ID contatto dacontacts_list, oppure salva prima nuovi dettagli concontacts_save— conyearseautoRenewcondivisi al livello superiore e override per dominio dove differiscono. Questa chiamata non addebita nulla. Restituisce un link per ogni gruppo di massimo 10 domini, con un prezzo stimato per ciascuno; apri ogni link e paga sulla pagina di pagamento di Spaceship, dove scegli il metodo di pagamento (i fondi dell'account sono preselezionati quando li hai). La privacy WHOIS non può essere impostata in questo modo.domains_list— dopo aver pagato, chiamalo per il dominio per confermare che sia registrato. Non trattare il link come prova d'acquisto e l'assistente non dovrebbe dire che un dominio è stato registrato dalla conversazione prima di allora.
Non chiedere un secondo link per un acquisto che potrebbe essere già andato a buon fine. Se potresti aver già pagato per un dominio — hai seguito un link precedente o l'hai acquistato in un altro modo — chiama prima domains_list e chiedi un nuovo link solo per i domini che non sono davvero registrati. I link non scadono e possono essere riutilizzati, quindi non condividerli con nessun altro.
Aggiorna i contatti di un dominio che possiedi
domain_set_contacts— assegna i contatti al dominio tramitecontactId(salvali prima concontacts_savese necessario). Questo si completa immediatamente e restituisce unoverificationStatus:verificationsignifica che il registrante deve confermare il proprio indirizzo email prima che la modifica venga applicata completamente (gli viene inviata un'email),successsignifica che è già confermato, enullsignifica che per quel dominio non è richiesta alcuna conferma.
Cambia i nameserver di un dominio
domains_list— trova il dominio e vedi i suoinameserverscorrenti ({ provider, hosts }).domain_set_nameservers— passalo ai nameserver predefiniti di Spaceship conprovider: "basic"(senzahosts), oppure puntalo ai tuoi conprovider: "custom"e un elenco di 2–12hosts. Restituisce il risultante{ provider, hosts }, e una successiva chiamata adomains_listriflette la modifica. Riapplicare lo stato in cui un dominio si trova già non è un errore: non viene scritto nulla e la risposta contiene la nota "Già impostato; nulla è cambiato.".
Gestisci i record DNS
domains_list— trova il dominio che vuoi gestire (oppure passa direttamente il suo nome se lo conosci).dns_records_get— leggi i record correnti del dominio.dns_records_saveodns_records_delete— aggiungi, aggiorna o rimuovi record. I record restituiti dadns_records_gethanno la stessa forma accettata dagli strumenti di salvataggio ed eliminazione (l'eliminazione omette solottl), quindi l'assistente può leggere, modificare e riscrivere. La corrispondenza non distingue tra maiuscole e minuscole, tranne per i record TXT, che sono sensibili alle maiuscole.
Rivedi il tuo portafoglio
domains_list— scorri tutti i tuoi domini con ordinamento, oppure recupera un singolo dominio per nome. Ogni dominio include la data di scadenza, l'impostazione di rinnovo automatico, lo stato, i nameserver, la protezione della privacy e gli ID contatto assegnati.contacts_list— scorri tutti i contatti salvati nel tuo account per trovare e riutilizzarne uno esistente (tramite il suo ID contatto) invece di crearne un duplicato.contacts_get— cerca i dettagli dietro qualsiasi ID contatto che vedi su un dominio o in un risultato dicontacts_list.
Vendi domini sul marketplace
marketplace_listing_create— metti in vendita un dominio con un prezzo Buy Now, un'offerta minima o entrambi. Un nuovo listing èverifyingmentre ne viene verificata la proprietà. Un dominio registrato su Spaceship di solito viene messo in vendita entro circa un minuto; per un dominio registrato altrove, pubblica i record DNS mostrati damarketplace_seller_settings_get, poi avvia un controllo conmarketplace_listing_verify(omarketplace_listings_bulk_verifyper tutti).marketplace_listings_list/marketplace_listing_get— rivedi i tuoi listing; modificane uno conmarketplace_listing_update, oppure molti insieme conmarketplace_listings_bulk_update.marketplace_negotiations_list/marketplace_negotiation_get— segui le offerte fatte dagli acquirenti, poi rispondi conmarketplace_offer_counter,marketplace_offer_accept(sempre confermato prima con te) omarketplace_offer_decline, e parla con l'acquirente conmarketplace_negotiation_message_send.marketplace_sales_listemarketplace_insights_get— vedi cosa è stato venduto e come sta andando il portafoglio.marketplace_listings_export/marketplace_sales_export— scarica i tuoi listing, o ciò che è stato venduto tra due date, come file CSV.
Acquista un dominio sul marketplace
marketplace_listings_search— trova i domini messi in vendita da altri venditori tramite una parola chiave, restringendo per estensione, prezzo, lunghezza e opzione di acquisto.marketplace_offer_make— fai un'offerta; il venditore viene avvisato e si apre una negoziazione. Seguila conmarketplace_negotiation_get.marketplace_safepay_deal_create— oppure apri un affare SafePay per il dominio; l'altra parte conferma i termini e l'acquirente paga tramite il link dell'affare. La chiamata non addebita nulla.marketplace_purchase_link— pagalo: un dominio Buy Now, un accordo che hai raggiunto o un affare SafePay in attesa del tuo pagamento. Per un dominio o un accordo, passa uno dei tuoi contatti salvati (contacts_list) comecontactId; diventa il contatto del dominio. La chiamata restituisce un link che apri e paghi su Spaceship; la chiamata non addebita nulla.
Riferimento strumenti
Ogni strumento restituisce il proprio risultato come JSON strutturato. Le operazioni bulk del marketplace vengono eseguite dopo la chiamata e restituiscono un riferimento all'operazione da interrogare con async_operation_get; ogni altro strumento si completa immediatamente.
Contatti
I contatti sono le persone o organizzazioni associate a una registrazione di dominio (registrante, admin, tecnico, fatturazione). Un contatto è referenziato ovunque tramite il suo ID contatto — una stringa opaca.
contacts_save — Salva contatto
Accesso: Scrittura.
Salva i dettagli del contatto e restituisce l'ID contatto generato. La convalida di alcuni campi (come stateProvince e postalCode) dipende dal paese selezionato.
Se la chiamata fallisce con infrastructure.serviceUnavailable, il contatto potrebbe comunque essere stato salvato: cercalo con contacts_list prima di salvarlo di nuovo (vedi Ripetizione delle scritture).
Parametro:
firstNameObbligatorio: Sì
Tipo e vincoli: Stringa, 1–64 caratteri. Può includere trattini e apostrofi.
Parametro:
lastNameObbligatorio: Sì
Tipo e vincoli: Stringa, 1–64 caratteri. Può includere trattini e apostrofi.
Parametro:
emailObbligatorio: Sì
Tipo e vincoli: Indirizzo email valido, massimo 254 caratteri.
Parametro:
address1Obbligatorio: Sì
Tipo e vincoli: Riga indirizzo 1. Stringa, 1–128 caratteri.
Parametro:
cityObbligatorio: Sì
Tipo e vincoli: Stringa, 1–64 caratteri.
Parametro:
countryObbligatorio: Sì
Tipo e vincoli: Codice paese di due lettere (ISO 3166-1 alpha-2), ad es.
US.Parametro:
phoneObbligatorio: Sì
Tipo e vincoli: Formato internazionale
+CountryCode.Number, ad es.+1.2025551234. Massimo 32 caratteri.Parametro:
organizationObbligatorio: No
Tipo e vincoli: Nome dell'organizzazione/azienda. 1–128 caratteri.
Parametro:
address2Obbligatorio: No
Tipo e vincoli: Riga indirizzo 2. 1–128 caratteri.
Parametro:
stateProvinceObbligatorio: No
Tipo e vincoli: Nome di stato/provincia, 1–64 caratteri. Può essere obbligatorio a seconda del paese.
Parametro:
postalCodeObbligatorio: No
Tipo e vincoli: 1–16 caratteri. Può essere obbligatorio a seconda del paese.
Parametro:
phoneExtObbligatorio: No
Tipo e vincoli: Interno telefonico, 1–16 caratteri.
Parametro:
faxObbligatorio: No
Tipo e vincoli: Numero di fax, stesso formato
+CountryCode.Number, max 32 caratteri.Parametro:
faxExtObbligatorio: No
Tipo e vincoli: Interno fax, 1–16 caratteri.
Parametro:
taxNumberObbligatorio: No
Tipo e vincoli: Codice fiscale, 1–32 caratteri.
Restituisce
{ "contactId": "..." }
contactId (27–32 caratteri alfanumerici) è ciò che passi a domain_purchase_link, domain_set_contacts e contacts_get.
contacts_get — Ottieni contatto
Accesso: Lettura.
Legge i dettagli di un contatto salvato tramite il suo ID contatto. Gli ID contatto provengono da contacts_save, contacts_list o dal campo contacts dei risultati di domains_list.
Parametro:
contactIdObbligatorio: Sì
Tipo e vincoli: ID contatto, 27–32 caratteri alfanumerici.
Restituisce — { contact } con:
Campo:
firstName,lastName,email,address1,city,country,phone,postalCodeTipo: Stringa
Campo:
organization,address2,stateProvince,phoneExt,fax,faxExt,taxNumberTipo: Stringa o
null
contacts_list — Elenca contatti
Accesso: Lettura.
Elenca tutti i contatti salvati nel tuo account, così puoi trovare e riutilizzare un contatto esistente (tramite il suo ID contatto) invece di crearne un duplicato o cercare tra i tuoi domini. L'elenco è paginato e ordinabile, in modo coerente con domains_list.
Parametro:
takeObbligatorio: No
Tipo e vincoli: Elementi per pagina, 1–100. Predefinito
10.Parametro:
skipObbligatorio: No
Tipo e vincoli: Elementi da saltare, 0 o più. Predefinito
0.Parametro:
orderByObbligatorio: No
Tipo e vincoli: Fino a 8 chiavi di ordinamento:
name,email,organization; anteponi-per l'ordine decrescente (ad es.-name).
Restituisce — { items, total } dove total è il numero di contatti univoci nell'account (deduplicati per ID contatto, non per dimensione della pagina), e ogni elemento contiene abbastanza informazioni per distinguere i contatti senza una chiamata di follow-up. Se l'account ha voci duplicate per lo stesso ID contatto, vengono ridotte a una sola, quindi total conta i contatti distinti anziché le righe grezze lato server:
Campo:
contactIdTipo: Stringa (27–32 alfanumerici). Passa a
contacts_get,domain_purchase_linkodomain_set_contacts.Campo:
nameTipo: Stringa — il nome del contatto.
Campo:
emailTipo: Stringa o
nullquando il contatto non ha un'email registrata.Campo:
organizationTipo: Stringa o
nullquando il contatto non ha un'organizzazione registrata.
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
Domini
Gli input del nome di dominio (domain/domainName) accettano Unicode (IDN) o ASCII (A-label) — in entrambi i casi, lo strumento normalizza automaticamente il nome in punycode prima dell'uso. domains_check_availability richiede inoltre un TLD supportato da Spaceship per la registrazione: un dominio il cui TLD non è supportato viene segnalato come non disponibile anziché essere controllato. Gli altri strumenti per i domini (domains_list, domain_set_contacts, domain_set_nameservers) e gli strumenti DNS normalizzano solo il nome e non rifiutano mai in base al supporto del TLD.
domains_list — Elenca domini
Accesso: Lettura.
Recupera un elenco paginato dei tuoi domini. Passa domain per recuperare invece un singolo dominio per nome (in tal caso paginazione e ordinamento vengono ignorati, e il risultato include una note che lo indica se sono stati forniti). Un dominio che non è nel tuo account, sia non registrato sia registrato da qualcun altro, non è un errore: il risultato è { "items": [], "total": 0, "note": "This domain is not in this account." }, lo stesso in entrambi i casi.
Parametro:
domainObbligatorio: No
Tipo e vincoli: Nome di dominio completo per recuperare un singolo dominio. Accetta Unicode (IDN) o ASCII (A-label) — normalizzato automaticamente in punycode.
Parametro:
takeObbligatorio: No
Tipo e vincoli: Elementi per pagina, 1–100. Predefinito
10.Parametro:
skipObbligatorio: No
Tipo e vincoli: Elementi da saltare, 0 o più. Predefinito
0.Parametro:
orderByObbligatorio: No
Tipo e vincoli: Fino a 4 chiavi di ordinamento, ciascuna tra
name,-name,unicodeName,-unicodeName,registrationDate,-registrationDate,expirationDate,-expirationDate; un-iniziale indica l'ordine decrescente. La prima chiave ordina per prima e ogni chiave successiva risolve i pari merito. Ogni campo può comparire una sola volta, in una delle due direzioni. Qualsiasi altro valore, o un campo ripetuto, viene rifiutato conapplication.request.badRequest.
Restituisce — { items, total } dove ogni elemento descrive un dominio:
Campo:
name/unicodeNameSignificato: Nome di dominio in formato ASCII e Unicode.
Campo:
isPremiumSignificato: Indica se il dominio è un nome premium.
Campo:
autoRenewSignificato: Indica se il rinnovo automatico è abilitato.
Campo:
registrationDate/expirationDateSignificato: Timestamp di registrazione e scadenza.
Campo:
lifecycleStatusSignificato:
creating,registered,grace1,grace2oredemption.Campo:
verificationStatusSignificato:
verification,success,failedonullquando non applicabile.Campo:
eppStatusesSignificato: Codici di stato del registro (ad es. blocchi di trasferimento).
Campo:
suspensionsSignificato: Sospensioni attive, ciascuna con un
reasonCode.Campo:
privacyProtectionSignificato:
{ level: "public" | "high", contactForm: boolean }.Campo:
nameserversSignificato:
{ provider: "basic" | "custom", hosts: [...] }.Campo:
contactsSignificato: ID contatto:
registrant, piùadmin/tech/billing(può esserenull) eattributes(un elenco di ID contatto di attributi estesi, oppurenull). Leggibile tramitecontacts_get.
Spaceship MCP Connector popola ogni campo sopra — inclusi contacts, eppStatuses, suspensions, verificationStatus, nameservers, un vero autoRenew e un unicodeName distinto quando il dominio ne ha uno — sia per l'elenco multi-elemento sia per il recupero di un singolo dominio.
domains_check_availability — Controlla disponibilità dominio
Accesso: Lettura.
Controlla se uno o più nomi di dominio sono disponibili per la registrazione. I nomi vengono controllati in gruppi fino a 5, alcuni gruppi alla volta; un gruppo di un solo nome usa l'endpoint per dominio singolo e un gruppo più grande usa l'endpoint bulk. Un dominio il cui TLD non è supportato per la registrazione non viene inviato affatto al controllo di disponibilità — viene restituito immediatamente come tldNotSupported.
Parametro:
domainsObbligatorio: Sì
Tipo e vincoli: 1–20 nomi di dominio completi. Ognuno accetta Unicode (IDN) o ASCII (A-label) — normalizzato automaticamente in punycode.
Restituisce — { results }, una voce per ogni nome richiesto:
Campo:
domainSignificato: Il nome controllato.
Campo:
resultSignificato:
available,taken,invalidDomainName,tldNotSupported,unexpectedErrorocheckTimedOut.Campo:
premiumPricingSignificato: Per i nomi premium: elenco di
{ operation, price, currency }doveoperationèregister,transfer,reneworestore. Vuoto per i nomi normali.Campo:
priceSignificato: Per i nomi available (standard e premium): il prezzo in USD per registrare il dominio per il termine più breve consentito dal TLD —
{ amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }.amountè il totale pagabile per l'intero periodo;pricedYearsindica quanti anni copre. Non viene riportato alcun prezzo pre-sconto o prezzo "precedente".icannFeeè la tariffa ICANN (USD) già inclusa inamount, restituita separatamente così da poter spiegare il dettaglio; compare solo quando il TLD prevede una tariffa.Campo:
pricePerYearSignificato: All'interno di
price:amountdiviso perpricedYears, così è sempre disponibile una cifra annuale per il confronto. QuandopricedYearsè 1, è il vero prezzo di un anno; sopra tale valore è una media annuale del periodo, non un periodo che potresti acquistare.Campo:
minRegisterPeriodInYears/maxRegisterPeriodInYearsSignificato: Per i nomi available: il periodo di registrazione più breve e più lungo effettivamente consentito da quel TLD, come due semplici numeri. Indicano al cliente per quali periodi può acquistare il dominio. Entrambi omessi quando non è stato possibile determinare il periodo consentito.
Campo:
priceUnavailableReasonSignificato: Presente al posto di
pricequando non è stato possibile determinare il prezzo per un nome disponibile. Il controllo stesso ha comunque esito positivo.
Solo i nomi disponibili hanno un prezzo; i risultati taken/invalid non contengono né price né priceUnavailableReason.
taken indica solo che il nome è registrato, non da chi: il dominio potrebbe già essere nel tuo account. Controlla domains_list prima di dire al cliente che appartiene a qualcun altro.
checkTimedOut significa che il controllo per quel nome non è terminato in tempo, quindi non si sa nulla al riguardo — nontaken e non available. Non contiene alcun price. I nomi vengono controllati in gruppi, e solo i nomi di un gruppo andato in timeout tornano in questo modo; gli altri risultati sono validi. Controlla di nuovo più tardi solo i nomi checkTimedOut. La chiamata fallisce con un errore solo quando ogni gruppo è andato in timeout, o quando un gruppo fallisce per qualsiasi altro motivo.
La maggior parte dei TLD consente un anno, ma alcuni no..ai, per esempio, ha un minimo di due anni. Per questi, price.amount è il totale per il periodo minimo — non un prezzo annuale su cui poter agire — e price.pricedYears lo indica:
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear è presente qui — 159.96 diviso per i due anni che copre dà 79.98. Questo è il totale diviso per il periodo, non un prezzo che potresti pagare per un solo anno (non è possibile acquistare una registrazione .ai di un anno). Mostra sempre amount insieme a pricedYears ("$159.96 per 2 anni"), mai amount da solo. Per un TLD ordinario, pricedYears è 1 e pricePerYear è uguale a amount.
domain_purchase_link — Ottieni link di acquisto dominio
Accesso: Scrittura.
Prepara uno o più link di pagamento Spaceship così puoi acquistare domini sulla pagina di pagamento di Spaceship nel tuo browser invece che nella chat. Questa chiamata non registra né addebita nulla — rivedi e paghi sulla pagina, che è il passaggio di conferma. È l'unico modo per acquistare un dominio dall'assistente. Richiede l'accesso domains:billing. Se potresti aver già pagato per un dominio, controlla prima domains_list e chiedi un link solo per domini che non sono realmente registrati, altrimenti rischi di pagare due volte.
Le impostazioni fornite al livello superiore (years, autoRenew, contacts) si applicano a ogni elemento. Un elemento che imposta il proprio years, autoRenew o contacts li sovrascrive solo per quel dominio, e tutto ciò che omette viene ereditato (i contacts di un elemento sostituiscono interamente i contacts di livello superiore). I contacts di livello superiore sono obbligatori: i contatti viaggiano con il link e sono già compilati come contatti del dominio quando lo apri. Ogni dominio può essere elencato una sola volta e non ci sono input per pagamento, valuta o privacy WHOIS — la privacy WHOIS resta quella predefinita della piattaforma nella pagina di pagamento.
Parametro:
itemsObbligatorio: Sì
Tipo e vincoli: Array di 1–20 elementi, ciascuno elencato una sola volta.
Parametro:
items[].domainObbligatorio: Sì
Tipo e vincoli: Nome di dominio completo da acquistare, ad es.
example.com. Accetta Unicode (IDN) o ASCII (A-label) — normalizzato automaticamente in punycode.Parametro:
items[].yearsObbligatorio: No
Tipo e vincoli: Intero
1–10; sovrascrive il valore di livello superioreyearsper questo dominio.Parametro:
items[].autoRenewObbligatorio: No
Tipo e vincoli: Booleano; sovrascrive il valore di livello superiore
autoRenewper questo dominio.Parametro:
items[].contactsObbligatorio: No
Tipo e vincoli: Contatti solo per questo dominio, come stringhe
contactId(registrant,admin,tech,billing, facoltativoattributes); sostituiscono interamente icontactsdi livello superiore.Parametro:
yearsObbligatorio: No
Tipo e vincoli: Intero
1–10, applicato a ogni elemento che non ne imposta uno proprio. Deve rientrare nel periodo consentito dal TLD (minRegisterPeriodInYears/maxRegisterPeriodInYearsdadomains_check_availability); i valori fuori intervallo vengono rifiutati con un errore che indica l'intervallo consentito, non corretti. Quando né questo né l'elemento lo impostano, viene usato il periodo più breve del TLD.Parametro:
autoRenewObbligatorio: No
Tipo e vincoli: Booleano, applicato a ogni elemento che non ne imposta uno proprio. Il valore predefinito è
true.Parametro:
contactsObbligatorio: Sì
Tipo e vincoli: Contatti come stringhe
contactId, applicati a ogni elemento che non ne imposta uno proprio:registrant(obbligatorio),admin,techebilling(ognuno usa come predefinitoregistrant), e facoltativamenteattributes(un elenco di fino a 5 ID contatto con attributi estesi, richiesto solo per alcuni TLD). Prendi gli ID dacontacts_list, oppure salva prima i dettagli concontacts_save.
Link per chiamata. Un singolo link contiene al massimo 10 domini, quindi un elenco più lungo restituisce diversi link nell'ordine della richiesta — per esempio 15 domini producono due link da 10 e 5. links[].domains indica quali domini copre ciascun link.
Prezzo. Il campo price di ciascun dominio è una stima; la pagina di pagamento mostra il prezzo finale. Quando non è disponibile alcuna stima, il dominio ha invece il campo priceUnavailableReason. L'assenza di una stima non impedisce mai l'emissione di un link.
Pagamento. Il metodo di pagamento viene scelto nella pagina. I fondi dell'account sono preselezionati quando l'account ne dispone.
I link sono riutilizzabili. Un link non scade e può essere aperto più di una volta, quindi non condividerlo con nessun altro.
Restituisce
{"status": "links_ready","links": [{"url": "https://example.spaceship.com/pay/abc123","domains": [{"domain": "example.com","years": 1,"autoRenew": true,"price": { "amount": 9.08, "currency": "USD", "pricedYears": 1, "pricePerYear": 9.08, "icannFee": 0.2, "isPremium": false }},{"domain": "example.ai","years": 2,"autoRenew": false,"priceUnavailableReason": "Price is currently unavailable for this domain."}]}],"failed": [],"note": "Nothing has been charged. ..."}
status:
links_readySignificato: Ogni dominio è coperto da un link.
status:
partialSignificato: Alcuni domini sono coperti; gli altri sono elencati in
failed, ciascuno con unreason(per esempio non disponibile, estensione non supportata, periodo non consentito, problema di contatti o link che non è stato possibile creare).status:
no_linksSignificato: Non è stato emesso alcun link e non è stato addebitato nulla;
failedindica il motivo per ciascun dominio. Quando ogni dominio non è disponibile (già registrato o occupato) o ha un'estensione che non può essere registrata qui, questo è un risultato normale e non viene segnalato come errore: comunica al cliente che non c'è nulla da acquistare. Quando un link non può essere preparato o creato per qualsiasi altro motivo, o per una combinazione di motivi, il risultato viene segnalato come errore (isError), con lo stesso corpo.
Dopo che il cliente dice di aver pagato, chiama domains_list per il dominio per confermare che sia registrato — non considerare il solo link come prova di acquisto.
domain_set_contacts — Imposta i contatti del dominio
Accesso: Scrittura sensibile — cambiare il proprietario può bloccare i trasferimenti per 60 giorni.
Modifica i contatti assegnati a un dominio di tua proprietà. Si completa immediatamente (nessuna operazione da monitorare).
Parametro:
domainNameObbligatorio: Sì
Tipo e vincoli: Nome di dominio completo. Accetta Unicode (IDN) o ASCII (A-label) — normalizzato automaticamente in punycode.
Parametro:
registrantObbligatorio: Sì
Tipo e vincoli:
contactIdstringa (27–32 caratteri alfanumerici), dacontacts_save.Parametro:
adminObbligatorio: No
Tipo e vincoli:
contactIdstringa (27–32 caratteri alfanumerici) oppurenull.Parametro:
techObbligatorio: No
Tipo e vincoli:
contactIdstringa (27–32 caratteri alfanumerici) oppurenull.Parametro:
billingObbligatorio: No
Tipo e vincoli:
contactIdstringa (27–32 caratteri alfanumerici) oppurenull.Parametro:
attributesObbligatorio: No
Tipo e vincoli: Array di ID contatto con attributi estesi (fino a 5); richiesto solo per alcuni TLD, altrimenti ometti oppure usa
null.
Restituisce
{ "verificationStatus": "verification" }
Il valore restituito verificationStatus riflette la verifica email ICANN RAA: verification — il registrante deve confermare il proprio indirizzo email (viene inviata un'email di conferma); success — già confermato; null — la verifica RAA non si applica a questo dominio.
domain_set_nameservers — Imposta i nameserver del dominio
Accesso: Scrittura sensibile — sposta tutto il traffico del dominio.
Modifica i nameserver di un dominio a livello di registrar. Si completa immediatamente (nessuna operazione da monitorare). La modifica viene poi riflessa da domains_list.
Parametro:
domainNameObbligatorio: Sì
Tipo e vincoli: Nome di dominio completo. Accetta Unicode (IDN) o ASCII (A-label) — normalizzato automaticamente in punycode.
Parametro:
providerObbligatorio: Sì
Tipo e vincoli:
basic(i nameserver predefiniti di Spaceship) oppurecustom(i tuoi host).Parametro:
hostsObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio quando
providerècustom: 2–12 nomi host di nameserver (ognuno un FQDN valido, 4–255 caratteri). Deve essere omesso quandoproviderèbasic.
Restituisce
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
Chiedere i nameserver che un dominio usa già non è un errore. Lo strumento legge prima i nameserver correnti del dominio. Quando corrispondono già alla richiesta (lo stesso provider e, per i nameserver personalizzati, gli stessi host in qualsiasi ordine e maiuscole/minuscole), non viene scritto nulla e la risposta è lo stato corrente con una nota:
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"], "note": "Already set; nothing changed." }
Se i nameserver correnti non possono essere letti in tempo, la modifica viene inviata come richiesto e una nuova applicazione può comunque essere rifiutata con business.conflict ("These nameservers are already set for this domain."), il che significa anche che nulla è cambiato.
Record DNS
Il valore domainName accettato da questi strumenti supporta Unicode (IDN) o ASCII (A-label) ed è normalizzato automaticamente in punycode; il supporto del TLD non viene applicato qui.
dns_records_get — Ottieni record DNS
Accesso: Lettura.
Recupera un elenco paginato di record di risorsa DNS per un dominio.
Parametro:
domainNameObbligatorio: Sì
Tipo e vincoli: Il dominio di cui recuperare i record.
Parametro:
takeObbligatorio: No
Tipo e vincoli: Elementi per pagina, 1–500. Predefinito
100.Parametro:
skipObbligatorio: No
Tipo e vincoli: Elementi da saltare, 0 o più. Predefinito
0.Parametro:
orderByObbligatorio: No
Tipo e vincoli: Fino a 8 chiavi di ordinamento:
type,-type,name,-name.
Restituisce — { items, total }. Ogni elemento è un record come descritto in Forme dei record, più un campo facoltativo group che indica da dove proviene il record (custom — creato da te, product — gestito da un prodotto Spaceship, personalNs — nameserver personali).
dns_records_save — Salva record DNS
Accesso: Scrittura.
Aggiunge record DNS personalizzati o aggiorna il TTL di quelli esistenti. I record vengono confrontati senza distinzione tra maiuscole e minuscole, tranne i record TXT (sensibili a maiuscole/minuscole).
Se la chiamata fallisce con infrastructure.serviceUnavailable, i record potrebbero comunque essere stati salvati: leggili con dns_records_get prima di salvare di nuovo (vedi Ripetizione delle scritture).
Parametro:
domainNameObbligatorio: Sì
Tipo e vincoli: Il dominio di cui aggiornare i record.
Parametro:
recordsObbligatorio: Sì
Tipo e vincoli: 1–500 record — vedi Forme dei record. Ognuno può includere un
ttlfacoltativo.Parametro:
forceObbligatorio: No
Tipo e vincoli: Booleano. Salta il controllo di risoluzione dei conflitti e forza l'aggiornamento della zona.
Restituisce — { "saved": <number> }, il numero di record inviati. Una risposta riuscita significa che tutti i record sono stati accettati; se un record fallisce, l'intera chiamata restituisce invece un errore. Un record rifiutato dal servizio DNS fa fallire la chiamata con business.invalidArgument e il dettaglio "The service rejected the request.", con una voce validationErrors per ogni campo del record rifiutato, ad esempio { "field": "records.address", "rule": "pattern", "message": "The format of this field is not valid." }. Il campo field indica il campo del record sotto records ma non quale record nell'elenco, quindi controlla il valore di quel campo in ogni record rispetto a Forme dei record prima di salvare di nuovo.
dns_records_delete — Elimina record DNS
Accesso: Scrittura sensibile — le eliminazioni non possono essere annullate.
Elimina record DNS personalizzati. Le eliminazioni non possono essere annullate. Un record inviato viene eliminato solo quando corrisponde a un record memorizzato in ogni campo; le regole sono elencate sotto la tabella.
Parametro:
domainNameObbligatorio: Sì
Tipo e vincoli: Il dominio di cui eliminare i record.
Parametro:
recordsObbligatorio: Sì
Tipo e vincoli: 1–500 record da eliminare — stesse forme del salvataggio, ma senza
ttl. Un record che non è nella zona viene segnalato innotFound, non come errore.
Restituisce — { "deleted": <number>, "notFound": [...] }. deleted è il numero di record che esistevano e sono stati rimossi. notFound è presente solo quando alcuni record inviati non erano nella zona; li elenca come inviati, in ordine, una sola volta ciascuno. Quei record non sono stati eliminati e non si tratta di un errore — non c'è nulla da ritentare:
{"deleted": 1,"notFound": [{ "type": "TXT", "name": "_old", "value": "v=old" }]}
Ogni record inviato che esiste viene eliminato, anche quando altri mancano. Lo strumento legge prima la zona, fino a 10.000 record e entro un limite di tempo. Quando la zona è più grande di così, o non può essere letta entro il limite di tempo, un record non trovato non può essere confermato come assente: viene comunque inviato per l'eliminazione e la risposta è { "deleted": <number>, "unconfirmed": [...], "note": "..." } invece di notFound. deleted conta quindi solo i record confermati nella zona. Chiama dns_records_get per controllare i record in unconfirmed prima di eliminare di nuovo.
Come vengono confrontati i record — un record inviato corrisponde a uno memorizzato quando il suo tipo e ogni campo sono uguali dopo la normalizzazione: i nomi e i valori host (name, cname, aliasName, nameserver, pointer, exchange, target SRV e HTTPS/SVCB) vengono confrontati senza distinzione tra maiuscole e minuscole e ignorano un punto finale; il value CAA non distingue tra maiuscole e minuscole e ignora le virgolette esterne; il value TXT viene confrontato esattamente, carattere per carattere. Il campo MX preference fa parte del confronto, quindi eliminare mail.example.com con preferenza 10 non rimuove mai lo stesso exchange memorizzato con un'altra preferenza. Non esiste corrispondenza per prefisso o wildcard e un campo presente solo da un lato non corrisponde.
Forme dei record
Ogni record ha:
type— uno dei 13 tipi supportati qui sotto.name— il nome del record escludendo il dominio: usa@per il dominio stesso (apice) e*per una wildcard.ttl(solo salvataggio, facoltativo) — tempo di cache in secondi, 60–3600.
Campi specifici per tipo:
Tipo:
ACampi:
address— indirizzo IPv4.Tipo:
AAAACampi:
address— indirizzo IPv6.Tipo:
CNAMECampi:
cname— nome di dominio canonico (max 253 caratteri).Tipo:
ALIASCampi:
aliasName— nome di dominio canonico; comportamento simile a CNAME per l'apice, dove CNAME non è consentito.Tipo:
NSCampi:
nameserver— nome del nameserver.Tipo:
PTRCampi:
pointer— nome di dominio per l'indirizzo IP specificato.Tipo:
TXTCampi:
value— valore di testo (confrontato con distinzione tra maiuscole e minuscole).Tipo:
MXCampi:
exchange— server di posta;preference— priorità (0–65535, i valori più bassi sono preferiti).Tipo:
CAACampi:
flag—0o128(bit critico);tag—issue,issuewild, oiodef;value— identificatore CA con parametri facoltativi.Tipo:
SRVCampi:
service(ad es._sip);protocol(ad es._tcp);priorityeweight(0–65535);port(1–65535);target— nome di dominio del server.Tipo:
TLSACampi:
usage,selector,matching(ognuno 0–255);port—*o_<1–65535>;protocol(ad es._tcp);associationData— hash o dati del certificato.Tipo:
HTTPSCampi:
svcPriority(0–65535;0= AliasMode);targetName— FQDN o.; facoltativoport(*o_<1–65535>),scheme(deve essere_httpsquandoportè impostato),svcParams.Tipo:
SVCBCampi:
svcPriority(0–65535;0= AliasMode);targetName— FQDN o.; facoltativiport,scheme(ad es._tcp),svcParams.
Marketplace: inserzioni
Le tue inserzioni nel marketplace di Spaceship: i domini che hai messo in vendita, i loro prezzi, le impostazioni della pagina e la verifica della proprietà.
marketplace_listings_list — Elenca le mie inserzioni nel Marketplace
Accesso: Lettura.
Elenca le inserzioni correnti del tuo account nel marketplace di Spaceship — le inserzioni che vedi nella scheda SellerHub Domains — una pagina alla volta, in un ordine stabile. I record venduti, in leasing e non riusciti sono esclusi a meno che status non li richieda. Ogni elemento include il dominio, il suo stato, i prezzi Compra ora e offerta minima, le impostazioni della Pagina in vendita, Contatta il proprietario e Offerta di qualità, e i termini Lease-to-Own. Per la scheda completa di una singola inserzione, incluso lo stato della Pagina in vendita e i link Aggiungi al carrello, usa marketplace_listing_get.
Tutti i filtri sono facoltativi e si combinano con AND. Un filtro che non corrisponde a nulla non è un errore: la risposta è un elenco items vuoto con total0. La lunghezza del nome e "Lease-to-Own abilitato" non possono essere filtrati.
Parametro:
statusObbligatorio: No
Tipo e vincoli: 1–9 stati distinti:
verifying,on_sale,sale_stopped,private_sale,sale_processing,waiting_for_transfer,on_lease,sold,failed(vedi la tabella sotto). Vengono restituite solo le inserzioni in uno di questi stati. Ometti per le inserzioni correnti, come le mostra la scheda SellerHub Domains:verifying,on_sale,sale_stopped,private_sale,sale_processingewaiting_for_transferdopo una vendita; i recordon_lease,soldefailedvengono restituiti solo se richiesti qui.Parametro:
tldObbligatorio: No
Tipo e vincoli: 1–20 estensioni distinte senza il punto iniziale, ad es.
["com", "io"]. Lettere ASCII minuscole, cifre e trattini; sono consentite estensioni multi-etichetta comeco.uk.Parametro:
buyNowEnabledObbligatorio: No
Tipo e vincoli: Booleano.
true: solo inserzioni con Compra ora attivo;false: solo inserzioni con Compra ora disattivato.Parametro:
buyNowPrice.minObbligatorio: Condizionale
Tipo e vincoli: Numero, 0–10.000.000 dollari USA, inclusi. Quando
buyNowPriceè impostato, fornisci il limite inferiore, il limite superiore o entrambi. Il limite inferiore non deve essere maggiore del limite superiore.Parametro:
buyNowPrice.maxObbligatorio: Condizionale
Tipo e vincoli: Numero, 0–10.000.000 dollari USA, inclusi.
Parametro:
minOfferEnabledObbligatorio: No
Tipo e vincoli: Booleano.
true: solo inserzioni che accettano offerte;false: solo inserzioni che non le accettano.Parametro:
minOfferPrice.minObbligatorio: Condizionale
Tipo e vincoli: Numero, 0–10.000.000 dollari USA, inclusi. Quando
minOfferPriceè impostato, fornisci il limite inferiore, il limite superiore o entrambi. Il limite inferiore non deve essere maggiore del limite superiore.Parametro:
minOfferPrice.maxObbligatorio: Condizionale
Tipo e vincoli: Numero, 0–10.000.000 dollari USA, inclusi.
Parametro:
limitObbligatorio: No
Tipo e vincoli: Inserzioni per pagina, 1–100. Predefinito
25.Parametro:
offsetObbligatorio: No
Tipo e vincoli: Inserzioni da saltare prima della pagina, 0 o più. Predefinito
0.
Restituisce — { items, total, offset, limit }. total è il numero di inserzioni che corrispondono ai filtri in tutte le pagine. Ogni elemento ha gli stessi campi dell'inserzione in marketplace_listing_get, senza forSalePageStatus, cartLinks, unavailable e note:
{"items": [{"listingId": "8f3c2a1e-4b5d-4e6f-9a7b-1c2d3e4f5a6b","domain": "brightharbor.com","displayName": "BrightHarbor.com","status": "on_sale","buyNow": { "enabled": true, "price": { "amount": "25000.00", "currency": "USD" } },"minOffer": { "enabled": true, "price": { "amount": "5000.00", "currency": "USD" } },"description": "Short, brandable .com for a marine or travel business","forSalePage": true,"contactOwner": true,"showOnPortfolio": true,"portfolioEligible": true,"qualityOffer": "follow_account","leaseToOwn": null,"external": false,"ownershipVerified": true,"addedAt": "2026-04-01T10:00:00.000Z"}],"total": 1,"offset": 0,"limit": 25}
status:
verifyingSignificato: La proprietà del dominio è in fase di verifica; gli acquirenti non lo vedono. Un dominio registrato su Spaceship di solito esce da questo stato entro circa un minuto; un dominio registrato altrove resta qui finché i suoi record di verifica DNS non vengono pubblicati e il controllo non va a buon fine.
status:
on_saleSignificato: In vendita per gli acquirenti.
status:
sale_stoppedSignificato: Inserito, ma la vendita è interrotta.
status:
private_saleSignificato: In vendita tramite una vendita privata.
status:
sale_processingSignificato: L'ordine di un acquirente è in fase di elaborazione.
status:
waiting_for_transferSignificato: Venduto o dato in leasing, in attesa del trasferimento all'acquirente.
status:
on_leaseSignificato: Dato in leasing a un acquirente.
status:
soldSignificato: La vendita è completata.
status:
failedSignificato: La vendita non è riuscita.
marketplace_listing_get — Ottieni una singola inserzione del Marketplace
Accesso: Lettura.
Legge una delle inserzioni del marketplace del tuo account per dominio, con il suo contesto completo: stato, prezzi Compra ora e offerta minima, descrizione, la Pagina in vendita (attiva o disattiva, e il suo stato corrente), Contatta il proprietario, mostra nel portfolio, l'Offerta di qualità del dominio, i termini Lease-to-Own e i link Aggiungi al carrello (Compra ora e Lease-to-Own) che puoi inserire sul tuo sito; ogni link viene fornito solo quando gli acquirenti possono usarlo.
I link Aggiungi al carrello vengono letti separatamente entro un breve limite di tempo. Quando non possono essere letti in tempo, cartLinks è null, unavailable indica cart_links, e il resto dell'inserzione viene comunque restituito; rileggi più tardi per i link. Un'inserzione la cui proprietà non è ancora verificata ha stato verifying e una note: un dominio registrato su Spaceship di solito va in vendita entro circa un minuto, e un dominio registrato altrove richiede i record di verifica in marketplace_seller_settings_get. Un dominio che il tuo account non ha inserito risponde con business.notFound.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Il dominio inserito, ad es.
example.com, 3–253 caratteri. Unicode (IDN) o ASCII; normalizzato automaticamente in punycode.
Restituisce
{"listingId": "8f3c2a1e-4b5d-4e6f-9a7b-1c2d3e4f5a6b","domain": "brightharbor.com","displayName": "BrightHarbor.com","status": "on_sale","buyNow": { "enabled": true, "price": { "amount": "25000.00", "currency": "USD" } },"minOffer": { "enabled": true, "price": { "amount": "5000.00", "currency": "USD" } },"description": "Short, brandable .com for a marine or travel business","forSalePage": true,"contactOwner": true,"showOnPortfolio": true,"portfolioEligible": true,"qualityOffer": "follow_account","leaseToOwn": {"total": { "amount": "25000.00", "currency": "USD" },"downPayment": { "amount": "5000.00", "currency": "USD" },"finalPayment": null,"installment": { "amount": "1666.66", "currency": "USD" },"installments": 12},"external": false,"ownershipVerified": true,"addedAt": "2026-04-01T10:00:00.000Z","forSalePageStatus": "live","cartLinks": {"buyNow": "https://www.spaceship.com/domains/cart/?buyNow=brightharbor.com","leaseToOwn": "https://www.spaceship.com/domains/cart/?leaseToOwn=brightharbor.com"},"unavailable": []}
Campo:
listingIdSignificato: L'ID dell'inserzione (UUID), il valore che
marketplace_listings_bulk_updateaccetta inlistingIds.Campo:
domain/displayNameSignificato: Il dominio in formato ASCII (punycode) e come viene mostrato agli acquirenti.
Campo:
statusSignificato: Lo stato dell'inserzione; vedi la tabella sotto
marketplace_listings_list.Campo:
buyNow/minOfferSignificato:
{ enabled, price };priceè{ amount, currency }in dollari USA, oppurenullquando non è impostato.Campo:
descriptionSignificato: Il testo mostrato agli acquirenti nella Pagina in vendita, oppure
null.Campo:
forSalePage/contactOwner/showOnPortfolioSignificato: Se la Pagina in vendita, il suo modulo Contatta il proprietario e il dominio nella tua pagina portfolio sono attivi.
Campo:
portfolioEligibleSignificato: Se l'inserzione può apparire nella tua pagina portfolio: è
on_salee non ha alcuna vendita concordata con un acquirente. La pagina non mostra nulla finché il portfolio non è visibile; altrimenti, condisplayModeallmostra ogni inserzione idonea, e conselectedsolo le inserzioni idonee conshowOnPortfolioattivo. LeggivisibilityedisplayModeconmarketplace_seller_settings_get.Campo:
qualityOfferSignificato:
follow_account(usa l'impostazione del tuo account),disabled,optional,mandatoryomandatory_for_countries.Campo:
leaseToOwnSignificato: I termini Lease-to-Own (
total,downPayment,finalPayment,installment,installments), oppurenullquando Lease-to-Own è disattivato.downPaymentefinalPaymentsononullquando non presenti.Campo:
external/ownershipVerifiedSignificato: Se il marketplace tratta il dominio come registrato fuori da Spaceship e se la sua proprietà è verificata.
externalè provvisorio mentre lo stato èverifying: ogni nuova inserzione inizia cometrue, e il controllo della proprietà lo imposta sufalseper un dominio registrato su Spaceship.Campo:
addedAtSignificato: Quando il dominio è stato inserito, oppure
null.Campo:
forSalePageStatusSignificato: Lo stato corrente della Pagina in vendita:
not_available,off,turning_off,needs_resolution,dns_records_missing,needs_dns_setup,connection_issue,connection_failed,connecting,live_ssl_pendingolive;nullquando sconosciuto.Campo:
cartLinksSignificato:
{ buyNow, leaseToOwn }link Aggiungi al carrello per questo dominio, oppurenullquando non è stato possibile leggerli. Un link ènullquando gli acquirenti non possono usarlo: l'inserzione non èon_sale, Compra ora è disattivato (buyNow), non ha termini Lease-to-Own (leaseToOwn), oppure il dominio è promesso a un acquirente tramite una vendita concordata o un accordo SafePay confermato (entrambi). I link tornano disponibili una volta che tale accordo termina senza una vendita.Campo:
unavailableSignificato: Parti che non è stato possibile leggere in tempo: vuoto, oppure
["cart_links"].Campo:
noteSignificato: Presente solo mentre lo stato è
verifying: indica che la proprietà è in fase di verifica e cosa pubblicare quando il dominio è registrato fuori da Spaceship.
marketplace_listing_create — Inserisci un dominio in vendita
Accesso: Scrittura sensibile — mette il dominio in vendita a prezzi acquistabili da chiunque.
Mette un dominio in vendita nel marketplace di Spaceship per il tuo account. Fornisci un prezzo Compra ora, un prezzo di offerta minima o entrambi; la descrizione, le impostazioni della pagina (forSalePage, contactOwner, showOnPortfolio) e qualityOffer sono facoltativi e accettano gli stessi valori di marketplace_listing_update. I termini Lease-to-Own non vengono impostati qui: impostali con marketplace_listing_update una volta che l'inserzione esiste. Un campo leaseToOwn inviato comunque viene ignorato. Una nuova inserzione inizia con stato verifying mentre la sua proprietà viene verificata ed è mostrata agli acquirenti solo una volta che il controllo va a buon fine: un dominio registrato su Spaceship di solito va in vendita entro circa un minuto, e per un dominio registrato altrove la note rimanda ai record di verifica in marketplace_seller_settings_get. Mentre lo stato è verifying, external è provvisorio e può risultare true per un dominio Spaceship. Questo è un risultato normale, non un errore.
Il dominio viene prima inserito con i suoi prezzi e la sua descrizione; le impostazioni della pagina e l'Offerta di qualità vengono poi salvate in quest'ordine. Se l'inserimento del dominio stesso fallisce, la chiamata restituisce un errore e non viene inserito nulla. Se un gruppo successivo fallisce, il dominio resta inserito e la risposta indica quel gruppo in notSaved (non è stato modificato) o unconfirmed (non si sa se sia stato modificato); leggi l'inserzione con marketplace_listing_get e imposta quei gruppi con marketplace_listing_update invece di creare di nuovo. Un dominio che il tuo account ha già inserito non viene inserito di nuovo e nulla viene modificato: la risposta è l'inserzione corrente con created: false, quindi una chiamata ripetuta non inserisce mai un dominio due volte.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Il dominio da inserire, ad es.
example.com, 3–253 caratteri. Unicode (IDN) o ASCII; normalizzato automaticamente in punycode.Parametro:
buyNowPriceObbligatorio: Condizionale
Tipo e vincoli: Prezzo Compra ora in dollari USA come stringa, ad es.
"2500"o"2500.00": maggiore di 0, massimo 10.000.000, fino a 2 cifre decimali. Fornisci questo,minOfferPrice, o entrambi.Parametro:
minOfferPriceObbligatorio: Condizionale
Tipo e vincoli: L'offerta minima che l'inserzione accetta, in dollari USA; stesso formato di
buyNowPrice. Fornisci questo,buyNowPrice, o entrambi.Parametro:
descriptionObbligatorio: No
Tipo e vincoli: Testo mostrato agli acquirenti nella Pagina in vendita, fino a 400 caratteri, senza indirizzi email.
nulllo lascia vuoto.Parametro:
forSalePageObbligatorio: No
Tipo e vincoli: Booleano. Attiva o disattiva la Pagina in vendita del dominio.
Parametro:
contactOwnerObbligatorio: No
Tipo e vincoli: Booleano. Attiva o disattiva il modulo Contatta il proprietario nella Pagina in vendita.
Parametro:
showOnPortfolioObbligatorio: No
Tipo e vincoli: Booleano. Mostra o nasconde il dominio nella tua pagina portfolio.
Parametro:
qualityOfferObbligatorio: No
Tipo e vincoli:
follow_account(usa l'impostazione del tuo account),disabled,optionalomandatory.Parametro:
qualityOfferDepositObbligatorio: Condizionale
Tipo e vincoli: Intero, dollari USA senza centesimi, 10–50. Obbligatorio con
qualityOfferoptionalomandatory, e non consentito altrimenti; senza di esso la chiamata fallisce conapplication.request.badRequeste non viene inviato nulla.
Restituisce — una nuova inserzione:
{"created": true,"listing": {"domain": "northpeak.io","displayName": "northpeak.io","status": "verifying","buyNow": { "enabled": true, "price": { "amount": "25000.00", "currency": "USD" } },"minOffer": { "enabled": true, "price": { "amount": "5000.00", "currency": "USD" } },"description": null,"forSalePage": false,"contactOwner": false,"showOnPortfolio": false,"qualityOffer": "follow_account","leaseToOwn": null,"external": true,"ownershipVerified": false,"addedAt": "2026-10-26T09:15:00.000Z"},"saved": ["prices"],"notSaved": [],"unconfirmed": [],"note": "The ownership of this domain is being checked, and the listing is not shown to buyers until the check passes. While it is verifying, external is provisional: every new listing starts as external, also for a domain registered at Spaceship, so it does not tell where the domain is registered. A domain registered at Spaceship usually goes on sale within a minute or so; read the listing again with marketplace_listing_get. If the domain is registered elsewhere, add the DNS records listed under verification records by marketplace_seller_settings_get at the domain's DNS provider; the status changes from verifying once the check passes."}
Campo:
createdSignificato:
truequando questa chiamata ha inserito il dominio;falsequando era già inserito (in tal caso seguono sololistingenote).Campo:
listingSignificato: L'inserzione come letta dopo la chiamata, con i campi di
marketplace_listing_getfino aaddedAt. Ometta quando non è stato possibile rileggerla.Campo:
savedSignificato: Gruppi che sono stati salvati:
prices(con la descrizione, che viene salvata insieme ai prezzi),page_settings,quality_offer.Campo:
notSavedSignificato: Gruppi che non sono stati modificati.
Campo:
unconfirmedSignificato: Gruppi il cui esito è sconosciuto.
Campo:
noteSignificato: Presente quando il dominio è in attesa della verifica della proprietà, quando alcuni gruppi sono in
notSavedounconfirmed, oppure quando il dominio era già stato messo in vendita.
marketplace_listing_update — Aggiorna un annuncio del Marketplace
Accesso: Scrittura sensibile — un nuovo prezzo si applica immediatamente agli acquirenti.
Modifica uno degli annunci del marketplace del tuo account; cambiano solo i campi che fornisci e deve esserne fornito almeno uno. I campi rientrano in gruppi, salvati in questo ordine: prezzi (buyNowPrice, minOfferPrice; null disattiva uno dei due, e almeno uno deve restare attivo: una modifica che li lascerebbe entrambi disattivati viene rifiutata prima che qualsiasi cosa venga salvata), poi la descrizione, le impostazioni della pagina (forSalePage, contactOwner, showOnPortfolio) e qualityOffer insieme, poi leaseToOwn (nuove condizioni, oppure { "enabled": false }). I prezzi sono in dollari USA.
La risposta elenca i gruppi in saved, notSaved (non modificati: rifiutati, oppure non raggiunti perché un gruppo precedente è stato rifiutato o perché la chiamata ha esaurito il tempo) e unconfirmed (non si sa se siano stati modificati), insieme all'annuncio così come risulta dopo la modifica. Un gruppo rifiutato che non è il primo viene segnalato in questo modo, non come errore. Se il primo gruppo fallisce, la chiamata restituisce un errore e nulla viene modificato. Quando ci sono gruppi in notSaved o unconfirmed, leggi l'annuncio con marketplace_listing_get prima di inviarli di nuovo, e non ripetere i gruppi che sono stati salvati. Un dominio che il tuo account non ha messo in vendita restituisce business.notFound.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Il dominio messo in vendita, ad es.
example.com, 3–253 caratteri. Unicode (IDN) o ASCII; normalizzato automaticamente in punycode.Parametro:
buyNowPriceObbligatorio: No
Tipo e vincoli: Nuovo prezzo Compra subito in dollari USA come stringa, ad es.
"2500"o"2500.00": maggiore di 0, massimo 10,000,000, fino a 2 cifre decimali.nulldisattiva Compra subito.Parametro:
minOfferPriceObbligatorio: No
Tipo e vincoli: Nuova offerta minima accettata dall'annuncio, in dollari USA; stesso formato.
nullinterrompe l'accettazione delle offerte.Parametro:
descriptionObbligatorio: No
Tipo e vincoli: Testo mostrato agli acquirenti nella pagina In vendita, fino a 400 caratteri, senza indirizzi email.
nulllo cancella.Parametro:
forSalePageObbligatorio: No
Tipo e vincoli: Booleano. Attiva o disattiva la pagina In vendita del dominio.
Parametro:
contactOwnerObbligatorio: No
Tipo e vincoli: Booleano. Attiva o disattiva il modulo Contatta il proprietario nella pagina In vendita.
Parametro:
showOnPortfolioObbligatorio: No
Tipo e vincoli: Booleano. Mostra o nasconde il dominio nella tua pagina portfolio.
Parametro:
qualityOfferObbligatorio: No
Tipo e vincoli:
follow_account(usa l'impostazione del tuo account),disabled,optionalomandatory.Parametro:
qualityOfferDepositObbligatorio: Condizionale
Tipo e vincoli: Intero, dollari USA interi, 10–50. Obbligatorio con
qualityOfferoptionalomandatory, e non consentito altrimenti; senza di esso la chiamata fallisce conapplication.request.badRequeste nulla viene inviato.Parametro:
leaseToOwn.enabledObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio quando viene fornito
leaseToOwn.falsedisattiva Lease-to-Own;trueimposta le condizioni seguenti.Parametro:
leaseToOwn.totalObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio quando
leaseToOwn.enabledètrue. Totale che l'acquirente paga durante il leasing, in dollari USA.Parametro:
leaseToOwn.downPaymentObbligatorio: No
Tipo e vincoli: Pagamento dovuto all'inizio, in dollari USA. Ometti se assente.
Parametro:
leaseToOwn.finalPaymentObbligatorio: No
Tipo e vincoli: Pagamento dovuto con l'ultima rata, in dollari USA. Ometti se assente.
Parametro:
leaseToOwn.installmentsObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio quando
leaseToOwn.enabledètrue. Numero di rate mensili, 1–120; almeno 2 senza anticipo. L'importo della rata è il resto del totale, dopo l'anticipo e il pagamento finale, diviso equamente e arrotondato per difetto al centesimo; quel resto deve essere positivo e il residuo di arrotondamento inferiore a 1 USD.
Restituisce — la stessa struttura di marketplace_listing_create senza created:
{"listing": {"domain": "brightharbor.com","displayName": "BrightHarbor.com","status": "on_sale","buyNow": { "enabled": true, "price": { "amount": "30000.00", "currency": "USD" } },"minOffer": { "enabled": true, "price": { "amount": "6000.00", "currency": "USD" } },"description": "Short, brandable .com for a marine or travel business","forSalePage": true,"contactOwner": true,"showOnPortfolio": true,"qualityOffer": "follow_account","leaseToOwn": null,"external": false,"ownershipVerified": true,"addedAt": "2026-04-01T10:00:00.000Z"},"saved": ["prices"],"notSaved": ["page_settings", "lease_to_own"],"unconfirmed": [],"note": "Only the groups listed in saved were changed. The groups in notSaved were not changed; read the listing with marketplace_listing_get before sending them again."}
I nomi dei gruppi in saved, notSaved e unconfirmed sono prices, description, page_settings, quality_offer e lease_to_own. listing viene omesso quando non è stato possibile rileggerlo; note è presente solo quando un gruppo è in notSaved o unconfirmed, oppure il dominio è in attesa della verifica della proprietà.
marketplace_listing_delete — Rimuovi un annuncio del Marketplace
Accesso: Scrittura sensibile — non può essere annullata.
Rimuove dalla vendita nel marketplace Spaceship uno dei domini del tuo account. Le sue negoziazioni attive vengono sospese e le trattative SafePay che hai aperto per esso vengono disattivate. Questa operazione non può essere annullata; rimettere in vendita il dominio avvia un nuovo annuncio.
Conferma in due passaggi. La prima chiamata non modifica nulla e restituisce status: "confirmation_required" con ciò che accadrà (il dominio, il numero di negoziazioni attive e l'effetto) e un confirmationToken; il testo della risposta indica la stessa cosa, quindi mostralo all'utente. Una volta che accetta, richiama con lo stesso dominio, il token e confirmationResponse: "accept" per rimuovere l'annuncio, oppure "decline" per annullare, che restituisce status: "cancelled" e non modifica nulla. Il token scade dopo poco tempo ed è legato al dominio, al tuo account e al numero di negoziazioni attive mostrato: un token scaduto, alterato o non più corrispondente restituisce un nuovo confirmation_required con un nuovo token, mai un errore e mai una rimozione. Un dominio che il tuo account non ha messo in vendita restituisce business.notFound, esattamente come un dominio messo in vendita da un altro account. Se una chiamata confermata fallisce con infrastructure.serviceUnavailable, leggi l'annuncio con marketplace_listing_get prima di richiamare: un annuncio che è stato rimosso non viene trovato.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Il dominio messo in vendita da rimuovere dalla vendita, ad es.
example.com, 3–253 caratteri.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Stringa, 1–4096 caratteri. Token restituito da una precedente chiamata
marketplace_listing_deleteper questo dominio. Omettilo nella prima chiamata; reinvialo invariato insieme aconfirmationResponse.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
"accept"o"decline". Ha senso solo insieme a unconfirmationTokenvalido."accept"rimuove l'annuncio;"decline"annulla. Omettilo nella prima chiamata.
Restituisce — dopo la prima chiamata (nulla è cambiato):
{"status": "confirmation_required","confirmationToken": "eyJ2IjoxLCJ0IjoibWFya2V0cGxhY2UifQ.c2lnbmF0dXJl","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_listing_delete again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","confirmation": {"domain": "brightharbor.com","activeNegotiations": 2,"effect": "The domain is taken off sale. Its active negotiations are suspended and SafePay deals the seller opened for it are deactivated. This cannot be undone; listing the domain again starts a new listing."}}
Dopo la chiamata confermata:
{ "status": "removed", "domain": "brightharbor.com", "note": "The listing was removed from sale." }
status:
confirmation_requiredSignificato: Nulla è cambiato; conferma con il
confirmationTokenrestituito.status:
cancelledSignificato: Rifiutato; nulla è cambiato. Include anche
domainenote.status:
removedSignificato: L'annuncio è stato rimosso dalla vendita.
marketplace_listing_verify — Verifica la proprietà del dominio di un annuncio
Accesso: Scrittura.
Avvia subito un controllo di proprietà per uno degli annunci del tuo account in attesa di verifica (stato verifying). La risposta arriva durante la chiamata e indica se un controllo è stato avviato, insieme allo stato corrente dell'annuncio; il controllo stesso viene eseguito in background, quindi leggi l'annuncio con marketplace_listing_get più tardi — lo stato esce da verifying una volta che il controllo va a buon fine. I record DNS da pubblicare presso il provider DNS del dominio sono elencati nei record di verifica in marketplace_seller_settings_get.
Un annuncio che non è in attesa di verifica è un risultato normale: viene restituito con il suo stato e checkStarted: false, e non viene avviato alcun controllo. Un dominio che il tuo account non ha messo in vendita restituisce business.notFound. La chiamata può essere ripetuta in qualsiasi momento.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Il dominio messo in vendita di cui verificare subito la proprietà, ad es.
example.com, 3–253 caratteri.
Restituisce
{"domain": "northpeak.io","status": "verifying","checkStarted": true,"note": "An ownership check of this domain was started. It runs in the background; read the listing with marketplace_listing_get later: the status leaves \"verifying\" once the check passes. If it does not, make sure the DNS records listed under verification records by marketplace_seller_settings_get are published at the domain's DNS provider."}
checkStarted è false sia quando l'annuncio non è in attesa di verifica (allora status non è verifying) sia quando l'annuncio è in attesa di verifica ma non è stato possibile avviare un controllo in quel momento; note indica quale dei due casi si applica e, nel secondo caso, riprova più tardi.
marketplace_listings_bulk_verify — Verifica la proprietà di tutti gli annunci non verificati
Accesso: Scrittura.
Avvia subito un controllo di proprietà per ogni annuncio del tuo account in attesa di verifica (stato verifying). La risposta arriva durante la chiamata con listingsChecked, il numero di annunci per cui è stato avviato un controllo; i controlli vengono eseguiti in background, quindi leggi gli annunci più tardi con marketplace_listings_list filtrato per stato verifying per vedere quali sono andati a buon fine. Quando nessun annuncio è in attesa di verifica, listingsChecked è 0 e non viene avviato nulla; non è un errore. I record DNS da pubblicare sono elencati nei record di verifica in marketplace_seller_settings_get. La chiamata può essere ripetuta in qualsiasi momento.
Nessun parametro.
Restituisce
{"listingsChecked": 3,"note": "Ownership checks were started for the listings waiting for verification. They run in the background; read the listings with marketplace_listings_list (status \"verifying\") later to see which passed."}
Marketplace: impostazioni del venditore, insight, vendite e link di checkout
Impostazioni del venditore a livello di account, statistiche del portfolio, domini venduti e link di checkout "buy now" che condividi con gli acquirenti.
marketplace_seller_settings_get — Ottieni le impostazioni del venditore
Accesso: Lettura.
Legge in un'unica risposta le impostazioni del venditore del tuo account: la pagina portfolio pubblica, l'impostazione Quality Offer a livello di account, i tuoi metodi di pagamento e i record DNS che dimostrano la proprietà di un dominio registrato altrove. portfolio e qualityOffer sono null quando non sono mai stati impostati; è un risultato normale, non un errore.
Le quattro parti vengono lette in parallelo entro un unico limite di tempo. Una parte che non è stato possibile leggere in tempo è null ed è nominata in unavailable (portfolio, quality_offer, payout_methods o verification), e le parti che sono state lette vengono comunque restituite; unavailable viene omesso quando ogni parte è stata letta. Quando nessuna parte può essere letta in tempo, la chiamata fallisce con infrastructure.serviceUnavailable ("The marketplace did not answer in time.").
I metodi di pagamento sono mascherati. Ognuno mostra solo il metodo, un account parzialmente nascosto e se è predefinito e attivo: un indirizzo PayPal mantiene il primo carattere e il suo dominio (s***@example.com), un indirizzo Bitcoin o un conto bancario (IBAN o numero di conto) mantiene solo gli ultimi quattro caratteri (****6789). Nessun altro dettaglio di pagamento viene mai restituito. Qui i metodi di pagamento sono di sola lettura; vengono modificati nel tuo account Spaceship.
Nessun parametro.
Restituisce
{"portfolio": {"visibility": true,"nickname": "Greatest Domains","description": "Premium names","slug": "greatest-domains","displayMode": "all","url": "https://www.spaceship.com/domains/portfolio/greatest-domains"},"qualityOffer": {"requirement": "mandatory_for_countries","depositAmount": 25,"countries": ["US", "CA"],"otherCountriesMode": "keep_disabled"},"payoutMethods": [{ "method": "paypal", "account": "s***@example.com", "isDefault": true, "isActive": true },{ "method": "wire_transfer", "account": "****6789", "isDefault": false, "isActive": true }],"verification": {"options": [{ "records": [{ "type": "TXT", "name": "@", "value": "spaceship-verification=abc123" }] }]}}
Campo:
portfolioSignificato: La pagina portfolio, oppure
null.descriptionviene omesso quando è vuoto.displayModeèall(ogni dominio messo in vendita) oppureselected(solo i domini scelti per la pagina).urlè il link della pagina pubblica.Campo:
qualityOfferSignificato: L'impostazione Quality Offer a livello di account, oppure
null.requirementèdisabled,optional,mandatoryomandatory_for_countries.depositAmountè in dollari USA interi e viene omesso quando il requisito èdisabled.countrieseotherCountriesMode(keep_disabledomake_optional) si applicano amandatory_for_countries.Campo:
payoutMethodsSignificato: Metodi di pagamento mascherati:
method(paypal,bitcoinowire_transfer),account(mascherato; omesso quando non può essere mostrato in forma mascherata),isDefault,isActive.nullquando non è stato possibile leggerli in tempo.Campo:
verification.optionsSignificato: Set alternativi di record DNS; aggiungere i record di una delle opzioni presso l'host DNS del dominio dimostra la proprietà di un dominio registrato altrove.
verificationènullquando non è stato possibile leggerlo in tempo.Campo:
unavailableSignificato: Solo quando una parte non è stata letta in tempo: le parti che sono
nullper questo motivo.
marketplace_seller_settings_update — Aggiorna le impostazioni del venditore
Accesso: Scrittura sensibile — sostituisce integralmente l'impostazione Quality Offer a livello di account.
Modifica la pagina portfolio pubblica, l'impostazione Quality Offer a livello di account, o entrambe. Invia almeno uno tra portfolio e qualityOffer. Per la pagina portfolio cambiano solo i campi che invii; la prima volta che la pagina viene configurata, visibility, nickname e slug sono tutti necessari, altrimenti la chiamata fallisce con business.invalidArgument e nulla viene salvato. Lo slug viene impostato solo allora: lo slug (indirizzo) di una pagina esistente non può essere modificato, e uno slug diverso fallisce con business.invalidArgument ("The slug (address) of an existing portfolio page cannot be changed.") e nulla viene salvato, perché i link della pagina sono già stati condivisi. Lo slug di una nuova pagina viene controllato per verificarne la disponibilità prima che qualsiasi cosa venga salvata; uno slug occupato, riservato o non valido fallisce con business.invalidArgument e nulla viene salvato. L'impostazione Quality Offer viene sostituita integralmente, inclusa la lista dei paesi, e si applica agli annunci che non ne hanno una propria. I metodi di pagamento non possono essere modificati qui.
Una modifica solo del portfolio viene salvata immediatamente. Una chiamata con qualityOffer ha due passaggi. La prima chiamata legge l'impostazione corrente, non modifica nulla e restituisce status: "confirmation_required" con un confirmationToken e una confirmation che contiene l'impostazione corrente (current, null quando nessuna è attiva), quella risultante (resulting) e un summary di entrambe, che nomina ogni paese a cui si applica il deposito prima e dopo e i paesi che ne escono. Una seconda chiamata con gli stessi portfolio e qualityOffer, quel token e confirmationResponse: "accept" salva; "decline" non salva nulla e restituisce status: "cancelled". Il token è legato agli argomenti e all'impostazione memorizzata: se l'impostazione cambia nel frattempo, la seconda chiamata restituisce un nuovo confirmation_required invece di salvare.
Quando vengono inviati entrambi i gruppi, la pagina portfolio viene salvata per prima. La risposta elenca ogni gruppo come saved, notSaved o unconfirmed: se l'impostazione Quality Offer viene poi rifiutata, la chiamata ha comunque esito positivo con portfolio in saved, quality_offer in notSaved e una note; se il suo esito è sconosciuto, quality_offer è in unconfirmed e la note ti chiede di leggere le impostazioni prima di riprovare. Se la chiamata fallisce con infrastructure.serviceUnavailable, la modifica potrebbe comunque essere stata salvata: leggila con marketplace_seller_settings_get prima di salvare di nuovo.
Prima che qualsiasi cosa venga salvata, le impostazioni correnti vengono lette entro un unico limite di tempo. Quando non è possibile leggerle in tempo, nulla viene salvato: la chiamata ha esito positivo con saved vuoto, ogni gruppo che hai inviato in notSaved e una note.
Parametro:
portfolioObbligatorio: Condizionale
Tipo e vincoli: Oggetto; obbligatorio quando
qualityOfferè omesso. Deve modificare almeno un campo.Parametro:
portfolio.visibilityObbligatorio: Condizionale
Tipo e vincoli: Booleano: se la pagina portfolio è pubblica. Obbligatorio la prima volta che la pagina viene configurata.
Parametro:
portfolio.nicknameObbligatorio: Condizionale
Tipo e vincoli: Stringa, 1–50 caratteri: nome visualizzato nella pagina. Obbligatorio la prima volta che la pagina viene configurata.
Parametro:
portfolio.descriptionObbligatorio: No
Tipo e vincoli: Stringa, fino a 400 caratteri, mostrata nella pagina. Una stringa vuota la cancella.
Parametro:
portfolio.slugObbligatorio: Condizionale
Tipo e vincoli: Stringa, 3–50 caratteri: lettere, numeri e trattini singoli, senza trattino iniziale o finale. La disponibilità viene verificata prima del salvataggio. Obbligatorio la prima volta che la pagina viene configurata; lo slug di una pagina esistente non può essere modificato.
Parametro:
portfolio.displayModeObbligatorio: No
Tipo e vincoli:
all(ogni dominio elencato) oppureselected(solo i domini scelti per la pagina).Parametro:
qualityOfferObbligatorio: Condizionale
Tipo e vincoli: Oggetto; obbligatorio quando
portfolioè omesso. Sostituisce l'intera impostazione a livello di account.Parametro:
qualityOffer.requirementObbligatorio: Sì (in
qualityOffer)Tipo e vincoli:
disabled,optional,mandatoryomandatory_for_countries(un deposito solo dai paesi elencati).Parametro:
qualityOffer.depositAmountObbligatorio: Condizionale
Tipo e vincoli: Intero, 10–50, dollari USA interi. Obbligatorio a meno che
requirementnon siadisabled, e non consentito condisabled.Parametro:
qualityOffer.countriesObbligatorio: Condizionale
Tipo e vincoli: 1–250 codici paese ISO 3166-1 alpha-2 di due lettere, senza ripetizioni. Obbligatorio con
mandatory_for_countriese consentito solo con esso.Parametro:
qualityOffer.otherCountriesModeObbligatorio: Condizionale
Tipo e vincoli:
keep_disabled(nessun deposito per gli altri paesi) oppuremake_optional. Obbligatorio conmandatory_for_countriese consentito solo con esso.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Stringa, fino a 4096 caratteri. Il token di una chiamata precedente con
qualityOffere gli stessi argomenti. Omettilo nella prima chiamata. Scade dopo poco tempo.Parametro:
confirmationResponseObbligatorio: No
Tipo e vincoli:
acceptodecline; significativo solo con unconfirmationTokenvalido.
Restituisce — alla prima chiamata con qualityOffer, la conferma:
{"status": "confirmation_required","confirmationToken": "<opaque token>","note": "Nulla è stato ancora modificato. Mostra la conferma all'utente e, una volta che accetta, richiama marketplace_seller_settings_update con questo confirmationToken e confirmationResponse=\"accept\", oppure con confirmationResponse=\"decline\" per annullare.","confirmation": {"summary": "Sostituire l'impostazione Quality Offer a livello di account? Ora: gli acquirenti in US, CA pagano un deposito Quality Offer di $25 con un'offerta, e gli acquirenti di tutti gli altri paesi non pagano alcun deposito. Dopo il salvataggio: gli acquirenti in UA pagano un deposito Quality Offer di $25 con un'offerta, e gli acquirenti di tutti gli altri paesi non pagano alcun deposito. Agli acquirenti in US, CA non verrà più richiesto il deposito. L'impostazione si applica agli annunci che non hanno una propria impostazione Quality Offer.","current": { "requirement": "mandatory_for_countries", "depositAmount": 25, "countries": ["US", "CA"], "otherCountriesMode": "keep_disabled" },"resulting": { "requirement": "mandatory_for_countries", "depositAmount": 25, "countries": ["UA"], "otherCountriesMode": "keep_disabled" }}}
Una volta salvato (o per una modifica solo del portfolio), i gruppi per risultato, più i valori salvati di ciascun gruppo salvato:
{"saved": ["portfolio", "quality_offer"],"notSaved": [],"unconfirmed": [],"portfolio": {"visibility": true,"nickname": "Greatest Domains","description": "Premium names","slug": "greatest-domains","displayMode": "all","url": "https://www.spaceship.com/domains/portfolio/greatest-domains"},"qualityOffer": { "requirement": "mandatory", "depositAmount": 50 }}
Quando la pagina del portfolio è stata salvata ma l'impostazione Quality Offer è stata rifiutata:
{"saved": ["portfolio"],"notSaved": ["quality_offer"],"unconfirmed": [],"portfolio": { "visibility": false, "nickname": "Greatest Domains", "slug": "greatest-domains", "displayMode": "all", "url": "https://www.spaceship.com/domains/portfolio/greatest-domains" },"note": "La pagina del portfolio è stata salvata. L'impostazione Quality Offer è stata rifiutata e non è cambiata."}
Quando non è stato possibile leggere in tempo le impostazioni correnti:
{"saved": [],"notSaved": ["portfolio", "quality_offer"],"unconfirmed": [],"note": "Non è stato possibile leggere in tempo le impostazioni correnti del venditore, quindi non è stato salvato nulla."}
marketplace_insights_get — Ottieni Seller Insights
Accesso: Lettura.
Mostra come sta andando il tuo portfolio venditore, in un'unica risposta: stato del portfolio, trattative e accordi SafePay per stato, vendite per fonte e paese, traffico, ricavi e pagamenti (totale storico e ultimi 30 giorni), più i tuoi domini principali classificati per visualizzazioni, visite o ricerche tra gli annunci che la SellerHub Dashboard conteggia nel traffico: in vendita, in verifica, elaborazione vendita e in attesa di trasferimento (gli annunci con vendita interrotta, vendita privata, in leasing, venduti e non riusciti sono esclusi). Le cifre sono calcolate dal marketplace Spaceship e potrebbero essere leggermente in ritardo rispetto all'attività in tempo reale. Un portfolio senza attività restituisce conteggi pari a zero e un elenco vuoto dei domini principali. I domini principali vengono letti insieme agli altri dati entro un breve limite di tempo; quando non possono essere letti in tempo, topDomains è null, unavailable è ["top_domains"] e gli altri dati vengono comunque restituiti.
Parametro:
topByObbligatorio: No
Tipo e vincoli:
views(visualizzazioni di pagina),visitsosearches, totale storico, dal più alto al più basso. Predefinitovisits.Parametro:
topCountObbligatorio: No
Tipo e vincoli: Intero, 1–50: quanti domini principali restituire. Predefinito 10.
Restituisce
{"portfolio": {"total": 40, "listed": 30, "onLease": 2, "pendingVerification": 1,"withoutPrices": 4, "expiringSoon": 3, "notListed": 10, "asOf": "2026-10-26T06:00:00.000Z"},"negotiations": { "total": 12, "inNegotiation": 7, "agreedOrInTransfer": 2, "contactRequests": 2, "cancelledOrPaused": 1 },"safePay": { "awaitingPayment": 1, "pendingConfirmation": 0 },"sales": {"total": 3,"bySource": [{ "key": "forSalePage", "count": 2 }],"byCountry": [{ "key": "US", "count": 3 }]},"traffic": { "totalViews": "5400", "totalSearches": "320", "viewsBySource": [{ "key": "search", "count": "4100" }] },"financials": {"revenue": { "allTime": { "amount": "15000.00", "currency": "USD" }, "last30Days": { "amount": "2500.00", "currency": "USD" } },"payout": { "allTime": { "amount": "14250.00", "currency": "USD" }, "last30Days": { "amount": "2375.00", "currency": "USD" } },"sold": { "allTime": 3, "last30Days": 1 }},"topDomains": {"sortedBy": "views","total": 1,"items": [{"domain": "greatdomain.com", "external": false,"views": "900", "visits": "300", "searches": "30","viewsToday": "12", "visitsToday": "4", "searchesToday": "1"}]}}
Campo:
portfolioSignificato: Conteggi dei domini per stato.
asOfindica quando i conteggi sono stati calcolati l'ultima volta, oppurenull.Campo:
negotiationsSignificato: Offerte e trattative per stato:
inNegotiation;agreedOrInTransfer, ogni trattativa oltre l'accordo (accordo raggiunto, pagato o dominio in trasferimento), quindi non è il numero di trattative nello statoagreement_reached;contactRequests;cancelledOrPaused.Campo:
safePaySignificato: Accordi SafePay in attesa di pagamento o di conferma.
Campo:
salesSignificato: Numero di vendite, per fonte e per paese, ciascuno come
{ key, count }.Campo:
trafficSignificato: Visualizzazioni e ricerche totali storiche, e visualizzazioni per fonte. I contatori grandi vengono restituiti come stringhe.
Campo:
financialsSignificato: Ricavi e pagamenti come
{ amount, currency }per il totale storico e gli ultimi 30 giorni, e il numero di domini venduti.Campo:
topDomainsSignificato: La classifica usata (
sortedBy), il numero di domini che copre (total) e fino atopCountdomini con visualizzazioni, visite e ricerche totali storiche e di oggi.externalètrueper un dominio registrato altrove.nullquando non è stato possibile leggere in tempo i domini principali.Campo:
unavailableSignificato: Solo quando non è stato possibile leggere in tempo i domini principali:
["top_domains"].
marketplace_sales_list — Elenca domini venduti
Accesso: Lettura.
Elenca i domini che hai venduto: il dominio, quando è stato venduto, il prezzo di vendita, il tuo pagamento dopo la commissione del marketplace e il canale tramite cui è avvenuta la vendita. Puoi limitare l'elenco a un intervallo temporale di vendita. Un intervallo senza vendite restituisce un elenco vuoto, non un errore; un intervallo la cui fine non è successiva all'inizio fallisce con application.request.badRequest.
L'elenco è paginato tramite cursore: passa il nextCursor di una pagina come cursor per ottenere la successiva. Una pagina senza nextCursor è l'ultima.
Parametro:
soldFromObbligatorio: No
Tipo e vincoli: Data e ora ISO 8601 con fuso orario, per esempio
soldFrom: "2026-01-01T00:00:00Z". Solo vendite in questo momento o successive.Parametro:
soldToObbligatorio: No
Tipo e vincoli: Data e ora ISO 8601 con fuso orario. Solo vendite precedenti a questo momento (escluso). Deve essere successivo a
soldFrom.Parametro:
takeObbligatorio: No
Tipo e vincoli: Intero, 1–100: vendite per pagina. Predefinito 50.
Parametro:
cursorObbligatorio: No
Tipo e vincoli: Stringa, 1–2048 caratteri: il
nextCursordella pagina precedente. Omettilo per la prima pagina.
Restituisce
{"items": [{"domain": "greatdomain.com","soldAt": "2026-09-30T12:00:00.000Z","price": { "amount": "2500.00", "currency": "USD" },"payout": { "amount": "2375.00", "currency": "USD" },"channel": "forSalePage"}],"nextCursor": "eyJwYWdlIjoyfQ"}
soldAt può essere null quando l'ora della vendita non è registrata. Senza vendite nell'intervallo, la risposta è { "items": [] }.
marketplace_checkout_links_list — Elenca link di checkout
Accesso: Lettura.
Elenca i tuoi link di checkout: il dominio, il tipo di link, il suo stato, l'URL del link, il prezzo, quanto paga l'acquirente e quanto ricevi, la ripartizione delle commissioni e quando il link smette di funzionare. Puoi filtrare per dominio; il filtro corrisponde a una parte del nome. Un filtro che non corrisponde a nulla restituisce un elenco vuoto con total 0, non un errore.
L'elenco è paginato con take e skip; total è il numero di link che corrispondono al filtro.
Parametro:
domainObbligatorio: No
Tipo e vincoli: Stringa, 1–255 caratteri. Solo i link il cui nome di dominio contiene questo testo.
Parametro:
takeObbligatorio: No
Tipo e vincoli: Intero, 1–100: link per pagina. Predefinito 50.
Parametro:
skipObbligatorio: No
Tipo e vincoli: Intero, 0 o più: link da saltare prima della pagina. Predefinito 0.
Restituisce
{"items": [{"domain": "greatdomain.com","type": "buy_now","status": "active","checkoutUrl": "https://www.spaceship.com/s/buy/ab12cd34ef56gh78","price": { "amount": "2500.00", "currency": "USD" },"buyerPays": { "amount": "2500.00", "currency": "USD" },"sellerReceives": { "amount": "2375.00", "currency": "USD" },"sellerFeeShare": 100,"buyerFeeShare": 0,"validTill": "2026-11-01T00:00:00.000Z","createdAt": "2026-10-25T10:00:00.000Z"}],"total": 1}
Campo:
typeSignificato:
buy_now,lease_to_ownomake_offer;unknownper un tipo non elencato qui.Campo:
statusSignificato:
active,expired,deactivatedopurchased;unknownper uno stato non elencato qui. Solo un linkactivepuò essere usato per acquistare.Campo:
price/leaseToOwnTotalSignificato: Il prezzo del link e, per un link lease-to-own, il totale da pagare. Entrambi vengono omessi quando non impostati.
Campo:
buyerPays/sellerReceivesSignificato: Quanto paga l'acquirente e quanto ricevi dopo la commissione del marketplace. Omissi quando non disponibili.
Campo:
sellerFeeShare/buyerFeeShareSignificato: Percentuale della commissione del marketplace pagata da te e dall'acquirente.
Campo:
validTill/createdAtSignificato: Quando il link smette di funzionare e quando è stato creato.
marketplace_checkout_link_create — Crea link di checkout
Accesso: Scrittura sensibile — chiunque abbia il link può acquistare il dominio per 7 giorni.
Crea un link di checkout condivisibile "acquista ora" per uno dei tuoi domini elencati in vendita. Il link è valido per 7 giorni e non è legato a un acquirente: chiunque lo abbia può acquistare il dominio al suo prezzo. Perciò l'assistente crea un link solo dopo che hai accettato il suo prezzo e la ripartizione delle commissioni: quando chiedi un link senza indicare entrambi, legge prima l'annuncio e ti comunica le condizioni che il link comporterebbe. Senza price, viene usato il prezzo acquista-ora dell'annuncio; senza sellerFeeShare, paghi l'intera commissione del marketplace. Un dominio che non è uno dei tuoi annunci fallisce con business.notFound. Il prezzo deve essere almeno 100 USD; un prezzo inferiore fallisce con business.invalidArgument ("The minimum checkout link price is 100 USD.") e non viene creato nulla. Un link viene rifiutato con business.conflict e una frase che indica il motivo quando il tuo annuncio non è ancora in vendita (per esempio la sua proprietà è ancora in fase di verifica), oppure quando il dominio ha un accordo concordato con un acquirente, in una trattativa o tramite un accordo SafePay confermato.
Ogni chiamata crea un nuovo link e lascia attivi i link precedenti, quindi ripetere una chiamata ti fornisce un secondo link. Se la chiamata fallisce con infrastructure.serviceUnavailable, il link potrebbe comunque essere stato creato: cercalo con marketplace_checkout_links_list prima di crearne un altro.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Stringa, 4–255 caratteri, Unicode o ASCII. Uno dei tuoi annunci in vendita.
Parametro:
price.amountObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio quando viene inviato
price. Importo decimale positivo con al massimo due decimali, per esempio"2500.00".Parametro:
price.currencyObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio quando viene inviato
price. Codice valuta di tre lettere; è supportato soloUSD.Parametro:
sellerFeeShareObbligatorio: No
Tipo e vincoli:
0,25,50,75o100: percentuale della commissione del marketplace che paghi tu; l'acquirente paga il resto. Predefinito: la paghi tutta tu.
Restituisce — il dominio (in forma ASCII), il link e quando smette di funzionare:
{"domain": "greatdomain.com","checkoutUrl": "https://www.spaceship.com/s/buy/zz99yy88xx77ww66","validTill": "2026-11-02T00:00:00.000Z"}
marketplace_checkout_link_deactivate — Disattiva link di checkout
Accesso: Scrittura sensibile — disattiva definitivamente il link.
Disattiva uno dei tuoi link di checkout attivi, individuato tramite il suo URL. Dopo, nessuno potrà più acquistare tramite esso, e questa operazione non può essere annullata: per vendere di nuovo tramite un link, creane uno nuovo. Lo strumento richiede conferma. La prima chiamata non modifica nulla e restituisce confirmation_required con ciò che sta per accadere e un confirmationToken di breve durata; mostralo all'utente e, una volta che accetta, richiama con gli stessi argomenti, il token e confirmationResponseaccept. decline restituisce cancelled e non modifica nulla. Un token scaduto, emesso per altri argomenti o che non corrisponde più al link (per esempio se la sua scadenza è cambiata) restituisce un nuovo confirmation_required invece della disattivazione.
Un link che non è tra i tuoi link di checkout restituisce business.notFound, esattamente come uno che non esiste. Un link che non è più attivo (scaduto, disattivato o acquistato) fallisce con business.conflict. Un URL che non è un URL di link di checkout fallisce con business.invalidArgument. In un elenco molto lungo il link potrebbe non essere trovato in tempo; in tal caso la chiamata restituisce statuslookup_incomplete con deactivated: false e una note, e non viene modificato nulla. Passare il domain del link restringe la ricerca ai link di quel dominio. Se la chiamata fallisce con infrastructure.serviceUnavailable dopo accept, il link potrebbe essere già disattivato: controllalo con marketplace_checkout_links_list prima di riprovare.
Parametro:
checkoutUrlObbligatorio: Sì
Tipo e vincoli: Stringa, 1–2048 caratteri: l'URL del link di checkout, come elencato da
marketplace_checkout_links_list.Parametro:
domainObbligatorio: No
Tipo e vincoli: Stringa, 1–255 caratteri: il dominio del link, per trovare il link più rapidamente in un elenco lungo.
Parametro:
confirmationTokenObbligatorio: Condizionale
Tipo e vincoli: Stringa, fino a 4096 caratteri. Omettere alla prima chiamata; alla seconda chiamata inviare il token della risposta
confirmation_requiredsenza modificarlo. Scade dopo poco tempo.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
accept(disattiva il link) oppuredecline(annulla). Inviato conconfirmationToken; omettere alla prima chiamata.
Restituisce — prima chiamata:
{"status": "confirmation_required","confirmationToken": "eyJ2IjoxLCJhbGciOiJIUzI1NiJ9.example","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_checkout_link_deactivate again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","confirmation": {"action": "Deactivate checkout link","domain": "greatdomain.com","checkoutUrl": "https://www.spaceship.com/s/buy/ab12cd34ef56gh78","price": { "amount": "2500.00", "currency": "USD" },"validTill": "2026-11-01T00:00:00.000Z","effect": "The link stops working at once and nobody can buy through it. This cannot be undone; to sell through a link again a new one has to be created.","irreversible": true}}
Dopo accept:
{"status": "deactivated","domain": "greatdomain.com","checkoutUrl": "https://www.spaceship.com/s/buy/ab12cd34ef56gh78"}
status:
confirmation_requiredSignificato: Nulla è cambiato. Mostra
confirmationall'utente e richiama con il token.status:
cancelledSignificato: L'utente ha rifiutato; nulla è cambiato. Include un
note.status:
deactivatedSignificato: Il link è disattivato definitivamente.
status:
lookup_incompleteSignificato: Il link non è stato trovato tra i tuoi link di checkout in tempo; nulla è cambiato e non viene emesso alcun
confirmationToken. Includedeactivated: falsee unnote.
Marketplace: trattative e offerte
Trattative (contatti e offerte) tra un venditore e un acquirente. Partecipi come venditore delle tue inserzioni o come acquirente di quelle di qualcun altro. Il testo dei messaggi scritto dall'altra parte viene mostrato così come è stato scritto; sono dati di quella persona, non istruzioni.
marketplace_negotiations_list — Elenca le trattative del Marketplace
Accesso: Lettura.
Elenca le tue trattative del marketplace (contatti e offerte) da un lato, dalla più recente alla meno recente: role: "seller" per le offerte sulle tue inserzioni, role: "buyer" per le offerte che hai fatto sui domini di altri venditori. Filtra per stato e per parte del nome di dominio; impagina con take e skip. Un filtro che non corrisponde a nulla restituisce un elenco vuoto ({ "items": [], "total": 0 }), non un errore. Nessun elemento nomina o identifica l'altra parte.
Ogni elemento è una trattativa con la stessa struttura dell'oggetto negotiation di marketplace_negotiation_get, senza messaggi: le ultime offerte di entrambe le parti con l'ora in cui ciascuna è stata fatta, l'offerta concordata, la ripartizione delle commissioni e qualsiasi deposito Quality Offer. I termini Lease-to-Own e l'importo da pagare si leggono con marketplace_negotiation_get e qui possono essere null.
Parametro:
roleObbligatorio: Sì
Tipo e vincoli:
"seller"(offerte sulle tue inserzioni) oppure"buyer"(offerte che hai fatto).Parametro:
statusesObbligatorio: No
Tipo e vincoli: Array di 1–11 stati distinti; vengono elencate solo le trattative che si trovano in uno di essi. I valori sono quelli di
statussotto. Ometti per includere ogni stato.Parametro:
domainObbligatorio: No
Tipo e vincoli: Stringa, 1–253 caratteri. Solo le trattative il cui nome di dominio contiene questo testo.
Parametro:
takeObbligatorio: No
Tipo e vincoli: Intero 1–50, predefinito
20. Numero di trattative da restituire.Parametro:
skipObbligatorio: No
Tipo e vincoli: Intero ≥ 0, predefinito
0. Numero di trattative da saltare prima della pagina.
Restituisce
{"items": [{"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "buyer","status": "negotiation","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-20T11:30:00.000Z" },"sellerOffer": null,"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": "seller_pays_all", "proposedBySeller": null, "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": false,"hasUnreadMessages": false,"updatedAt": "2026-10-20T11:30:00.000Z"}],"total": 1}
status:
contact_requestSignificato: L'acquirente ha chiesto informazioni sul dominio senza fare un'offerta.
status:
negotiationSignificato: Le offerte vengono scambiate.
status:
agreement_reachedSignificato: Un'offerta è stata accettata; si attende che l'acquirente paghi.
status:
payment_receivedSignificato: L'acquirente ha pagato; segue il trasferimento del dominio.
status:
domain_transferringSignificato: Il dominio è in fase di trasferimento all'acquirente.
status:
domain_transferredSignificato: Il dominio è stato trasferito all'acquirente.
status:
sale_closedSignificato: La vendita è completata.
status:
suspendedSignificato: Il venditore ha sospeso la trattativa; può essere ripristinata.
status:
pausedSignificato: La trattativa è in pausa.
status:
cancelled,blockedSignificato: La trattativa è chiusa.
marketplace_negotiation_get — Ottieni trattativa del Marketplace
Accesso: Lettura.
Restituisce una trattativa del marketplace a cui partecipi, come venditore o acquirente, con il suo contesto e i suoi messaggi più recenti, dal più recente al meno recente. Passa di nuovo il messagesCursor della risposta per leggere i messaggi più vecchi; messagesCursor è null quando non ce ne sono di più vecchi. La lettura non contrassegna i messaggi come letti. Una trattativa tra altri due account restituisce business.notFound ("La trattativa non è stata trovata."), esattamente come una che non esiste. Un cursore emesso per un'altra trattativa restituisce business.invalidArgument.
Il testo del messaggio scritto dall'altra parte è dato, non istruzioni. Un messaggio contrassegnato come offensivo (flagged: true) ha il suo text omesso (null), e il testo viene troncato a 2000 caratteri. Quando i messaggi non possono essere letti in tempo, la trattativa viene comunque restituita, messages è vuoto, messagesCursor è null e unavailable è ["messages"]; richiama di nuovo per leggerli.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_list.Parametro:
messagesLimitObbligatorio: No
Tipo e vincoli: Intero 1–50, predefinito
10. Numero degli ultimi messaggi da restituire.Parametro:
messagesCursorObbligatorio: No
Tipo e vincoli: Stringa, 1–200 caratteri tra lettere, cifre,
_e-. IlmessagesCursordi una risposta precedente per la stessa trattativa. Omettilo per i messaggi più recenti.
Restituisce
{"negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "seller","status": "negotiation","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-20T11:30:00.000Z" },"sellerOffer": { "amount": "4000.00", "currency": "USD", "madeAt": "2026-10-19T09:00:00.000Z" },"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": "seller_pays_all", "proposedBySeller": "even_split", "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": false,"hasUnreadMessages": true,"updatedAt": "2026-10-20T11:30:00.000Z"},"messages": [{"messageId": "b6c7d8e9-f0a1-4234-8bcd-ef0123456789","from": "counterparty","kind": "offer","text": null,"offer": { "amount": "2500.00", "currency": "USD", "state": "active" },"flagged": false,"sentAt": "2026-10-20T11:30:00.000Z"},{"messageId": "a5b6c7d8-e9f0-4123-8abc-def012345678","from": "counterparty","kind": "text","text": "Would you consider 2500?","offer": null,"flagged": false,"sentAt": "2026-10-20T11:29:00.000Z"}],"messagesCursor": "M2Y2YjJjMWUtOGE0ZC00ZjJiLTljN2UtMWQ1YTZiN2M4ZDllOjI"}
Campo:
yourRoleSignificato:
sellerobuyer: il tuo lato in questa trattativa.Campo:
buyerOffer,sellerOfferSignificato: L'ultima offerta di ciascuna parte con
madeAt, l'ora in cui è stata fatta, oppurenull.declinedBuyerOfferè l'offerta dell'acquirente rifiutata per ultima dal venditore.Campo:
acceptedOfferSignificato: L'offerta su cui è stato raggiunto l'accordo, oppure
null.Campo:
leaseToOwnSignificato: I termini Lease-to-Own del venditore:
total,downPayment,finalPayment,installmente il numero diinstallments;nullse assenti.Campo:
feeSplitSignificato: Chi paga la commissione del marketplace secondo quanto proposto da ciascuna parte e quanto concordato:
seller_pays_all,seller_pays_most(75/25),even_split,buyer_pays_most(25/75),buyer_pays_alloppurenull.Campo:
amountToPaySignificato: Quanto l'acquirente paga ora dopo un accordo, quando noto: per un accordo sul prezzo, l'importo concordato più la quota della commissione a carico dell'acquirente; per un accordo Lease-to-Own, il primo pagamento, cioè l'anticipo, oppure la prima rata se non c'è anticipo (l'intero leasing è
leaseToOwn.totale la pagina di pagamento aggiunge l'eventuale quota della commissione a carico dell'acquirente).Campo:
depositSignificato: Per una Quality Offer, lo
statedel deposito, l'amount(USD) eexpiresAt; altrimentinull.Campo:
messages[].fromSignificato:
you,counterparty(l'altra parte, per i suoi messaggi e per le sue offerte, controfferte, rifiuti, ritiri e accettazioni),supportoppuresystem(un evento non effettuato da alcuna parte).Campo:
messages[].kindSignificato:
text,offer,counter_offer,offer_accepted,offer_declined,offer_withdrawn,lease_to_own_proposal,blocked_by_moderationoppureevent. Solo i messaggitextcontengonotext.Campo:
messages[].offer.stateSignificato:
active,declined,withdrawn,acceptedoppuresuperseded.
Gli strumenti che modificano una trattativa (marketplace_offer_make, marketplace_offer_counter, marketplace_offer_accept, marketplace_offer_decline, marketplace_offer_withdraw, marketplace_negotiation_suspend e marketplace_negotiation_restore) restituiscono di nuovo la trattativa come letta dopo la modifica. Se questa lettura fallisce, la modifica resta comunque valida: la risposta omette leaseToOwn e amountToPay e aggiunge una note; leggi la trattativa con marketplace_negotiation_get per visualizzarli.
marketplace_negotiation_message_send — Invia messaggio di trattativa Marketplace
Accesso: Scrittura sensibile — un messaggio inviato non può essere richiamato.
Invia un messaggio di testo all'altra parte di una trattativa a cui partecipi, come venditore o acquirente; l'altra parte riceve una notifica. La risposta è status: "sent" con il messaggio così come memorizzato. Quando le regole dei messaggi del marketplace lo bloccano (per esempio dati di contatto o pagamenti fuori da Spaceship), la risposta è il risultato normale status: "blocked_by_moderation" con una note: non è stato consegnato nulla e il messaggio deve essere riformulato prima di inviarlo di nuovo.
Una trattativa di cui non fai parte restituisce business.notFound, come una che non esiste. Una chiamata non riuscita non viene ritentata automaticamente: leggi la trattativa con marketplace_negotiation_get per verificare se il messaggio è arrivato prima di inviarlo di nuovo.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.Parametro:
textObbligatorio: Sì
Tipo e vincoli: Testo semplice, 1–2000 caratteri dopo il trimming.
Restituisce
{"status": "sent","message": {"messageId": "c7d8e9f0-a1b2-4345-9cde-f01234567890","from": "you","kind": "text","text": "The domain is still available.","offer": null,"flagged": false,"sentAt": "2026-10-26T10:15:00.000Z"}}
status:
sentSignificato: Il messaggio è stato consegnato;
messageè il messaggio memorizzato.status:
blocked_by_moderationSignificato: Le regole dei messaggi lo hanno bloccato e non è stato consegnato nulla;
notelo indica.
marketplace_offer_make — Fai un'offerta Marketplace
Accesso: Scrittura sensibile — un acquirente non può ritirare un'offerta e il venditore può accettarla.
Effettua la tua offerta, come acquirente, per un dominio messo in vendita sul marketplace di Spaceship e apre una trattativa con il venditore, che riceve una notifica. Se stai già negoziando per quel dominio, l'offerta viene aggiunta a quella trattativa. La risposta è la trattativa con status: "offer_sent", oppure il risultato normale status: "deposit_required" con una note quando il venditore richiede un deposito rimborsabile Quality Offer: l'offerta raggiunge il venditore una volta pagato su Spaceship il deposito mostrato in negotiation.deposit.
Un dominio non messo in vendita, e il tuo stesso dominio, restituiscono business.notFound ("The domain is not listed for sale."). Una chiamata non riuscita non viene ritentata automaticamente: elenca le tue trattative con marketplace_negotiations_list e role: "buyer" per verificare se l'offerta è stata fatta prima di offrirla di nuovo.
Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Il dominio messo in vendita, ad es.
example.com. Nome di dominio ASCII, 3–253 caratteri; confronto senza distinzione tra maiuscole e minuscole.Parametro:
amountObbligatorio: Sì
Tipo e vincoli: La tua offerta in dollari USA come stringa decimale con fino a 2 decimali, ad es.
"2500". Deve essere maggiore di 0 e al massimo 10,000,000.
Restituisce — negotiation ha la forma descritta in marketplace_negotiation_get:
{"status": "deposit_required","note": "The seller requires a refundable Quality Offer deposit for this domain. The offer reaches the seller once the deposit shown in `negotiation.deposit` is paid on Spaceship.","negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "buyer","status": "contact_request","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-26T10:15:00.000Z" },"sellerOffer": null,"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": null, "proposedBySeller": null, "agreed": null },"amountToPay": null,"deposit": { "state": "charge_pending", "amount": { "amount": "250.00", "currency": "USD" }, "expiresAt": "2026-11-02T10:15:00.000Z" },"isSuspended": false,"hasUnreadMessages": false,"updatedAt": "2026-10-26T10:15:00.000Z"}}
status:
offer_sentSignificato: L'offerta è stata fatta e il venditore è stato avvisato.
status:
deposit_requiredSignificato: L'offerta è in attesa del pagamento del deposito Quality Offer in
negotiation.deposit.
marketplace_offer_counter — Controfferta Marketplace
Accesso: Scrittura sensibile — l'altra parte può accettarla come accordo vincolante.
Effettua una controfferta in una trattativa a cui partecipi, come venditore o acquirente: o un amount in dollari USA oppure, solo come venditore, termini Lease-to-Own in leaseToOwn; l'altra parte riceve una notifica. Facoltativamente propone chi paga la commissione del marketplace con feeSplit. La risposta è la trattativa aggiornata. Il totale Lease-to-Own è dato dalla somma di anticipo, rate e pagamento finale.
Passare sia amount sia leaseToOwn, oppure nessuno dei due, viene rifiutato prima che venga inviato qualsiasi cosa. I termini Lease-to-Own proposti dall'acquirente restituiscono business.invalidArgument ("Only the seller can propose Lease-to-Own terms."). Una trattativa di cui non fai parte restituisce business.notFound. Una chiamata non riuscita non viene ritentata automaticamente: leggi la trattativa con marketplace_negotiation_get per verificare se la controfferta è stata fatta prima di farne un'altra.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.Parametro:
amountObbligatorio: Condizionale
Tipo e vincoli: Obbligatorio a meno che non venga fornito
leaseToOwn; mai insieme a esso. Stringa decimale USD con fino a 2 decimali, maggiore di 0 e al massimo 10,000,000.Parametro:
leaseToOwnObbligatorio: Condizionale
Tipo e vincoli: Solo venditore. Obbligatorio a meno che non venga fornito
amount; mai insieme a esso. Oggetto con i campi sotto.Parametro:
leaseToOwn.installmentAmountObbligatorio: Sì (in
leaseToOwn)Tipo e vincoli: Importo di ogni rata mensile, stringa decimale USD.
Parametro:
leaseToOwn.installmentsObbligatorio: Sì (in
leaseToOwn)Tipo e vincoli: Intero 1–120; almeno 2 senza un
downPayment.Parametro:
leaseToOwn.downPaymentObbligatorio: No
Tipo e vincoli: Anticipo, pagato per primo, stringa decimale USD. Ometti se assente.
Parametro:
leaseToOwn.finalPaymentObbligatorio: No
Tipo e vincoli: Pagamento finale, pagato per ultimo, stringa decimale USD. Ometti se assente.
Parametro:
feeSplitObbligatorio: No
Tipo e vincoli:
seller_pays_all,seller_pays_most(75/25),even_split,buyer_pays_most(25/75) oppurebuyer_pays_all. Ometti per mantenere la ripartizione attuale.
Restituisce — { "negotiation": { ... } }, la trattativa nella forma descritta in marketplace_negotiation_get, con la tua nuova offerta in buyerOffer o sellerOffer:
{"negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "seller","status": "negotiation","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-20T11:30:00.000Z" },"sellerOffer": { "amount": "4000.00", "currency": "USD", "madeAt": "2026-10-26T10:15:00.000Z" },"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": "seller_pays_all", "proposedBySeller": "even_split", "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": false,"hasUnreadMessages": false,"updatedAt": "2026-10-26T10:15:00.000Z"}}
marketplace_offer_accept — Accetta offerta Marketplace
Accesso: Scrittura sensibile — raggiunge un accordo vincolante che non può essere annullato.
Accetta l'ultima offerta dell'altra parte in una trattativa a cui partecipi: come venditore, l'ultima offerta dell'acquirente; come acquirente, la proposta Lease-to-Own del venditore quando presente, altrimenti l'ultima controfferta del venditore. Questo porta a un accordo vincolante e non può essere annullato. Può essere accettata solo un'offerta fatta dall'altra parte dopo la tua ultima azione: quando tu, come venditore, hai una tua controfferta pendente o una proposta Lease-to-Own, ritirala prima con marketplace_offer_withdraw. Lo strumento non la ritira per te; un'accettazione inviata mentre la tua azione è l'ultima restituisce business.conflict ("There is no offer from the other side that can be accepted now.") e non modifica nulla.
Conferma in due passaggi. La prima chiamata non modifica nulla e restituisce status: "confirmation_required" con una confirmation (una frase di summary, il domain e l'offer) e un confirmationToken. Mostra il riepilogo all'utente e, una volta ottenuto il suo consenso, richiama con lo stesso negotiationId, il token e confirmationResponse: "accept"; "decline" restituisce status: "cancelled" e non modifica nulla. Un token scaduto, appartenente a un altro account o emesso per un'offerta che nel frattempo è cambiata restituisce un nuovo confirmation_required invece di un'accettazione. Quando l'altra parte non ha alcuna offerta da accettare, la risposta è business.conflict ("There is no offer from the other side to accept."); una trattativa di cui non fai parte restituisce business.notFound.
Quando l'esito è sconosciuto, la risposta è infrastructure.outcomeUnknown: l'accordo potrebbe essere stato raggiunto oppure no. Non ripetere la chiamata: leggi prima la trattativa con marketplace_negotiation_get per verificare se l'accordo è stato raggiunto.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Stringa, fino a 4096 caratteri. Il token da una precedente chiamata
marketplace_offer_acceptper questa trattativa. Omettilo nella prima chiamata. Scade dopo poco tempo ed è vincolato all'offerta per cui è stato emesso.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
"accept"o"decline". Ha senso solo con unconfirmationTokenvalido:"accept"accetta l'offerta,"decline"annulla senza modificare nulla. Omettilo nella prima chiamata.
Restituisce — dopo la prima chiamata (nulla è cambiato):
{"status": "confirmation_required","confirmationToken": "<opaque confirmation token>","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_offer_accept again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","confirmation": {"summary": "Accepting the offer of 2500.00 USD from the buyer for example.com reaches a binding agreement that cannot be undone. With this offer, the seller pays the whole marketplace fee. Accepting charges nothing: the buyer then pays the agreed amount through a Spaceship payment link, which shows the fees and the final amount before payment.","domain": "example.com","offer": { "kind": "price", "price": { "amount": "2500.00", "currency": "USD" }, "feeSplit": "seller_pays_all", "leaseToOwn": null }}}
offer.kind è price o lease_to_own; per lease_to_own, price è il totale della proposta e leaseToOwn contiene i suoi pagamenti (total, downPayment, finalPayment, installment, installments), che sono indicati anche nel riepilogo; altrimenti leaseToOwn è null. feeSplit è la ripartizione della commissione del marketplace proposta dall'altra parte con l'offerta (la ripartizione attuale della trattativa quando non ne ha proposta alcuna), uno dei valori feeSplit elencati in marketplace_negotiation_get, oppure null quando non se ne conosce alcuna, nel qual caso il riepilogo la omette. Dopo confirmationResponse: "accept", la risposta è { "status": "accepted", "negotiation": { ... } } con la trattativa nella forma descritta in marketplace_negotiation_get.
status:
confirmation_requiredSignificato: Nulla è stato accettato; conferma con il
confirmationToken.status:
cancelledSignificato:
confirmationResponse: "decline"; nulla è stato modificato.status:
acceptedSignificato: L'offerta è stata accettata ed è stato raggiunto l'accordo.
marketplace_offer_decline — Rifiuta offerta Marketplace
Accesso: Scrittura sensibile — l'acquirente riceve una notifica e il rifiuto non può essere ritirato.
Rifiuta, come venditore, l'ultima offerta dell'acquirente in una trattativa sul tuo annuncio; l'acquirente riceve una notifica e può comunque fare una nuova offerta. La risposta è la trattativa aggiornata. Solo il venditore può rifiutare: l'acquirente riceve business.invalidArgument ("Only the seller can decline an offer."), e una trattativa di cui non fai parte restituisce business.notFound.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.
Restituisce — { "negotiation": { ... } }, la trattativa nella forma descritta in marketplace_negotiation_get; l'offerta rifiutata non è più in buyerOffer:
{"negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "seller","status": "negotiation","buyerOffer": null,"sellerOffer": null,"declinedBuyerOffer": { "amount": "2500.00", "currency": "USD" },"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": null, "proposedBySeller": null, "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": false,"hasUnreadMessages": false,"updatedAt": "2026-10-26T10:15:00.000Z"}}
marketplace_offer_withdraw — Ritira controfferta Marketplace
Accesso: Scrittura sensibile — l'acquirente riceve una notifica e il ritiro non può essere annullato.
Ritira (annulla), come venditore, la tua controfferta pendente o proposta Lease-to-Own in una trattativa sul tuo annuncio; l'acquirente riceve una notifica, la sua ultima offerta resta valida e la trattativa rimane aperta. Questo è il significato di "annulla la mia offerta"; annullare l'intera trattativa è marketplace_negotiation_suspend. La risposta è la trattativa aggiornata. Quando non hai alcuna controfferta o proposta pendente, la risposta è business.conflict ("There is no pending counter-offer or Lease-to-Own proposal to withdraw.") e nulla viene modificato; viene restituita solo quando la trattativa non mostra alcuna tua offerta o proposta, oppure quando tutti i tuoi messaggi in essa sono stati controllati. In una trattativa molto lunga potrebbe non essere possibile controllare tutti i tuoi messaggi in tempo. In tal caso la chiamata restituisce il risultato normale { "status": "lookup_incomplete", "withdrawn": false, "note": "The negotiation's messages could not all be checked in time for your pending counter-offer or Lease-to-Own proposal, so nothing was withdrawn and the negotiation is unchanged." }, nulla viene modificato e puoi richiamare di nuovo. Solo il venditore può ritirare: l'acquirente riceve business.invalidArgument ("Only the seller can withdraw a counter-offer."), e una trattativa di cui non fai parte restituisce business.notFound.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.
Restituisce — { "negotiation": { ... } }, la trattativa nella forma descritta in marketplace_negotiation_get, con l'ultima offerta dell'acquirente ancora valida:
{"negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "seller","status": "negotiation","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-20T11:30:00.000Z" },"sellerOffer": null,"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": "seller_pays_all", "proposedBySeller": null, "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": false,"hasUnreadMessages": false,"updatedAt": "2026-10-26T10:15:00.000Z"}}
marketplace_negotiation_suspend — Annulla (sospendi) trattativa Marketplace
Accesso: Scrittura sensibile — l'acquirente riceve subito una notifica, tutte le offerte aperte vengono chiuse e un deposito Quality Offer o una commissione del broker viene regolato; un ripristino non li riporta indietro.
Annulla, come venditore, un'intera trattativa sul tuo annuncio ("Cancel lead" in SellerHub): l'acquirente riceve una notifica e non può più fare offerte, tutte le offerte aperte al suo interno vengono chiuse e un deposito Quality Offer o una commissione del broker al suo interno viene regolato. Ritirare solo la tua controfferta pendente o proposta Lease-to-Own è marketplace_offer_withdraw, che lascia aperta la trattativa. marketplace_negotiation_restore la riapre, ma non ripristina le offerte, il deposito o la commissione del broker. La risposta è la trattativa aggiornata. Solo il venditore può farlo: l'acquirente riceve business.invalidArgument ("Only the seller can suspend a negotiation."), e una trattativa di cui non fai parte restituisce business.notFound.
Conferma in due passaggi. La prima chiamata non modifica nulla e restituisce status: "confirmation_required" con una confirmation (una frase di summary e il domain) e un confirmationToken. Mostra il riepilogo all'utente e, una volta ottenuto il suo consenso, richiama con lo stesso negotiationId, il token e confirmationResponse: "accept"; "decline" restituisce status: "cancelled" e non modifica nulla. Un token scaduto o appartenente a un altro account restituisce un nuovo confirmation_required invece di un annullamento.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Stringa, fino a 4096 caratteri. Il token di una precedente chiamata a
marketplace_negotiation_suspendper questa trattativa. Omettere alla prima chiamata. Scade dopo poco tempo.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
"accept"o"decline". Ha senso solo con unconfirmationTokenvalido:"accept"annulla la trattativa,"decline"non cambia nulla. Omettere alla prima chiamata.
Restituisce — dopo la prima chiamata (nulla è cambiato):
{"status": "confirmation_required","confirmationToken": "<opaque confirmation token>","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_negotiation_suspend again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","confirmation": {"summary": "Cancel the negotiation on example.com? The buyer is notified and can no longer make offers, every open offer in it closes, and a Quality Offer deposit or broker commission in it is settled. It can be restored later with marketplace_negotiation_restore, but a restore does not bring back the offers, the deposit or the broker commission.","domain": "example.com"}}
Dopo la seconda chiamata accettata — { "negotiation": { ... } }, la trattativa nella forma descritta in marketplace_negotiation_get:
{"negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "seller","status": "suspended","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-20T11:30:00.000Z" },"sellerOffer": null,"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": "seller_pays_all", "proposedBySeller": null, "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": true,"hasUnreadMessages": false,"updatedAt": "2026-10-26T10:15:00.000Z"}}
marketplace_negotiation_restore — Ripristina trattativa Marketplace
Accesso: Scrittura.
Ripristina, in qualità di venditore, una trattativa sospesa sul tuo annuncio; l'acquirente viene avvisato e la trattativa continua da dove si era fermata. La risposta è la trattativa aggiornata. Solo il venditore può ripristinare: l'acquirente riceve business.invalidArgument ("Only the seller can restore a negotiation."), e una trattativa di cui non fai parte risponde con business.notFound.
Parametro:
negotiationIdObbligatorio: Sì
Tipo e vincoli: UUID della trattativa, come restituito da
marketplace_negotiations_listomarketplace_negotiation_get.
Restituisce — { "negotiation": { ... } }, la trattativa nella forma descritta in marketplace_negotiation_get:
{"negotiation": {"negotiationId": "3f6b2c1e-8a4d-4f2b-9c7e-1d5a6b7c8d9e","domain": "example.com","yourRole": "seller","status": "negotiation","buyerOffer": { "amount": "2500.00", "currency": "USD", "madeAt": "2026-10-20T11:30:00.000Z" },"sellerOffer": null,"declinedBuyerOffer": null,"acceptedOffer": null,"leaseToOwn": null,"feeSplit": { "proposedByBuyer": "seller_pays_all", "proposedBySeller": null, "agreed": null },"amountToPay": null,"deposit": null,"isSuspended": false,"hasUnreadMessages": false,"updatedAt": "2026-10-26T10:20:00.000Z"}}
Marketplace: offerte SafePay, leasing e ricerca
Offerte SafePay, accordi lease-to-own di cui fai parte e ricerca tra ciò che altri venditori mettono in elenco.
marketplace_safepay_deals_list — Elenca offerte SafePay
Accesso: Lettura.
Elenca le tue offerte SafePay, dalla più recente, come venditore, acquirente o entrambi, facoltativamente filtrate per stato o per parte del nome di dominio. Ogni offerta riporta il suo stato, il prezzo, chi paga cosa e il tuo ruolo al suo interno. Per il passaggio successivo di un'offerta e il tuo link ad essa, leggi l'offerta con marketplace_safepay_deal_get.
Senza role, le offerte in cui sei il venditore e quelle in cui sei l'acquirente vengono unite dalla più recente, ciascuna etichettata con il tuo role, e total conta entrambe. In questa modalità sono raggiungibili solo le prime 100 offerte: limit più offset non possono superare 100. Entrambi i lati vengono letti entro un unico limite di tempo: quando uno dei lati non può essere letto in tempo, la risposta contiene le offerte dell'altro lato, total conta solo quel lato, e unavailable indica il lato che non è stato letto (["seller"] o ["buyer"]); unavailable viene omesso quando ogni lato è stato letto. Quando nessun lato richiesto può essere letto in tempo, la chiamata fallisce con infrastructure.serviceUnavailable ("The marketplace did not answer in time."). Un filtro che non corrisponde a nulla restituisce un elenco vuoto, non un errore. I dettagli di contatto dell'altra parte non vengono mai restituiti.
Parametro:
roleObbligatorio: No
Tipo e vincoli:
sellerobuyer: solo offerte in cui sei questa parte. Omettere per entrambe (alloralimit+offset≤ 100).Parametro:
statusObbligatorio: No
Tipo e vincoli: Array di 1–10 stati distinti:
active,pending_seller_confirm,pending_buyer_confirm,pending_seller_reconfirm,awaiting_payment,processing,verification,purchased,deactivated,expired.Parametro:
domainObbligatorio: No
Tipo e vincoli: Stringa, 4–253 caratteri. Solo offerte il cui nome di dominio contiene questo testo.
Parametro:
limitObbligatorio: No
Tipo e vincoli: Intero, 1–50. Predefinito
20.Parametro:
offsetObbligatorio: No
Tipo e vincoli: Intero, 0 o superiore. Predefinito
0.
Restituisce — { items, total }, dove total è il numero di offerte corrispondenti, non la dimensione della pagina:
{"items": [{"dealId": "5f0c2a9e-7d41-4b8a-9c3e-2e6f1a7b9d10","domain": "greatdomain.com","role": "seller","status": "pending_seller_confirm","type": "buy_now","openedBy": "buyer","price": { "amount": "1000.00", "currency": "USD" },"buyerPays": { "amount": "1050.00", "currency": "USD" },"sellerReceives": { "amount": "1000.00", "currency": "USD" },"paymentMethod": "credit_card","createdAt": "2026-10-26T10:00:00.000Z","validUntil": "2026-11-02T10:00:00.000Z","negotiationId": null}],"total": 7}
Campo:
roleSignificato: La tua parte nell'offerta:
sellerobuyer.Campo:
typeSignificato:
buy_now,lease_to_ownomake_offer.Campo:
openedBySignificato: Chi ha aperto l'offerta:
seller,buyerobroker.Campo:
price,buyerPays,sellerReceivesSignificato:
{ amount, currency }, oppurenullquando non impostato.Campo:
paymentMethodSignificato:
credit_card,paypal,account_funds,btc_pay,wire_transfer,alipay, oppurenullquando non ne è stato ancora scelto nessuno.Campo:
validUntilSignificato: Quando l'offerta scade se non viene completata entro allora.
Campo:
negotiationIdSignificato: La trattativa marketplace da cui proviene l'offerta, oppure
null.Campo:
unavailableSignificato: Solo quando un lato non ha potuto essere letto in tempo:
["seller"]o["buyer"].
marketplace_safepay_deal_get — Ottieni offerta SafePay
Accesso: Lettura.
Legge una delle tue offerte SafePay per id: il suo stato, i termini, chi paga cosa, il tuo ruolo, il passaggio successivo per te, il tuo link all'offerta e counterpartyLink, il link dell'altra parte da inviare a loro. I dettagli di contatto dell'altra parte (email, telefono, id account) non vengono mai restituiti.
Un'offerta di cui non fai parte risponde con business.notFound (The SafePay deal was not found.), esattamente come un'offerta che non esiste, quindi la risposta non indica mai se un id offerta appartiene a qualcun altro. Un id che non è un UUID viene rifiutato con application.request.badRequest.
Parametro:
dealIdObbligatorio: Sì
Tipo e vincoli: UUID dell'offerta, come restituito da
marketplace_safepay_deals_list.
Restituisce — { "deal": { ... } }:
{"deal": {"dealId": "5f0c2a9e-7d41-4b8a-9c3e-2e6f1a7b9d10","domain": "greatdomain.com","role": "seller","status": "pending_seller_confirm","type": "buy_now","openedBy": "buyer","price": { "amount": "1000.00", "currency": "USD" },"totalPrice": { "amount": "1050.00", "currency": "USD" },"buyerPays": { "amount": "1050.00", "currency": "USD" },"sellerReceives": { "amount": "1000.00", "currency": "USD" },"feeSplit": "buyer_pays_all","paymentMethod": "credit_card","canChangePaymentMethod": false,"needsSellerReconfirmation": false,"leaseTerms": null,"createdAt": "2026-10-26T10:00:00.000Z","updatedAt": "2026-10-26T10:05:00.000Z","validUntil": "2026-11-02T10:00:00.000Z","domainExpiresAt": "2027-10-28T10:00:00.000Z","domainExpiresSoon": false,"negotiationId": null,"link": "https://www.spaceship.com/safepay/...","counterpartyLink": "https://www.spaceship.com/safepay/...","nextStep": "You need to confirm the terms before the deal can go ahead."}}
Campo:
roleSignificato: La tua parte nell'offerta:
sellerobuyer.Campo:
statusSignificato: Uno degli stati elencati in
marketplace_safepay_deals_list.Campo:
type/openedBySignificato: Come in
marketplace_safepay_deals_list.Campo:
price/totalPriceSignificato: Il prezzo dell'offerta e il totale comprensivo della commissione SafePay;
{ amount, currency }oppurenull.Campo:
buyerPays/sellerReceivesSignificato: Ciò che ciascuna parte paga o riceve dopo la commissione;
{ amount, currency }oppurenull.Campo:
feeSplitSignificato: Chi paga la commissione SafePay, con gli stessi valori usati dalle trattative:
seller_pays_all,seller_pays_most(75/25),even_split,buyer_pays_most(25/75),buyer_pays_all, oppurenull.Campo:
paymentMethodSignificato: Il metodo di pagamento dell'acquirente, oppure
null.canChangePaymentMethodindica se può ancora essere modificato.Campo:
needsSellerReconfirmationSignificato:
truequando il venditore deve confermare nuovamente i termini.Campo:
leaseTermsSignificato: Per un'offerta lease-to-own:
{ total, downPayment, installment, installments }(downPaymentpuò esserenull);nullaltrimenti.Campo:
validUntilSignificato: Quando l'offerta scade se non viene completata entro allora; la stessa data restituita da
marketplace_safepay_deals_list.Campo:
domainExpiresAt/domainExpiresSoonSignificato: Quando scade la registrazione del dominio stesso (oppure
nullquando sconosciuta o registrata fuori da Spaceship), etruequando la registrazione è già in redemption o in fase di eliminazione. Questa non è la scadenza dell'offerta.Campo:
linkSignificato: Il tuo link all'offerta, dove l'acquirente paga.
Campo:
counterpartyLinkSignificato: Il link dell'altra parte all'offerta, da inviare a loro (per un'offerta che hai aperto come venditore, il link dell'acquirente, dove l'acquirente paga).
Campo:
nextStepSignificato: Una frase che ti dice cosa succede dopo dal tuo lato, per esempio
Waiting for the buyer to confirm the terms.
marketplace_safepay_deal_create — Apri offerta SafePay
Accesso: Scrittura sensibile — apre un'offerta che l'altra parte può accettare come vincolante.
Apre un'offerta SafePay per un dominio, come venditore (per un dominio che possiedi) o come acquirente (per un dominio posseduto da qualcun altro). L'apertura di un'offerta non comporta alcun addebito: l'altra parte viene avvisata e deve ancora confermare i termini, e l'acquirente paga successivamente tramite il link dell'offerta. Scegli ogni termine con l'utente: il prezzo, chi paga la commissione SafePay e, per lease_to_own, l'anticipo e il numero di rate. Nulla viene compilato automaticamente.
Prima dell'apertura, lo strumento cerca una tua offerta, nello stesso ruolo, per lo stesso dominio, che ne blocchi una nuova: un'offerta che sia active, awaiting_payment, processing o verification, oppure un'offerta non ancora confermata (uno stato pending_*) allo stesso prezzo, che molto probabilmente è questa stessa offerta aperta da una chiamata precedente. Un'offerta non ancora confermata a un prezzo diverso non blocca una nuova offerta, come in SellerHub. Se esiste un'offerta bloccante, non viene aperta una seconda offerta e la risposta è un risultato normale con status: "already_open", quell'offerta e una nota. Se questa ricerca non può essere completata, l'offerta viene aperta come sarebbe senza di essa.
Il counterpartyEmail viene usato solo per notificare l'altra parte: non viene mai ripetuto nella risposta. Termini incoerenti (un prezzo con più di due decimali, termini di leasing mancanti o presenti in un'offerta buy_now, un acquirente senza counterpartyEmail o paymentMethod, un venditore con paymentMethod) vengono rifiutati con business.invalidArgument e una voce validationErrors per campo, prima che venga inviato qualsiasi cosa. Un rifiuto da parte di SafePay stesso, per esempio quando il dominio ha già un'offerta concordata, risponde con business.conflict. Se la chiamata fallisce con infrastructure.serviceUnavailable o infrastructure.outcomeUnknown, l'offerta potrebbe essere stata aperta: elenca le tue offerte con marketplace_safepay_deals_list prima di aprirla di nuovo.
Parametro:
roleObbligatorio: Sì
Tipo e vincoli:
seller(possiedi il dominio) obuyer(lo possiede qualcun altro).Parametro:
domainObbligatorio: Sì
Tipo e vincoli: Stringa, 4–253 caratteri. Accetta Unicode (IDN) o ASCII (A-label), normalizzato in punycode.
Parametro:
typeObbligatorio: Sì
Tipo e vincoli:
buy_now(un unico pagamento del prezzo) olease_to_own(pagato a rate).Parametro:
priceObbligatorio: Sì
Tipo e vincoli: Importo in USD come stringa decimale con al massimo due decimali, superiore a 0 e fino a 10000000, per esempio
"1500.00". Perlease_to_ownè il totale del leasing.Parametro:
feePaidByObbligatorio: Sì
Tipo e vincoli: Chi paga la commissione SafePay:
seller(tutta),seller_pays_most(venditore 75%, acquirente 25%),split(metà ciascuno),buyer_pays_most(venditore 25%, acquirente 75%) obuyer(tutta).Parametro:
ltoDownPaymentPercentObbligatorio: Condizionale
Tipo e vincoli: Intero, 0–99: anticipo come percentuale del totale del leasing. Obbligatorio per
lease_to_own, non consentito perbuy_now.Parametro:
ltoInstallmentsObbligatorio: Condizionale
Tipo e vincoli: Intero, 1–120: numero di rate. Obbligatorio per
lease_to_own, non consentito perbuy_now.Parametro:
counterpartyEmailObbligatorio: Condizionale
Tipo e vincoli: Indirizzo email dell'altra parte, fino a 254 caratteri; viene notificata dell'offerta. Obbligatorio quando
roleèbuyer, facoltativo quandoroleèseller. Non viene mai restituito nella risposta.Parametro:
paymentMethodObbligatorio: Condizionale
Tipo e vincoli:
credit_card,paypal,account_funds,btc_pay,wire_transferoalipay: il metodo con cui l'acquirente pagherà. Obbligatorio quandoroleèbuyer; facoltativo quandoroleèseller, che può sceglierlo in anticipo per l'acquirente.
Restituisce — un'offerta appena aperta:
{"deal": {"dealId": "5f0c2a9e-7d41-4b8a-9c3e-2e6f1a7b9d10","domain": "greatdomain.com","role": "seller","status": "pending_buyer_confirm","type": "buy_now","price": { "amount": "1500.00", "currency": "USD" },"feePaidBy": "buyer","link": "https://www.spaceship.com/safepay/...","counterpartyLink": "https://www.spaceship.com/safepay/...","nextStep": "Waiting for the buyer to confirm the terms."}}
feePaidBy è null quando la ripartizione della commissione dell'offerta non è uno dei cinque valori feePaidBy. link è il tuo link all'offerta e counterpartyLink quello dell'altra parte, da inviare a loro.
Quando hai già un'offerta aperta per il dominio in quel ruolo, l'offerta ha la forma restituita da marketplace_safepay_deals_list:
{"status": "already_open","deal": {"dealId": "5f0c2a9e-7d41-4b8a-9c3e-2e6f1a7b9d10","domain": "greatdomain.com","role": "seller","status": "pending_buyer_confirm","type": "buy_now","openedBy": "seller","price": { "amount": "1500.00", "currency": "USD" },"buyerPays": { "amount": "1575.00", "currency": "USD" },"sellerReceives": { "amount": "1500.00", "currency": "USD" },"paymentMethod": null,"createdAt": "2026-10-26T10:00:00.000Z","validUntil": "2026-11-02T10:00:00.000Z","negotiationId": null},"note": "You already have an open SafePay deal for this domain, so no new deal was opened. Read it with marketplace_safepay_deal_get."}
marketplace_safepay_deal_confirm — Conferma offerta SafePay
Accesso: Scrittura sensibile — raggiunge un accordo vincolante.
Conferma i termini di un accordo SafePay aperto dall'altra parte e in attesa di te: il venditore conferma un accordo aperto dall'acquirente (o conferma di nuovo dopo che l'acquirente ha cambiato il metodo di pagamento), l'acquirente conferma un accordo aperto dal venditore e può scegliere il metodo di pagamento. La conferma non comporta alcun addebito; l'acquirente paga successivamente tramite il link dell'accordo.
Conferma in due passaggi. La prima chiamata non cambia nulla e restituisce status: "confirmation_required" con un summary dei termini (il dominio, il tuo ruolo, un pagamento unico o le rate, quanto paga l'acquirente e quanto riceve il venditore, e il metodo di pagamento che hai scelto) e un confirmationToken. Mostra il riepilogo all'utente, poi richiama con gli stessi argomenti, il token e confirmationResponse: "accept" per confermare, oppure "decline" per interrompere; decline restituisce status: "cancelled" e non cambia nulla. Il token scade dopo poco tempo ed è vincolato agli argomenti e ai termini dell'accordo al momento della sua emissione: se non è più valido, oppure se nel frattempo sono cambiati il prezzo, gli importi, la ripartizione delle commissioni, il metodo di pagamento o lo stato, la chiamata restituisce un nuovo confirmation_required invece di confermare.
Un accordo di cui non fai parte restituisce
business.notFound, esattamente come uno che non esiste.Un accordo che non è in attesa della tua conferma restituisce
business.conflict. Questo include un accordo che è in attesa della conferma dell'altra parte.Un
paymentMethodinviato dal venditore, o da un acquirente che conferma un accordo aperto da lui stesso, viene rifiutato conbusiness.invalidArgument.Dopo
infrastructure.serviceUnavailableoinfrastructure.outcomeUnknown, l'accordo potrebbe essere stato confermato. Leggilo conmarketplace_safepay_deal_getprima di confermare di nuovo.
Parametro:
dealIdObbligatorio: Sì
Tipo e vincoli: UUID dell'accordo, come restituito da
marketplace_safepay_deals_list.Parametro:
paymentMethodObbligatorio: No
Tipo e vincoli:
credit_card,paypal,account_funds,btc_pay,wire_transferoalipay. Solo l'acquirente può impostarlo, e solo quando conferma un accordo aperto dal venditore.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Stringa, fino a 4096 caratteri, restituita da una chiamata precedente di questo strumento per questi argomenti esatti. Omettila nella prima chiamata; reinviala invariata insieme a
confirmationResponse.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
acceptodecline. Ha senso solo insieme a unconfirmationTokenvalido. Omettilo nella prima chiamata.
Restituisce — dopo la prima chiamata (nulla confermato):
{"status": "confirmation_required","confirmationToken": "eyJ2IjoxLCJ...","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_safepay_deal_confirm again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","summary": "Confirm the SafePay deal for greatdomain.com as the seller: a single payment. The buyer pays USD 1050.00. The seller receives USD 1000.00. Confirming commits you to these terms; the payment itself is made separately through the deal link."}
Dopo accept, { "deal": { ... } } nella forma restituita da marketplace_safepay_deal_get, con il nuovo stato (per esempio active o awaiting_payment) e il corrispondente nextStep. Dopo decline:
{ "status": "cancelled", "note": "Nothing was changed because the action was not confirmed." }
status:
confirmation_requiredSignificato: Nulla è ancora cambiato; mostra
summarye richiama con il token.status:
cancelledSignificato: Hai rifiutato; nulla è cambiato.
marketplace_leases_list — Elenca i leasing
Accesso: Lettura.
Elenca i contratti di lease-to-own di cui fai parte, dal più recente al meno recente: i domini che prendi in leasing come acquirente e i domini che concedi in leasing come venditore. Ogni leasing include il suo stato, quanto è stato pagato e quanto resta, le rate e il prossimo pagamento.
Senza role, entrambi i lati vengono uniti dal più recente al meno recente, ogni leasing è etichettato con il tuo role, e total conta entrambi; in questa modalità limit più offset non possono superare 100. Entrambi i lati vengono letti entro un unico limite di tempo: quando uno dei lati non può essere letto in tempo, la risposta contiene i leasing dell'altro lato, total conta solo quel lato, e unavailable indica il lato che non è stato letto (["seller"] o ["buyer"]); unavailable viene omesso quando ogni lato è stato letto. Quando nessuno dei lati richiesti può essere letto in tempo, la chiamata fallisce con infrastructure.serviceUnavailable ("The marketplace did not answer in time."). Un filtro che non corrisponde a nulla restituisce un elenco vuoto, non un errore. I dettagli dell'account dell'altra parte non vengono mai restituiti.
Parametro:
roleObbligatorio: No
Tipo e vincoli:
buyer(i domini che prendi in leasing) oseller(i domini che concedi in leasing). Ometti per entrambi (alloralimit+offset≤ 100).Parametro:
stateObbligatorio: No
Tipo e vincoli: Array di 1–5 stati distinti:
active,cancelling,cancelled,failed_payment,completed.Parametro:
domainObbligatorio: No
Tipo e vincoli: Stringa, 1–253 caratteri. Solo i leasing il cui nome di dominio contiene questo testo.
Parametro:
limitObbligatorio: No
Tipo e vincoli: Intero, 1–50. Predefinito
20.Parametro:
offsetObbligatorio: No
Tipo e vincoli: Intero, 0 o superiore. Predefinito
0.
Restituisce — { items, total }:
{"items": [{"leaseId": "8c2e4f61-1a3b-4d5c-9e7f-0b1c2d3e4f50","domain": "leasedname.io","role": "buyer","state": "active","total": { "amount": "1200.00", "currency": "USD" },"paid": { "amount": "300.00", "currency": "USD" },"left": { "amount": "900.00", "currency": "USD" },"percentPaid": 25,"isPaidOff": false,"installment": { "amount": "100.00", "currency": "USD" },"installments": 12,"installmentsPaid": 3,"downPayment": { "amount": "120.00", "currency": "USD" },"finalPayment": null,"nextPayment": {"amount": { "amount": "100.00", "currency": "USD" },"date": "2026-11-01T10:00:00.000Z","type": "installment"},"lastPaymentDate": "2026-10-01T10:00:00.000Z","cancellationReason": null,"canceledAt": null,"createdAt": "2026-08-01T10:00:00.000Z","negotiationId": "6f1d1c2e-3b4a-4c5d-8e9f-0a1b2c3d4e5f"}],"total": 9}
Campo:
roleSignificato: Il tuo lato:
buyeroseller.Campo:
stateSignificato:
active,cancelling,cancelled,failed_paymentocompleted.Campo:
total/paid/leftSignificato: Il totale del leasing, l'importo pagato finora e l'importo rimanente;
percentPaidè la quota pagata in percentuale.Campo:
installment/installments/installmentsPaidSignificato: L'importo di una rata, quante sono e quante sono state pagate.
Campo:
downPayment/finalPaymentSignificato:
{ amount, currency }, oppurenullquando il leasing non ne ha.Campo:
nextPayment.typeSignificato:
down_payment,installment,final_payment,paid_offounknown.Campo:
cancellationReasonSignificato:
seller_cancelled,buyer_cancelled,support_cancelled, oppurenull;canceledAtviene impostato insieme ad esso.Campo:
negotiationIdSignificato: La negoziazione del marketplace da cui proviene il leasing.
Campo:
unavailableSignificato: Solo quando un lato non ha potuto essere letto in tempo:
["seller"]o["buyer"].
marketplace_lease_get — Ottieni leasing
Accesso: Lettura.
Legge per id un contratto di lease-to-own di cui fai parte: il suo stato, l'importo pagato e quello rimanente, le rate, il prossimo pagamento e il tuo ruolo al suo interno. Usalo per seguire lo stato di un leasing, per esempio mentre passa da cancelling a cancelled.
Un leasing di cui non fai parte restituisce business.notFound (The lease was not found.), esattamente come un leasing che non esiste.
Parametro:
leaseIdObbligatorio: Sì
Tipo e vincoli: UUID del leasing, come restituito da
marketplace_leases_list.
Restituisce — { "lease": { ... } }, un leasing nella forma restituita da marketplace_leases_list:
{"lease": {"leaseId": "8c2e4f61-1a3b-4d5c-9e7f-0b1c2d3e4f50","domain": "leasedname.io","role": "buyer","state": "active","total": { "amount": "1200.00", "currency": "USD" },"paid": { "amount": "300.00", "currency": "USD" },"left": { "amount": "900.00", "currency": "USD" },"percentPaid": 25,"isPaidOff": false,"installment": { "amount": "100.00", "currency": "USD" },"installments": 12,"installmentsPaid": 3,"downPayment": { "amount": "120.00", "currency": "USD" },"finalPayment": null,"nextPayment": {"amount": { "amount": "100.00", "currency": "USD" },"date": "2026-11-01T10:00:00.000Z","type": "installment"},"lastPaymentDate": "2026-10-01T10:00:00.000Z","cancellationReason": null,"canceledAt": null,"createdAt": "2026-08-01T10:00:00.000Z","negotiationId": "6f1d1c2e-3b4a-4c5d-8e9f-0a1b2c3d4e5f"}}
marketplace_lease_cancel — Annulla leasing
Accesso: Scrittura sensibile — non può essere annullato; gli importi già pagati non vengono rimborsati.
Annulla un contratto di lease-to-own come acquirente. Le rate rimanenti si interrompono, gli importi già pagati non vengono rimborsati e il dominio torna al venditore. Questo non può essere annullato da qui. Solo l'acquirente può annullare, e solo un leasing active.
Conferma in due passaggi. La prima chiamata non cambia nulla e restituisce status: "confirmation_required" con un summary (il dominio, quanto hai pagato, quanto resta, e che gli importi già pagati non vengono rimborsati) e un confirmationToken. Mostra il riepilogo all'utente, poi richiama con lo stesso leaseId, il token e confirmationResponse: "accept" per annullare, oppure "decline" per interrompere; decline restituisce status: "cancelled" e non cambia nulla. Il token scade dopo poco tempo ed è vincolato al leasing com'era quando il token è stato emesso: se non è più valido, oppure se nel frattempo è stata pagata una rata, la chiamata restituisce un nuovo confirmation_required invece di annullare.
Un leasing di cui non fai parte restituisce business.notFound, esattamente come uno che non esiste. Come venditore ottieni business.conflict (Only the buyer can cancel a lease.), e un leasing che non è active restituisce business.conflict (The lease is not active, so it cannot be cancelled.). Se la chiamata fallisce con infrastructure.serviceUnavailable o infrastructure.outcomeUnknown, il leasing potrebbe essere stato annullato: leggilo con marketplace_lease_get prima di annullare di nuovo.
Parametro:
leaseIdObbligatorio: Sì
Tipo e vincoli: UUID del leasing, come restituito da
marketplace_leases_list.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Stringa, fino a 4096 caratteri, restituita da una chiamata precedente di questo strumento per questo leasing. Omettila nella prima chiamata; reinviala invariata insieme a
confirmationResponse.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
acceptodecline. Ha senso solo insieme a unconfirmationTokenvalido. Omettilo nella prima chiamata.
Restituisce — dopo la prima chiamata (nulla annullato):
{"status": "confirmation_required","confirmationToken": "eyJ2IjoxLCJ...","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_lease_cancel again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","summary": "Cancel the lease-to-own of leasedname.io. You have paid USD 300.00 and USD 900.00 is left. Amounts already paid are not refunded and the domain goes back to the seller. This cannot be undone from here."}
Dopo accept:
{"status": "cancel_accepted","leaseId": "8c2e4f61-1a3b-4d5c-9e7f-0b1c2d3e4f50","domain": "leasedname.io","note": "The cancellation was accepted. Read the lease with marketplace_lease_get to follow its state."}
status:
confirmation_requiredSignificato: Nulla è ancora cambiato; mostra
summarye richiama con il token.status:
cancelledSignificato: Hai rifiutato; nulla è cambiato.
{ "status": "cancelled", "note": "Nothing was changed because the action was not confirmed." }status:
cancel_acceptedSignificato: L'annullamento è stato accettato. Il leasing può mostrare
cancellingper un po' prima di arrivare acancelled; seguilo conmarketplace_lease_get.
marketplace_listings_search — Cerca inserzioni del marketplace
Accesso: Lettura.
Cerca nel marketplace Spaceship i domini messi in vendita da altre persone tramite una parola chiave obbligatoria, restringendo per TLD, fascia di prezzo in USD in dollari interi, lunghezza del nome e opzione di acquisto (Buy Now, offerte, lease-to-own). Per cercare più parole, effettua una chiamata per ogni parola. I risultati arrivano dal più recente al meno recente. Le tue inserzioni vengono escluse. Ogni risultato include il prezzo Buy Now, l'offerta minima e i termini del lease-to-own quando il venditore li ha impostati, oltre all'id della tua negoziazione per quel dominio, se ne hai una.
Una ricerca che non corrisponde a nulla restituisce { "items": [] }, non un errore. Una parola chiave mancante, una parola chiave che non è una singola parola di almeno 3 lettere o cifre, un intervallo con il minimo superiore al massimo, un TLD ripetuto (confrontato senza distinzione tra maiuscole e minuscole), più di 10 TLD, un prezzo frazionario, un prezzo, una lunghezza, limit o offset fuori dal relativo intervallo nella tabella sottostante, oppure un parametro non elencato sotto, vengono rifiutati con application.request.badRequest.
Parametro:
searchObbligatorio: Sì
Tipo e vincoli: Stringa, fino a 253 caratteri. Una parola chiave da cercare nel nome di dominio: una singola parola senza spazi, virgole o punti e virgola, contenente almeno 3 lettere o cifre consecutive. Per più parole, effettua una chiamata per ogni parola.
Parametro:
tldsObbligatorio: No
Tipo e vincoli: Array di 1–10 TLD distinti senza il punto, per esempio
["com", "io"]. Lettere, cifre, trattini e punti interni (co.uk).Parametro:
minPriceObbligatorio: No
Tipo e vincoli: Intero, 0–10000000. Prezzo minimo in dollari USA interi. Non superiore a
maxPrice.Parametro:
maxPriceObbligatorio: No
Tipo e vincoli: Intero, 0–10000000. Prezzo massimo in dollari USA interi.
Parametro:
minLengthObbligatorio: No
Tipo e vincoli: Intero, 1–63. Lunghezza minima del nome, contando il nome senza il suo TLD. Non superiore a
maxLength.Parametro:
maxLengthObbligatorio: No
Tipo e vincoli: Intero, 1–63. Lunghezza massima del nome, contando il nome senza il suo TLD.
Parametro:
buyNowObbligatorio: No
Tipo e vincoli: Booleano.
true: solo domini che puoi acquistare subito;false: solo domini senza Buy Now.Parametro:
offersObbligatorio: No
Tipo e vincoli: Booleano.
true: solo domini che accettano offerte;false: solo domini che non le accettano.Parametro:
leaseToOwnObbligatorio: No
Tipo e vincoli: Booleano.
true: solo domini con lease-to-own;false: solo domini senza di esso.Parametro:
limitObbligatorio: No
Tipo e vincoli: Intero, 1–50. Predefinito
20.Parametro:
offsetObbligatorio: No
Tipo e vincoli: Intero, 0–1000. Predefinito
0.
Restituisce — { items }, una pagina di inserzioni corrispondenti. La risposta non include un conteggio totale: una pagina con meno inserzioni di limit è l'ultima.
{"items": [{"domain": "BestShop.io","tld": "io","buyNow": true,"buyNowPrice": { "amount": "900.00", "currency": "USD" },"minOffer": { "amount": "200.00", "currency": "USD" },"leaseToOwn": {"total": { "amount": "1200.00", "currency": "USD" },"downPayment": { "amount": "120.00", "currency": "USD" },"installment": { "amount": "100.00", "currency": "USD" },"installments": 12},"negotiationId": null}]}
Campo:
domainSignificato: Il dominio come lo mostra il venditore (può contenere maiuscole).
Campo:
tldSignificato: Il TLD del dominio, senza il punto.
Campo:
buyNow/buyNowPriceSignificato: Se può essere acquistato subito, e il prezzo Buy Now oppure
null.Campo:
minOfferSignificato: L'offerta minima che il venditore accetta, oppure
null.Campo:
leaseToOwnSignificato:
{ total, downPayment, installment, installments }quando il venditore offre lease-to-own (downPaymentpuò esserenull);nullaltrimenti.Campo:
negotiationIdSignificato: L'id della tua negoziazione aperta per questo dominio, oppure
null.
marketplace_purchase_link — Ottieni il link di pagamento del Marketplace
Accesso: Scrittura.
Ti fornisce, come acquirente, un link per pagare su Spaceship un dominio del marketplace. L'emissione di un link non comporta alcun addebito: lo apri, controlli le commissioni e l'importo finale nella pagina di pagamento di Spaceship e paghi lì. Il link riflette l'inserzione, la negoziazione o l'accordo così come sono al momento dell'apertura, ed è per il tuo account Spaceship. Richiamarlo è sicuro e fornisce un link aggiornato.
Passa esattamente uno tra domain, negotiationId o dealId:
domain: un dominio che un altro venditore mette in vendita con Buy Now. Il link è per il prezzo Buy Now.negotiationId: una negoziazione in cui tu sei l'acquirente e si è raggiunto un accordo. Il link è per l'importo concordato, oppure per i termini Lease-to-Own concordati quando l'accordo è un leasing.dealId: un accordo SafePay in cui tu sei l'acquirente e il cui stato èactive, l'unico stato in cui l'acquirente può pagare. La risposta è il link di pagamento dell'accordo stesso. Un accordo in statoawaiting_payment(l'acquirente ha scelto bonifico bancario o BTCPay e il supporto Spaceship non ha ancora confermato i fondi) non può ancora essere pagato tramite il link.
Con domain o negotiationId, passa anche contactId: uno dei tuoi contatti salvati, da contacts_list, oppure uno nuovo da contacts_save. Diventa il contatto registrante, amministrativo, tecnico e di fatturazione del dominio quando il dominio viene spostato nel tuo account. Un dealId non accetta contactId, perché viene restituito il link dell'accordo stesso; la sua pagina di pagamento richiede i contatti e non può essere completata se nel tuo account non ne è salvato nessuno.
Nessuno, o più di uno, dei tre viene rifiutato con application.request.badRequest ("Pass exactly one of domain, negotiationId or dealId."), e un domain che non è un nome di dominio con business.invalidArgument ("The domain must be a domain name such as "example.com"."). Un contactId mancante con domain o negotiationId, oppure un contactId con dealId, viene rifiutato con application.request.badRequest prima di qualsiasi ricerca ("contactId is required with domain or negotiationId." oppure "contactId is not used with dealId."). Un contactId che non è uno dei tuoi contatti restituisce business.notFound ("Contact not found in this account."), come contacts_get, e non viene creato alcun link.
Parametro:
domainObbligatorio: Condizionale
Tipo e vincoli: Stringa, 3–253 caratteri. Un dominio messo in vendita con Buy Now, Unicode o ASCII. Esattamente uno dei tre.
Parametro:
negotiationIdObbligatorio: Condizionale
Tipo e vincoli: ID di una negoziazione, come restituito da
marketplace_negotiations_list. Esattamente uno dei tre.Parametro:
dealIdObbligatorio: Condizionale
Tipo e vincoli: UUID di un accordo SafePay, come restituito da
marketplace_safepay_deals_list. Esattamente uno dei tre.Parametro:
contactIdObbligatorio: Condizionale
Tipo e vincoli: ID contatto (27–32 caratteri alfanumerici), come restituito da
contacts_listocontacts_save. Obbligatorio condomainonegotiationId; non consentito condealId.
Restituisce — link_ready con il link, oppure nothing_to_buy:
{"status": "link_ready","case": "buy_now","url": "https://www.spaceship.com/...","domain": "bestshop.io","buyNowPrice": { "amount": "900.00", "currency": "USD" },"note": "Issuing this link charged nothing. Open it to pay on Spaceship: the payment page shows the fees and the final amount. The link reflects the listing, negotiation or deal as it is when it is opened, and it is for your own Spaceship account. The contact given as contactId becomes the domain's registrant, admin, tech and billing contact when the domain moves to your account."}
Campo:
caseSignificato:
buy_now,agreement,agreement_lease_to_ownosafepay.Campo:
urlSignificato: Il link di pagamento da aprire.
Campo:
domainSignificato: Il dominio, quando è noto.
Campo:
buyNowPriceSignificato: Con
buy_now: il prezzo Buy Now dell'inserzione.Campo:
acceptedOfferAmountSignificato: Con
agreement: l'importo concordato.Campo:
leaseToOwnSignificato: Con
agreement_lease_to_own:{ total, downPayment, finalPayment, installment, installments }come concordato (downPaymentefinalPaymentpossono esserenull).Campo:
amountBuyerPaysSignificato: Con
safepay: quanto l'accordo indica che paga l'acquirente.
Viene mostrato solo il prezzo indicato dall'inserzione, dalla negoziazione o dall'accordo; la risposta non aggiunge mai commissioni né calcola un totale, e un prezzo non noto viene omesso.
{"status": "nothing_to_buy","reason": "no_agreement","note": "The negotiation has no agreement yet, so there is nothing to pay for."}
reason:
buy_now_offSignificato: Il dominio è in vendita, ma Buy Now è disattivato. Puoi invece fare un'offerta.
reason:
lease_to_own_onlySignificato: Il dominio è offerto solo con Lease-to-Own, che qui non può essere acquistato tramite un link di pagamento. Puoi invece fare un'offerta.
reason:
no_agreementSignificato: La negoziazione non ha ancora un accordo.
reason:
not_the_buyerSignificato: Sei il venditore; solo l'acquirente paga.
reason:
deal_not_payableSignificato: L'accordo SafePay non è in stato
active, quindi al momento non può essere pagato tramite il suo link.
reason è un elenco chiuso che può ampliarsi: tratta un valore che non conosci come "niente da pagare in questo momento".
Una negoziazione o un accordo di cui non fai parte restituisce business.notFound esattamente come uno che non esiste, e un dominio che non è in vendita restituisce business.notFound con "The domain is not listed for sale.". Quando il link non può essere preparato, la chiamata fallisce con infrastructure.serviceUnavailable ("The payment link could not be prepared. Nothing was charged."); creare un link non comporta alcun addebito, quindi ripetere la chiamata è sicuro (vedi Retrying writes).
Marketplace: operazioni in blocco
Operazioni su molte inserzioni o negoziazioni contemporaneamente. Vengono eseguite dopo la chiamata: la risposta è status: "working" con un handle dell'operazione da seguire con async_operation_get. Per account può essere eseguita una sola operazione in blocco alla volta.
marketplace_listings_import — Importa inserzioni Marketplace
Accesso: Scrittura sensibile — mette in vendita fino a 5000 domini contemporaneamente.
Mette in vendita fino a 5000 domini sul marketplace Spaceship in un'unica operazione, sia che si trovino nel tuo account Spaceship sia che siano registrati altrove, ciascuno con un prezzo Buy Now facoltativo, un'offerta minima e una pagina For Sale. Un dominio registrato altrove viene messo in vendita una volta verificata la proprietà. Un dominio importato con un prezzo Buy Now riceve anche i preset Lease-to-Own salvati per l'account, se presenti, come avviene con un'importazione in SellerHub. Quando almeno un dominio della chiamata ha un prezzo Buy Now, il note della risposta lo indica, a meno che nessun dominio sia stato messo in vendita. L'importazione viene eseguita dopo la chiamata: la risposta è status: "working" con un handle dell'operazione bulk: in operation.operationId e checkWith, e checkAfterSeconds indica quando controllare. Passa l'handle a async_operation_get, che riporta i domini completati sul totale e, per ogni dominio non messo in vendita, un motivo come "The domain is already listed." oppure "The domain is not in this account.". Non ripetere una chiamata che ha restituito working: l'importazione è già iniziata e ripeterla non la accelera.
Per account può essere eseguita una sola operazione in blocco alla volta. Mentre una è in esecuzione, la risposta è status: "already_running" con un note, non viene avviato nulla di nuovo e non si tratta di un errore: attendi che l'operazione in corso termini, poi richiama. Un input che viola le regole seguenti (per esempio lo stesso dominio due volte, oppure forSalePage senza un prezzo) viene rifiutato con application.request.badRequest prima che inizi qualsiasi cosa.
Parametro:
domainsObbligatorio: Sì
Tipo e vincoli: 1–5000 domini da mettere in vendita, ciascuno al massimo una volta.
Parametro:
domains.nameObbligatorio: Sì
Tipo e vincoli: Nome di dominio completo, 3–253 caratteri, per esempio
example.com. Confrontato senza distinzione tra maiuscole e minuscole.Parametro:
domains.buyNowPriceObbligatorio: No
Tipo e vincoli: Prezzo Buy Now in dollari USA interi, 1–10,000,000. Attiva Buy Now.
Parametro:
domains.minOfferPriceObbligatorio: No
Tipo e vincoli: Offerta minima in dollari USA interi, 1–10,000,000. Attiva le offerte.
Parametro:
domains.forSalePageObbligatorio: Condizionale
Tipo e vincoli: Booleano; indica se la pagina For Sale è attiva. Consentito solo insieme a
buyNowPriceominOfferPrice.
Restituisce — la risposta condivisa di un'operazione eseguita dopo la chiamata:
Campo:
statusSignificato:
workinguna volta avviata l'importazione;already_runningquando è in esecuzione un'altra operazione in blocco dell'account (in tal caso vengono restituiti solostatusenote).Campo:
operationSignificato: L'operazione come letta l'ultima volta, a scopo informativo:
operationId(l'handlebulk:),status(pending,successofailed, gli stessi valori cheasync_operation_getrestituisce per questo handle),type(marketplace_listingsImport;marketplace_listingsBulkUpdateemarketplace_negotiationsBulkCancelper gli altri due strumenti bulk),details(avanzamento),createdAtemodifiedAt.Campo:
checkWithSignificato:
{ "tool": "async_operation_get", "arguments": { "operationId": "bulk:…" } }— la chiamata da effettuare per seguire l'importazione.Campo:
checkAfterSecondsSignificato: Quanto attendere prima di controllare, per esempio
10.Campo:
noteSignificato: Che cosa è successo e cosa fare dopo; mostralo all'utente.
{"status": "already_running","note": "An operation of this kind is already running for this account, so a new one was not started. Wait until it finishes, then try again."}
marketplace_listings_bulk_update — Aggiornamento in blocco delle inserzioni Marketplace
Accesso: Scrittura sensibile — modifica i prezzi pagati dagli acquirenti su fino a 5000 inserzioni contemporaneamente.
Modifica un gruppo di impostazioni su molte inserzioni del marketplace in un'unica operazione: prices (Buy Now e offerta minima, con un deposito Quality Offer facoltativo), pageSettings (pagina For Sale, modulo Contact Owner e link al tuo portfolio venditore), oppure leaseToOwn (disattivarlo, oppure applicare i preset lease-to-own salvati per il tuo account). Invia esattamente uno dei tre gruppi e seleziona le inserzioni con esattamente uno tra listingIds (fino a 5000) o filter. Un filtro deve specificare almeno un criterio; per modificare ogni inserzione, imposta solo filter.allListings su true.
L'aggiornamento viene eseguito dopo la chiamata: la risposta è status: "working" con un handle dell'operazione bulk: da passare a async_operation_get, che riporta le inserzioni completate sul totale e, per ogni inserzione non modificata, un motivo come "The domain has no Buy Now price." oppure "No lease-to-own presets are saved for the account.". Non ripetere una chiamata che ha restituito working. Per account può essere eseguita una sola operazione in blocco alla volta; mentre una è in esecuzione, la risposta è status: "already_running" con un note, non viene avviato nulla di nuovo e non si tratta di un errore. Un input che viola le regole seguenti viene rifiutato con application.request.badRequest prima che inizi qualsiasi cosa.
Parametro:
listingIdsObbligatorio: Condizionale
Tipo e vincoli: 1–5000 ID inserzione (UUID), ciascuno al massimo una volta: il
listingIddimarketplace_listings_listomarketplace_listing_get. InvialistingIdsoppurefilter, non entrambi.Parametro:
filterObbligatorio: Condizionale
Tipo e vincoli: Criteri che selezionano le inserzioni da modificare. Invia
listingIdsoppurefilter, non entrambi. Richiede almeno un criterio, oppure soloallListings.Parametro:
filter.allListingsObbligatorio: No
Tipo e vincoli:
trueper modificare ogni inserzione dell'account. Non combinato con altri criteri.Parametro:
filter.tldsObbligatorio: No
Tipo e vincoli: 1–50 estensioni senza il punto iniziale, per esempio
["com", "io"].Parametro:
filter.nameContainsObbligatorio: No
Tipo e vincoli: Solo inserzioni il cui nome di dominio contiene questo testo, 1–63 caratteri.
Parametro:
filter.buyNowEnabledObbligatorio: No
Tipo e vincoli: Booleano; solo inserzioni con Buy Now attivo (
true) o disattivo (false).Parametro:
filter.minOfferEnabledObbligatorio: No
Tipo e vincoli: Booleano; solo inserzioni che accettano offerte (
true) oppure no (false).Parametro:
filter.forSalePageEnabledObbligatorio: No
Tipo e vincoli: Booleano; solo inserzioni con la pagina For Sale attiva (
true) o disattiva (false). Non può essere uguale apageSettings.forSalePageEnablednella stessa chiamata.Parametro:
pricesObbligatorio: Condizionale
Tipo e vincoli: Impostazioni di prezzo. Invia esattamente uno tra
prices,pageSettingseleaseToOwn. RichiedebuyNowEnabled,minOfferEnabledo entrambi, e i due non possono essere entrambifalse.Parametro:
prices.buyNowEnabledObbligatorio: No
Tipo e vincoli: Booleano; attiva o disattiva Buy Now.
Parametro:
prices.buyNowPriceObbligatorio: Condizionale
Tipo e vincoli: Dollari USA interi, 1–10,000,000. Obbligatorio quando
buyNowEnabledètrue, e consentito solo in quel caso.Parametro:
prices.minOfferEnabledObbligatorio: No
Tipo e vincoli: Booleano; attiva o disattiva le offerte.
Parametro:
prices.minOfferPriceObbligatorio: Condizionale
Tipo e vincoli: Dollari USA interi, 1–10,000,000. Obbligatorio quando
minOfferEnabledètrue, e consentito solo in quel caso.Parametro:
prices.qualityOfferObbligatorio: No
Tipo e vincoli: Impostazione Quality Offer applicata insieme ai prezzi.
Parametro:
prices.qualityOffer.requirementObbligatorio: Sì, all'interno di
qualityOfferTipo e vincoli: Se gli acquirenti pagano un deposito con un'offerta:
disabled,optionaloppuremandatory.Parametro:
prices.qualityOffer.depositAmountObbligatorio: Condizionale
Tipo e vincoli: Deposito in dollari USA interi, 10–50. Obbligatorio quando
requirementèoptionaloppuremandatory; non consentito condisabled.Parametro:
pageSettingsObbligatorio: Condizionale
Tipo e vincoli: Impostazioni della pagina In vendita. Invia esattamente uno tra
prices,pageSettingseleaseToOwn. Deve cambiare almeno un campo.Parametro:
pageSettings.forSalePageEnabledObbligatorio: No
Tipo e vincoli: Booleano; attiva o disattiva la pagina In vendita.
Parametro:
pageSettings.contactOwnerEnabledObbligatorio: No
Tipo e vincoli: Booleano; attiva o disattiva il modulo Contatta il proprietario nella pagina In vendita.
Parametro:
pageSettings.showSellerPortfolioLinkObbligatorio: No
Tipo e vincoli: Booleano; indica se la pagina In vendita rimanda alla pagina del tuo portfolio venditore.
Parametro:
leaseToOwnObbligatorio: Condizionale
Tipo e vincoli: Modifica lease-to-own. Invia esattamente uno tra
prices,pageSettingseleaseToOwn.Parametro:
leaseToOwn.actionObbligatorio: Sì, all'interno di
leaseToOwnTipo e vincoli:
disabledisattiva lease-to-own;apply_saved_presetsapplica i preset lease-to-own salvati per il tuo account.
Restituisce — la stessa risposta condivisa di marketplace_listings_import: status (working o already_running), operation con l'handle bulk:, checkWith, checkAfterSeconds e note. Una risposta working ha questo aspetto (l'oggetto operation, fornito a scopo informativo, qui è omesso):
{"status": "working","checkWith": {"tool": "async_operation_get","arguments": { "operationId": "bulk:5b8e2c41-7d3a-4f19-9c06-2e7a1d4b8f53" }},"checkAfterSeconds": 10,"note": "The update is still running; operation.details holds the progress. The operation is not complete yet. Check again with async_operation_get in about 10 seconds. Do not call marketplace_listings_bulk_update again for this request; the operation has already started."}
marketplace_negotiations_bulk_cancel — Annullamento in blocco delle trattative del Marketplace
Accesso: Scrittura sensibile — annulla molte trattative contemporaneamente.
Annulla molte trattative sui tuoi annunci in un'unica operazione, selezionate con esattamente uno tra negotiationIds (fino a 5000) o filter. Un filtro seleziona solo le trattative aperte e deve specificare almeno un criterio; per annullare ogni trattativa aperta sui tuoi annunci, imposta solo filter.allNegotiations su true. Una trattativa annullata viene sospesa, non eliminata: ciascuna può essere ripresa in seguito singolarmente.
Quando la selezione non corrisponde ad alcuna trattativa aperta, la risposta è il risultato normale { "status": "nothing_to_cancel", "matchedCount": 0, "note": "No open negotiation matches the selection, so nothing was cancelled and no confirmation is needed." }: non viene annullato nulla e non c'è nulla da confermare.
Conferma in due passaggi. Chiama prima senza confirmationToken: non viene annullato nulla e la risposta è status: "confirmation_required" con matchedCount, il numero di trattative a cui la selezione corrisponde in quel momento, e un confirmationToken. Mostra all'utente cosa verrà annullato, poi richiama con gli stessi argomenti, quel confirmationToken e confirmationResponse: "accept" per procedere, oppure confirmationResponse: "decline" per fermarti; un rifiuto restituisce status: "cancelled" e non cambia nulla. Il token è vincolato a questi argomenti esatti e al conteggio delle corrispondenze, e scade dopo poco tempo: un token scaduto o che non corrisponde più restituisce un nuovo confirmation_required con un nuovo token, mai un errore.
La chiamata accettata avvia l'annullamento, che viene eseguito dopo la chiamata: la risposta è status: "working" con un handle operazione bulk: da passare a async_operation_get, che riporta le trattative completate sul totale e, per ciascuna non annullata, un motivo come "The negotiation has an agreed sale." oppure "The negotiation is already cancelled.". Non ripetere una chiamata che ha restituito working. Per account può essere eseguita una sola operazione in blocco alla volta; mentre una è in esecuzione, la risposta è status: "already_running" con una note e non viene avviato nulla di nuovo.
Parametro:
negotiationIdsObbligatorio: Condizionale
Tipo e vincoli: 1–5000 ID trattativa (UUID), ciascuno al massimo una volta. Invia
negotiationIdsoppurefilter, non entrambi.Parametro:
filterObbligatorio: Condizionale
Tipo e vincoli: Criteri che selezionano le trattative aperte sui tuoi annunci. Invia
negotiationIdsoppurefilter, non entrambi. Richiede almeno un criterio, oppure soloallNegotiations.Parametro:
filter.allNegotiationsObbligatorio: No
Tipo e vincoli:
trueper annullare ogni trattativa aperta sui tuoi annunci. Non combinabile con altri criteri.Parametro:
filter.domainNameContainsObbligatorio: No
Tipo e vincoli: Solo trattative il cui nome di dominio contiene questo testo, 1–63 caratteri.
Parametro:
filter.qualityOfferOnlyObbligatorio: No
Tipo e vincoli:
truesolo per le trattative che includono un deposito Quality Offer.Parametro:
confirmationTokenObbligatorio: No
Tipo e vincoli: Token della precedente risposta
confirmation_requiredper questi argomenti esatti, fino a 4096 caratteri. Omettilo nella prima chiamata.Parametro:
confirmationResponseObbligatorio: Condizionale
Tipo e vincoli:
acceptoppuredecline. Solo insieme aconfirmationToken.
Restituisce
{"status": "confirmation_required","confirmationToken": "eyJ2IjoxLCJ0IjoibWFya2V0cGxhY2VfbmVnb3RpYXRpb25zX2J1bGtfY2FuY2VsIn0.Qm9yZGVy","note": "Nothing has been changed yet. Show the confirmation to the user and, once they agree, call marketplace_negotiations_bulk_cancel again with this confirmationToken and confirmationResponse=\"accept\", or with confirmationResponse=\"decline\" to cancel.","matchedCount": 12}
status:
confirmation_requiredSignificato: Non è stato annullato nulla. Include
matchedCounte unconfirmationTokenper la chiamata di conferma.status:
cancelledSignificato: La richiesta è stata rifiutata; nulla è stato modificato. Include
matchedCount.status:
workingSignificato: L'annullamento è iniziato. Include
operationcon l'handlebulk:,checkWith,checkAfterSecondsenote, come permarketplace_listings_bulk_update.status:
already_runningSignificato: È in esecuzione un'altra operazione in blocco dell'account; non è stato avviato nulla di nuovo. Attendi che finisca, poi riprova.
Marketplace: esportazioni
Scarica gli annunci o le vendite dell'account come file CSV. Il file viene preparato dopo la chiamata: la risposta è status: "working" con un handle operazione event: da seguire con async_operation_get, e l'operazione completata contiene un link al file. Per account può essere eseguita una sola esportazione di ciascun tipo alla volta.
marketplace_listings_export — Esporta i miei annunci Marketplace
Accesso: Lettura.
Avvia un'esportazione CSV degli annunci correnti del tuo account nel marketplace Spaceship, come mostrati nella scheda SellerHub Domains, con i relativi prezzi e impostazioni. status e tld la restringono nello stesso modo in cui restringono marketplace_listings_list, per esempio ai soli annunci .com.
Parametro:
statusObbligatorio: No
Tipo e vincoli: 1–9 stati distinti dell'annuncio, come in
marketplace_listings_list. Ometti per gli annunci correnti.Parametro:
tldObbligatorio: No
Tipo e vincoli: 1–20 estensioni distinte senza il punto iniziale, ad es.
["com"].
La risposta è status: "working" con un handle operazione in operation.operationId, fornito anche come checkWith. checkAfterSeconds indica quando controllare.
Passa l'handle a async_operation_get. Quando l'esportazione riesce, details.downloadUrl rimanda al file CSV fino a details.downloadUrlExpiresAt.
Non ripetere la chiamata mentre l'esportazione è ancora in corso: è già iniziata e ripeterla non la velocizza.
Mentre è in esecuzione un'esportazione degli annunci dell'account, la risposta è status: "already_running" con una note, non viene avviato nulla di nuovo e non si tratta di un errore: attendi che l'esportazione in corso finisca, poi richiama. Quella risposta non include alcun handle, perché l'esportazione in corso non può essere nominata.
Restituisce — la risposta condivisa di un'operazione eseguita dopo la chiamata:
Campo:
statusSignificato:
workinguna volta avviata l'esportazione;already_runningmentre è in esecuzione un'altra esportazione degli annunci dell'account (in tal caso vengono restituiti solostatusenote).Campo:
exportSignificato:
listings.Campo:
operationSignificato: L'operazione come letta l'ultima volta, a scopo informativo:
operationId(l'handleevent:),status(pending,successofailed, gli stessi valori cheasync_operation_getrestituisce per questo handle),type(marketplace_listingsExport),details,createdAtemodifiedAt.Campo:
checkWithSignificato:
{ "tool": "async_operation_get", "arguments": { "operationId": "event:…" } }— la chiamata da effettuare per seguire l'esportazione.Campo:
checkAfterSecondsSignificato: Quanto attendere prima di controllare, per esempio
10.Campo:
noteSignificato: Che cosa è successo e cosa fare dopo; mostrala all'utente.
Una risposta working ha questo aspetto (l'oggetto operation, fornito a scopo informativo, qui è omesso):
{"status": "working","checkWith": {"tool": "async_operation_get","arguments": { "operationId": "event:0b6cf50e-95a3-4c4b-8f43-2d84e537f3c5" }},"checkAfterSeconds": 10,"export": "listings","note": "The export file is being prepared. The operation is not complete yet. Check again with async_operation_get in about 10 seconds. Do not call marketplace_listings_export again for this request; the operation has already started."}
marketplace_sales_export — Esporta le mie vendite Marketplace
Accesso: Lettura.
Avvia un'esportazione CSV dei domini che il tuo account ha venduto nel marketplace Spaceship tra soldFrom e soldTo, entrambe date UTC e entrambe incluse. Viene eseguita dopo la chiamata esattamente come marketplace_listings_export: la risposta è status: "working" con un handle event: da passare a async_operation_get, la cui risposta success include details.downloadUrl e details.downloadUrlExpiresAt. Non ripetere una chiamata che ha restituito working. Mentre è in esecuzione un'esportazione delle vendite dell'account, la risposta è status: "already_running" con una note e non viene avviato nulla di nuovo. Una data che non è una data di calendario reale, oppure un valore soldFrom successivo a soldTo, viene rifiutato con application.request.badRequest prima che inizi qualsiasi cosa.
Parametro:
soldFromObbligatorio: Sì
Tipo e vincoli: Prima data di vendita da includere,
YYYY-MM-DD(UTC). Non deve essere successiva asoldTo.Parametro:
soldToObbligatorio: Sì
Tipo e vincoli: Ultima data di vendita da includere,
YYYY-MM-DD(UTC).
Restituisce — la stessa risposta condivisa di marketplace_listings_export, con export impostato su sales e il type dell'operazione impostato su marketplace_salesExport.
Operazioni asincrone
async_operation_get — Ottieni lo stato dell'operazione asincrona
Accesso: Lettura.
Controlla un'operazione di lunga durata sul tuo account tramite il suo operationId. Chiamalo ripetutamente finché status non è success o failed. Per una registrazione di dominio restituisce anche la ricevuta di acquisto (vedi sotto).
Parametro:
operationIdObbligatorio: Sì
Tipo e vincoli: Stringa alfanumerica, max 36 caratteri, restituita dallo strumento che ha avviato l'operazione. Può anche essere un handle con prefisso
async:,bulk:oevent:, esattamente come restituito da uno strumento.
Restituisce
Campo:
operationIdSignificato: L'operazione interrogata.
Campo:
statusSignificato:
pending,successofailed.Campo:
typeSignificato: Tipo di operazione, oppure
null.Campo:
detailsSignificato: Dettagli aggiuntivi sull'operazione, oppure
null.Campo:
createdAt/modifiedAtSignificato: Quando l'operazione è stata creata / aggiornata l'ultima volta (
modifiedAtpuò esserenull).Campo:
orderIdSignificato: Solo registrazioni di dominio concluse (
successofailed). L'ordine a cui appartiene l'acquisto, presente quando l'operazione ne indica l'ordine. Viene omesso se quell'ordine non appartiene al tuo account per questo dominio.Campo:
nextRenewalSignificato: Solo registrazioni di dominio riuscite. Un oggetto con la
date(YYYY-MM-DD) in cui il dominio registrato scade presso il registro, e ilpricedi rinnovo annuale (importo e valuta). Il prezzo viene omesso quando non può essere determinato, e l'intero campo viene omesso quando il record del registro non può essere letto. La data proviene dal registro, quindi non è una stima.Campo:
refusalReasonSignificato: Solo registrazioni di domini non riuscite, quando l'ordine mostra che il pagamento è stato rifiutato.
payment_declined(correggi o sostituisci il metodo di pagamento, poi avvia di nuovo l'acquisto) oppurecardholder_confirmation_required(completa l'acquisto sul sito web con un metodo di pagamento che il titolare della carta possa confermare). Potrebbero essere aggiunti altri valori, quindi trattane uno sconosciuto come un rifiuto generale del pagamento. Assente per qualsiasi altro errore e ogni volta che l'ordine non può essere letto, non appartiene al tuo account per questo dominio o richiede troppo tempo per essere letto.Campo:
paymentMethodsSignificato: Solo accanto a
refusalReason, e solo quando è stato possibile leggerli: i metodi di pagamento salvati dell'account, ciascuno solo{ id, label }. A differenza di un risultatopayment_unavailablenon contiene tipo, ordine, saldo o indicatore di scadenza.
Ricevuta di registrazione del dominio. Quando un'operazione di registrazione del dominio termina, il testo della risposta è una ricevuta d'acquisto — mostrala all'utente così com'è. Solo un'operazione di registrazione che raggiunge success o failed ne riceve una; ogni altra operazione, e una registrazione che è ancora pending, viene restituita esattamente come prima.
Un success è la ricevuta confermata:
Il tuo acquisto è confermato. example.com è registrato.ID ordine: 7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16Dominio: example.comDurata: 1 annoAddebitato: 9.08 USDMetodo di pagamento: Visa ···1234Prossimo rinnovo: Si rinnova il 2027-10-13 a 10.98 USDHai bisogno di aiuto? Contatta il supporto: https://www.spaceship.com/about/contact-us/Politica di rimborso: https://www.spaceship.com/legal/refund-policy/
{"operationId": "2c9a4e7d1b3f48a6b05d9e7c1f2a8b34","status": "success","type": "domains_Register","details": { "name": "example.com", "orderId": "7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16" },"createdAt": "2026-10-13T09:41:07Z","modifiedAt": "2026-10-13T09:41:19Z","orderId": "7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16","nextRenewal": { "date": "2027-10-13", "price": { "amount": 10.98, "currency": "USD" } }}
Una registrazione failed è dichiarata onestamente — il dominio non è stato registrato — e non include importo, metodo di pagamento o rinnovo:
Questo acquisto non ha potuto essere completato e il dominio non è stato registrato.Se vedi un addebito per questo acquisto, contatta il supporto.ID ordine: 7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16Dominio: example.comHai bisogno di aiuto? Contatta il supporto: https://www.spaceship.com/about/contact-us/Politica di rimborso: https://www.spaceship.com/legal/refund-policy/
Quando l'ordine mostra che il pagamento è stato rifiutato, la ricevuta di errore aggiunge una riga di indicazioni dopo il titolo e il risultato aggiunge refusalReason e, quando è stato possibile leggerli, i paymentMethods dell'account:
Questo acquisto non ha potuto essere completato e il dominio non è stato registrato.Se vedi un addebito per questo acquisto, contatta il supporto.Il pagamento è stato rifiutato. Correggi o sostituisci il metodo di pagamento, poi avvia di nuovo l'acquisto.ID ordine: 7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16Dominio: example.comHai bisogno di aiuto? Contatta il supporto: https://www.spaceship.com/about/contact-us/Politica di rimborso: https://www.spaceship.com/legal/refund-policy/
{"operationId": "2c9a4e7d1b3f48a6b05d9e7c1f2a8b34","status": "failed","type": "domains_Register","details": { "name": "example.com", "orderId": "7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16" },"createdAt": "2026-10-13T09:41:07Z","modifiedAt": "2026-10-13T09:41:19Z","orderId": "7f3c1a9e-2b64-4d08-9a51-c0e8d4b27f16","refusalReason": "payment_declined","paymentMethods": [{ "id": "3f1c2b7e-8d4a-4f6b-9c0e-1a2b3c4d5e6f", "label": "Visa ···1234" }]}
Un pagamento che richiede la conferma del titolare della carta riporta "Il pagamento richiede che il titolare della carta lo confermi, cosa che non può essere fatta qui. Completa l'acquisto sul sito web con un metodo di pagamento che puoi confermare." con refusalReasoncardholder_confirmation_required.
Note sulla ricevuta:
L'importo addebitato, il metodo di pagamento e la durata provengono dall'ordine, mentre la data di rinnovo proviene dal dominio registrato. Se una fonte non è disponibile o è lenta, le righe che dipendono da essa vengono omesse e la chiamata ha comunque esito positivo — un valore che non può essere determinato non viene mai indovinato. Quando l'operazione non indica alcun ordine, la ricevuta non ha ID ordine, importo o metodo di pagamento, e la durata viene ricavata dalle date di registrazione e scadenza quando lo consentono.
La riga di rinnovo riporta "Si rinnova il <date> a <price>" quando il rinnovo automatico è attivo per il dominio e "Scade il <date>; prezzo di rinnovo <price>" quando è disattivato. Il prezzo è quello del rinnovo annuale.
Il metodo di pagamento riporta
Visa ···1234(tre punti medi) oppureAccount funds; il saldo dei fondi non viene mai mostrato.In un risultato
failed,structuredContentottieneorderId, quando noto e non omesso, e mainextRenewal.refusalReasonepaymentMethodsvengono aggiunti solo quando l'ordine indicato dall'operazione appartiene al tuo account per questo dominio e il suo elemento registra un pagamento rifiutato; ogni altro errore, un ordine che non può essere letto in tempo o uno che appartiene a qualcun altro mantiene la semplice ricevuta di errore. Il motivo viene letto dal codice di errore dell'ordine stesso e non è mai il testo del fornitore di pagamento.
Operazioni marketplace in blocco. Un handle bulk:, restituito dagli strumenti bulk del marketplace (vedi Marketplace: operazioni in blocco), risponde con pending mentre l'operazione è in esecuzione, con avanzamento in details: done (elementi completati senza errori) su total. Interrogalo non più spesso di quanto indicato da checkAfterSeconds fornito dallo strumento iniziale. Un'operazione che richiede più tempo del solito resta pending finché non termina davvero; non viene mai segnalata come completata o fallita in anticipo.
Quando termina, status è success se almeno un listing o una negoziazione è andata a buon fine, anche se altri sono falliti, ed è failed se nessuno lo è stato. In ogni caso details.failed elenca ogni listing o negoziazione che non è andata a buon fine, come { "item": "<domain name>", "reason": "<one sentence>" }, per esempio { "item": "example.com", "reason": "The domain is not in this account." }. details.failedTotal è il numero di elementi falliti e details.failedTruncated è true quando l'elenco mostra solo i primi. Correggi la causa indicata in un motivo prima di avviare una nuova operazione per quegli elementi.
La risposta finale indica anche l'operazione tramite lo strumento che l'ha avviata in type (marketplace_listingsImport, marketplace_listingsBulkUpdate o marketplace_negotiationsBulkCancel) e contiene una note, che è anche il testo della risposta: in caso di success indica i conteggi letti dall'operazione, per esempio "L'importazione è terminata: 2 domini su 3 sono stati messi in vendita, 1 è fallito. operation.details.failed elenca ogni dominio che non è stato messo in vendita e il motivo.", con un'ultima frase che dice quanti errori contiene l'elenco quando è troncato; in caso di failed dice che nessun elemento è andato a buon fine. Quando l'operazione termina all'interno della chiamata che l'ha avviata, la risposta di quello strumento contiene lo stesso status e type nel suo operation e apre la sua note con lo stesso riepilogo.
Un handle bulk: che appartiene a un altro account risponde con business.notFound, esattamente come un handle che non esiste. Un'operazione completata resta leggibile e una lettura successiva restituisce lo stesso risultato.
Esportazioni marketplace. Un handle event:, restituito da marketplace_listings_export e marketplace_sales_export, risponde con pending mentre il file viene preparato, con typemarketplace_listingsExport o marketplace_salesExport e details.export impostato su listings o sales. Quando il file è pronto la risposta è success, e details aggiunge downloadUrl, un link al file CSV, e downloadUrlExpiresAt, quando quel link smette di funzionare; per ottenere un link aggiornato dopo quel momento, avvia una nuova esportazione. Un'esportazione failed contiene solo details.export: il file non ha potuto essere preparato e una nuova esportazione può essere avviata più tardi. Un'esportazione che richiede più tempo del solito resta pending finché non termina davvero. Un handle event: che appartiene a un altro account risponde con business.notFound, esattamente come un handle che non esiste, quindi un link di download viene mostrato solo all'account che ha avviato l'esportazione.
Errori
Quando una chiamata fallisce, lo strumento restituisce un errore con un codice e un detail leggibile dall'uomo che spiega cosa è andato storto — per esempio input non valido (un nome di dominio o un ID contatto malformato), un dominio o contatto che non esiste, o un conflitto con lo stato corrente. Se uno strumento non è disponibile perché all'assistente non è stato concesso l'accesso, ricollega Spaceship MCP Connector e approva l'accesso richiesto.
Una chiamata fallita ha sempre la stessa forma: isError è true, il contenuto testuale riporta <code>: <detail>, e structuredContent.error contiene code, detail e, quando un input rifiutato ha diversi problemi, un elenco validationErrors. La forma è stabile; leggi detail per la causa. Gli argomenti che non corrispondono ai parametri di uno strumento (un campo obbligatorio mancante, un tipo errato, un valore fuori intervallo) vengono rifiutati prima che lo strumento faccia qualsiasi cosa con il codice application.request.badRequest: detail indica ogni problema, e validationErrors contiene una voce per problema con il percorso dell'argomento in field (per esempio items.0.domain) e il motivo in message. Una chiamata oltre il limite di frequenza restituisce application.request.tooManyRequests, e una chiamata che gli scope del token non consentono restituisce application.forbidden. Uno strumento che l'accesso concesso non copre non viene elencato, e una chiamata a esso riceve invece risposta come strumento sconosciuto (vedi Accesso che concedi).
Ogni altro errore contiene uno di sei codici che indicano la situazione, così puoi decidere cosa fare dopo. Il testo detail è scritto dal servizio, è fisso per ogni situazione e non contiene mai identificatori interni o testo proveniente da un sistema connesso:
Codice:
business.notFoundSignificato: Il dominio, il contatto o il record non è in questo account, oppure l'estensione non ha prezzi.
Testi detail fissi: "Questo dominio non è in questo account."; "Contatto non trovato in questo account."; "Uno o più contatti non sono stati trovati in questo account."; "I prezzi per questa estensione di dominio non sono disponibili."; "La risorsa richiesta non è stata trovata."; negli strumenti marketplace: "Il listing non è stato trovato."; "La negoziazione non è stata trovata."; "L'affare SafePay non è stato trovato."; "Il lease non è stato trovato."
Codice:
business.invalidArgumentSignificato: La richiesta è stata compresa ma l'input non è accettabile.
Testi detail fissi: "Il periodo di registrazione richiesto non è supportato per questa estensione di dominio."; "Questa estensione di dominio non è supportata."; "I contatti non sono validi per questo dominio."; "I dettagli del contatto sono stati rifiutati."; "Il servizio ha rifiutato la richiesta."; negli strumenti marketplace, per un nome di dominio malformato (la voce
validationErrorsindica il campodomaincon la regolapattern): "Il dominio deve essere un nome di dominio come "example.com"."; oppure un messaggio che indica il problemaCodice:
business.conflictSignificato: La richiesta è in conflitto con lo stato corrente.
Testi detail fissi: "Questo dominio è già registrato."; "Questo dominio non è disponibile per la registrazione."; "Esiste già un contatto con questi dettagli."; "Questi nameserver sono già impostati per questo dominio."; "La richiesta è in conflitto con lo stato corrente della risorsa."; negli strumenti marketplace: "Il listing, la negoziazione o l'affare non è in uno stato che consente questa azione."; "Un'operazione di questo tipo è già in esecuzione per questo account."
Codice:
infrastructure.outcomeUnknownSignificato:
marketplace_offer_accept,marketplace_safepay_deal_create,marketplace_safepay_deal_confirmemarketplace_lease_cancelsolo: l'azione è stata inviata e il suo esito è sconosciuto, quindi potrebbe essere stata eseguita. Leggi di nuovo la negoziazione, l'affare o il lease prima di chiamare di nuovo; vedi Ripetizione delle scritture.Testi detail fissi: "L'esito è sconosciuto: l'azione potrebbe essere stata eseguita oppure no."
Codice:
infrastructure.serviceUnavailableSignificato: Un servizio connesso non ha potuto completare la chiamata. Riprova più tardi. Dopo una scrittura fallita, vedi Ripetizione delle scritture.
Testi detail fissi: "Un servizio connesso non ha potuto completare la richiesta."; "Non è stato possibile raggiungere il servizio."; "Il servizio ha risposto con un errore imprevisto."; "Il servizio non ha potuto autorizzare una chiamata interna."
Quando un input rifiutato ha diversi problemi, validationErrors elenca i parametri rifiutati dal servizio, ciascuno come { "field": "<parameter name>", "rule": "<kind of rejection>", "message": "<fixed text>" }. La rule è una tra required, length, pattern, range, enum o generic, e il message è scritto da Spaceship MCP a partire da quella regola: il testo del servizio stesso non viene mai inoltrato. Un campo che non è uno dei parametri propri dello strumento viene omesso, e quando non ne resta nessuno validationErrors è assente e solo detail descrive il rifiuto.
Un errore che il servizio non può attribuire a una delle situazioni sopra, come un guasto interno imprevisto, restituisce il codice infrastructure.unhandled con il detail fisso "La richiesta non ha potuto essere completata a causa di un errore interno." Riprova una chiamata di questo tipo più tardi; ripeterla subito raramente aiuta.
Ripetizione delle scritture
Una scrittura che fallisce con infrastructure.serviceUnavailable potrebbe comunque essere stata applicata. Prima di chiamarla di nuovo:
contacts_save— cerca prima il contatto concontacts_list.dns_records_save— leggi prima i record condns_records_get.domain_set_contacts— chiamalo di nuovo; assegna di nuovo gli stessi contatti.domain_set_nameservers— chiamalo di nuovo. Una ripetizione che trova i nameserver già impostati risponde con la nota "Già impostato; nulla è cambiato.";domains_listmostra i nameserver correnti, quindi leggilo quando una risposta ti lascia incerto.dns_records_delete— chiamalo di nuovo; un record che la prima chiamata ha già rimosso ritorna innotFound, oppure inunconfirmedquando la zona non ha potuto essere letta completamente.marketplace_purchase_link— chiamalo di nuovo; creare un link non addebita nulla e una ripetizione fornisce un link aggiornato.altre scritture marketplace — nessuna viene ripetuta per te. Leggi prima l'oggetto: un listing con
marketplace_listing_get, una negoziazione conmarketplace_negotiation_get, un affare conmarketplace_safepay_deal_get, un lease conmarketplace_lease_get, i link di checkout conmarketplace_checkout_links_liste le impostazioni conmarketplace_seller_settings_get. Dopoinfrastructure.outcomeUnknownsumarketplace_offer_accept,marketplace_safepay_deal_create,marketplace_safepay_deal_confirmomarketplace_lease_cancell'azione potrebbe essere stata eseguita: non ripeterla a meno che la lettura non mostri che non è avvenuta. Un'importazione, un aggiornamento bulk o un annullamento bulk che ha rispostoworkingè in esecuzione: seguilo conasync_operation_getinvece di avviarlo di nuovo.
Gli strumenti che leggono soltanto possono essere chiamati di nuovo in qualsiasi momento. Una chiamata rifiutata con
application.request.tooManyRequests non è stata eseguita: attendi un po' prima di chiamarla di nuovo.