{"openapi":"3.1.0","info":{"title":"florame.ai agent tools","version":"0.7.2","description":"Public catalogue, verified delivery intent, custom bouquet generation and private draft links. No orders or payments are created. Check /agent-info for workflows and current capabilities."},"servers":[{"url":"https://us-central1-flower-ai-2d7aa.cloudfunctions.net/florameChatgptV1"}],"paths":{"/tools/florame_refine_search":{"post":{"operationId":"florame_refine_search","summary":"Affina la tua ricerca","description":"Continua la ricerca dal searchId più recente (anche nel contesto del widget). Modifica SOLO i vincoli richiesti: changes.addIngredients aggiunge rose rosse mantenendo budget, indirizzo, data e altri filtri; removeIngredients rimuove solo quel fiore; clear:[\"maxPrice\"] elimina solo il tetto; undo:true annulla l’ultima modifica. Non ripartire da search_available se esiste searchId. Le righe sono sempre ricontrollate; non inventare disponibilità. Per caricare altre pagine usa changes:{} e page successiva. Non creare prodotti mentre il cliente sta cercando.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"searchId":{"type":"string","pattern":"^[a-f0-9]{48}$"},"changes":{"type":"object","properties":{"clear":{"type":"array","items":{"type":"string","enum":["ingredients","excludedFlowers","exclusive","occasion","budget","composition","sort","maxPrice"]},"maxItems":8},"addIngredients":{"type":"array","items":{"type":"object","properties":{"flowerId":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","minLength":1,"maxLength":50},"quantity":{"type":"integer","minimum":1,"maximum":150},"comparison":{"type":"string","enum":["exact","at_least"],"default":"exact"}},"required":["flowerId"],"additionalProperties":false},"maxItems":30},"replaceIngredients":{"type":"array","items":{"$ref":"#/properties/changes/properties/addIngredients/items"},"maxItems":30},"removeIngredients":{"type":"array","items":{"type":"object","properties":{"flowerId":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","maxLength":50}},"required":["flowerId"],"additionalProperties":false},"maxItems":30},"addExcludedFlowers":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":30},"removeExcludedFlowers":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":30},"maxPrice":{"type":"number","minimum":0,"maximum":10000},"exclusive":{"type":"boolean"},"occasion":{"type":"string","enum":["all","romance","birthday","milestones","mother","thanks","new_home","new_baby","wedding","sympathy","get_well","apology","corporate","party","just_because"]},"budget":{"type":"string","enum":["all","under30","30to60","over60"]},"composition":{"type":"string","enum":["all","roses","mixed","single"]},"sort":{"type":"string","enum":["newest","popular"]}},"additionalProperties":false,"default":{}},"undo":{"type":"boolean","default":false},"page":{"type":"integer","minimum":1,"maximum":100,"default":1},"limit":{"type":"integer","minimum":1,"maximum":24,"default":8}},"required":["searchId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_plan_bouquet":{"post":{"operationId":"florame_plan_bouquet","summary":"Componi con il tuo fiorista","description":"Prima di generare un bouquet su misura verifica ingredienti, quantità e prezzi REALI del fiorista per indirizzo e fascia. Per una ricetta precisa usa mode:exact; per “7 rose rosse, completalo tu entro 100 euro” mode:complete mantiene esattamente quei 7 steli e propone accompagnamento nel budget fiori. Con mode:catalog mostra i fiori disponibili. Non inventare prezzi o riempitivi gratuiti. Il budget scope flowers esclude confezione, extra e consegna; delivered segnala totale non verificato e blocca la generazione diretta. Presenta issues con calcolo e alternative: stessi colori, stessi fiori in altro colore, meno fiori principali o roselline economiche solo se disponibili. Le sostituzioni richiedono scelta esplicita, anche se il cliente aveva chiesto “fai tu”: conserva i vincoli obbligatori. Se la ricetta originale è fattibile e il cliente ha già chiesto la creazione, usa subito build_bouquet con la proposta, maxPrice, stesso fiorista e packaging; non obbligarlo a premere Genera. Continua con build_status fino a foto e prodotto. Non chiamare questo tool per una semplice ricerca di bouquet esistenti.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","minLength":1,"maxLength":48},"deliveryType":{"type":"string","enum":["delivery","pickup"],"default":"delivery"},"lines":{"type":"array","items":{"type":"object","properties":{"flowerId":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","minLength":1,"maxLength":50},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["flowerId","color","quantity"],"additionalProperties":false},"maxItems":30,"default":[]},"mode":{"type":"string","enum":["exact","complete","catalog"],"default":"exact"},"maxPrice":{"type":"number","minimum":0,"maximum":10000},"budgetScope":{"type":"string","enum":["flowers","delivered"],"default":"flowers"},"excludedFlowers":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":30,"default":[]},"preferredColors":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50},"maxItems":10,"default":[]},"packaging":{"type":"object","properties":{"carta":{"type":"object","properties":{"type":{"type":"string","enum":["grezza","tessuto"]},"color":{"anyOf":[{"type":"string","enum":["white","lightpink","fuchsia","blue","skyblue","green","yellow","orange","red"]},{"type":"null"}]}},"required":["type","color"],"additionalProperties":false},"nastro":{"type":"object","properties":{"type":{"type":"string","enum":["rafia","tessuto"]},"color":{"anyOf":[{"$ref":"#/properties/packaging/properties/carta/properties/color/anyOf/0"},{"type":"null"}]}},"required":["type","color"],"additionalProperties":false},"decorazioni":{"type":"object","properties":{"verde":{"type":"boolean"},"nebiolina":{"type":"boolean"}},"required":["verde","nebiolina"],"additionalProperties":false}},"required":["carta","nastro","decorazioni"],"additionalProperties":false}},"required":["partnerSlug","addressPlaceId","selectedDate","selectedTimeSlot"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_search_available_bouquets":{"post":{"operationId":"florame_search_available_bouquets","summary":"Cerca bouquet disponibili","description":"Per un regalo o un budget cerca prima bouquet esistenti, non generare automaticamente. Flusso Esplora: prima chiedi via, civico e città, usa suggest_addresses e resolve_address; poi trova il fiorista con find_florists e scegli giorno e fascia da delivery_options. Cerca solo bouquet con stock e offerta verificati per quell’indirizzo e momento. Per “solo rose” usa ingredients:[{flowerId:\"rose\"}],exclusive:true. Per “con 7 gigli bianchi” usa ingredients:[{flowerId:\"giglio\",color:\"white\",quantity:7,comparison:\"exact\"}],exclusive:false; “almeno 7” usa at_least. Non generare un prodotto se l’utente chiede di cercare. Nei follow-up usa florame_refine_search con il searchId restituito: mantiene indirizzo e filtri. Il prezzo esclude consegna; chiarisci se il budget richiesto include la consegna. hasMore richiede ulteriori pagine, anche con pagina vuota. Non inventare risultati o dichiarare tutto esaurito se hasMore. Le offerte request richiedono accettazione. Puoi proporre la creazione esatta se non trovi risultati, solo su scelta dell’utente.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","minLength":1,"maxLength":48},"deliveryType":{"type":"string","enum":["delivery","pickup"],"default":"delivery"},"ingredients":{"type":"array","items":{"type":"object","properties":{"flowerId":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","minLength":1,"maxLength":50},"quantity":{"type":"integer","minimum":1,"maximum":150},"comparison":{"type":"string","enum":["exact","at_least"],"default":"exact"}},"required":["flowerId"],"additionalProperties":false},"maxItems":30,"default":[]},"exclusive":{"type":"boolean","default":false},"excludedFlowers":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":30,"default":[]},"occasion":{"type":"string","enum":["all","romance","birthday","milestones","mother","thanks","new_home","new_baby","wedding","sympathy","get_well","apology","corporate","party","just_because"]},"budget":{"type":"string","enum":["all","under30","30to60","over60"],"default":"all"},"composition":{"type":"string","enum":["all","roses","mixed","single"],"default":"all"},"maxPrice":{"type":"number","minimum":0,"maximum":10000},"page":{"type":"integer","minimum":1,"maximum":100,"default":1},"limit":{"type":"integer","minimum":1,"maximum":24,"default":8},"sort":{"type":"string","enum":["newest","popular"],"default":"newest"}},"required":["partnerSlug","addressPlaceId","selectedDate","selectedTimeSlot"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_studio_catalog":{"post":{"operationId":"florame_studio_catalog","summary":"Apri il configuratore","description":"Leggi ingredienti, immagini, colori e prezzi canonici per comporre o modificare un bouquet. Senza fiorista il prezzo è indicativo. Mostra il configuratore interattivo.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_build_bouquet":{"post":{"operationId":"florame_build_bouquet","summary":"Genera il tuo bouquet","description":"Con fiorista e budget usa prima plan_bouquet; trasferisci maxPrice per il controllo vincolante. Su richiesta dell’utente genera la foto e crea la scheda prodotto Florame da una ricetta ESATTA. Per “x rose rosse, y tulipani gialli, z gigli bianchi” usa direttamente queste quantità: non chiedere occasione/budget non necessari e non sostituire ingredienti. Consulta florame_studio_catalog per gli ID. Ogni modifica invia la ricetta COMPLETA conservando i fiori non modificati, packaging e fiorista; parentJobId indica la versione precedente. Usa un UUID requestKey nuovo per ciascuna versione, lo stesso nei retry. Attendi retryAfterMs e continua con florame_build_status fino a done. Crea un prodotto, mai un ordine né un pagamento.","security":[],"x-florame-annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid"},"lines":{"type":"array","items":{"type":"object","properties":{"flowerId":{"type":"string","minLength":1,"maxLength":100},"color":{"type":"string","minLength":1,"maxLength":50},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["flowerId","color","quantity"],"additionalProperties":false},"minItems":1,"maxItems":30},"packaging":{"type":"object","properties":{"carta":{"type":"object","properties":{"type":{"type":"string","enum":["grezza","tessuto"]},"color":{"anyOf":[{"type":"string","enum":["white","lightpink","fuchsia","blue","skyblue","green","yellow","orange","red"]},{"type":"null"}]}},"required":["type","color"],"additionalProperties":false},"nastro":{"type":"object","properties":{"type":{"type":"string","enum":["rafia","tessuto"]},"color":{"anyOf":[{"$ref":"#/properties/packaging/properties/carta/properties/color/anyOf/0"},{"type":"null"}]}},"required":["type","color"],"additionalProperties":false},"decorazioni":{"type":"object","properties":{"verde":{"type":"boolean"},"nebiolina":{"type":"boolean"}},"required":["verde","nebiolina"],"additionalProperties":false}},"required":["carta","nastro","decorazioni"],"additionalProperties":false},"title":{"type":"string","minLength":1,"maxLength":100},"parentJobId":{"type":"string","pattern":"^[a-f0-9]{48}$"},"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"},"maxPrice":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]}},"required":["requestKey","lines"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_build_status":{"post":{"operationId":"florame_build_status","summary":"Completa la creazione","description":"Prosegui la generazione già autorizzata: controlla la foto e crea la scheda prodotto con la medesima ricetta. Rispetta retryAfterMs. Non avviare una nuova creazione. Al termine mostra foto, elenco ingredienti, prezzo indicativo e link prodotto.","security":[],"x-florame-annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^[a-f0-9]{48}$"}},"required":["jobId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_get_creation":{"post":{"operationId":"florame_get_creation","summary":"Riprendi il bouquet","description":"Rileggi una creazione e la sua ricetta senza generare o pubblicare. Usa per recuperare il configuratore o preparare una modifica.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^[a-f0-9]{48}$"}},"required":["jobId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_capabilities":{"post":{"operationId":"florame_capabilities","summary":"Funzioni Florame","description":"Verifica le capacità reali, i limiti della voce e il checkout. Non promettere acquisti in chat o accesso a ordini privati.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_suggest_addresses":{"post":{"operationId":"florame_suggest_addresses","summary":"Suggerisci indirizzi","description":"Cerca indirizzi italiani dal testo fornito dal cliente, con via, civico e città. Presenta i suggerimenti e chiedi la scelta; non inferire indirizzi personali. Usa un UUID sessionToken per la stessa ricerca.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":5,"maxLength":250},"sessionToken":{"type":"string","format":"uuid"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_resolve_address":{"post":{"operationId":"florame_resolve_address","summary":"Verifica indirizzo","description":"Verifica via, civico e CAP di un placeId scelto dai suggerimenti Florame. Non inventare ID. La verifica non conferma ancora copertura o consegna.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"placeId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"sessionToken":{"type":"string","format":"uuid"}},"required":["placeId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_delivery_options":{"post":{"operationId":"florame_delivery_options","summary":"Orari del fiorista","description":"Leggi le fasce ancora selezionabili per fiorista e data, considerando orari, giorni speciali e scadenze. Usa le key restituite. Poi ricontrolla copertura con addressPlaceId, data e fascia in florame_find_florists.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"deliveryType":{"type":"string","enum":["delivery","pickup"],"default":"delivery"}},"required":["partnerSlug","selectedDate"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_prepare_bouquet":{"post":{"operationId":"florame_prepare_bouquet","summary":"Porta la composizione su Florame","description":"Su scelta esplicita del cliente, ricontrolla indirizzo, fiorista, data, fascia, fiori, colori e quantità. Usa solo ID e colori restituiti da Florame. Restituisce un link privato a Crea valido 30 minuti. Non genera immagini, riserva stock o crea ordini. Conferma le scelte prima di applicarle sul sito. UUID requestKey nuovo per ogni composizione, identico nei retry.","security":[],"x-florame-annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestKey":{"type":"string","format":"uuid"},"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","minLength":1,"maxLength":48},"title":{"type":"string","maxLength":100},"language":{"type":"string","enum":["it","en"],"default":"it"},"flowers":{"type":"array","items":{"type":"object","properties":{"flowerId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,120}$"},"color":{"type":"string","minLength":1,"maxLength":80},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["flowerId","color","quantity"],"additionalProperties":false},"minItems":1,"maxItems":40}},"required":["requestKey","partnerSlug","addressPlaceId","selectedDate","selectedTimeSlot","flowers"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_find_florists":{"post":{"operationId":"florame_find_florists","summary":"Trova un fiorista","description":"Cerca fioristi Florame per località, data, fascia e consegna o ritiro. Per la copertura reale passa addressPlaceId verificato. Il CAP da solo è indicativo. Chiedi la località se manca; non dedurla dalla posizione del dispositivo.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cap":{"type":"string","pattern":"^\\d{5}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"deliveryType":{"type":"string","enum":["delivery","pickup"]},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","maxLength":48},"city":{"type":"string","maxLength":100},"search":{"type":"string","maxLength":160},"limit":{"type":"integer","minimum":1,"maximum":24,"default":8}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_explore_bouquets":{"post":{"operationId":"florame_explore_bouquets","summary":"Esplora bouquet","description":"Catalogo di ispirazione, senza promessa di disponibilità. Per acquistare, cercare fiori specifici o quantità esatte usa florame_search_available_bouquets dopo indirizzo, fiorista, giorno e fascia. Il budget filtra prima della paginazione; consulta hasMore. Prezzi senza fiorista indicativi.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"},"occasion":{"type":"string","enum":["all","romance","birthday","milestones","mother","thanks","new_home","new_baby","wedding","sympathy","get_well","apology","corporate","party","just_because"]},"onlyAvailable":{"type":"boolean"},"page":{"type":"integer","minimum":1,"maximum":100,"default":1},"limit":{"type":"integer","minimum":1,"maximum":24,"default":8},"maxPrice":{"type":"number","minimum":0,"maximum":10000}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_get_bouquet":{"post":{"operationId":"florame_get_bouquet","summary":"Dettagli bouquet","description":"Leggi i dettagli pubblici usando un bouquetId restituito da Florame. Non inventare identificativi.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bouquetId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,120}$"}},"required":["bouquetId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_florist_products":{"post":{"operationId":"florame_florist_products","summary":"Catalogo del fiorista","description":"Leggi prodotti attuali del fiorista con data, CAP e fascia. La copertura del catalogo è per CAP: usa florame_compare_offers con addressPlaceId per l’indirizzo esatto. Distingui acquisto immediato e richiesta soggetta ad accettazione. Non garantire disponibilità senza un’offerta completa.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"deliveryType":{"type":"string","enum":["delivery","pickup"]},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","maxLength":48},"city":{"type":"string","maxLength":100},"limit":{"type":"integer","minimum":1,"maximum":120,"default":12}},"required":["partnerSlug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_flowers":{"post":{"operationId":"florame_flowers","summary":"Fiori e colori","description":"Leggi fiori disponibili per un fiorista/CAP oppure il catalogo creativo senza disponibilità garantita.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_compare_offers":{"post":{"operationId":"florame_compare_offers","summary":"Confronta le opzioni","description":"Confronta fioristi, prezzi e modalità di consegna o ritiro per un prodotto reale già restituito da Florame. Non confondere richiesta e acquisto immediato.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productId":{"type":"string","pattern":"^\\d{5,24}$"},"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"deliveryType":{"type":"string","enum":["delivery","pickup"]},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","maxLength":48},"city":{"type":"string","maxLength":100}},"required":["productId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_design_bouquet":{"post":{"operationId":"florame_design_bouquet","summary":"Componi un bouquet","description":"Interpreta una richiesta creativa aperta. Chiedi solo dettagli indispensabili; con quantità precise usa direttamente florame_build_bouquet. Usa un UUID requestKey nuovo per proposta, lo stesso nei retry. Attendi retryAfterMs e usa florame_design_status; poi passa la ricetta a florame_build_bouquet per foto e prodotto.","security":[],"x-florame-annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":10,"maxLength":700},"requestKey":{"type":"string","format":"uuid"},"language":{"type":"string","enum":["it","en"],"default":"it"},"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"}},"required":["prompt","requestKey"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_design_status":{"post":{"operationId":"florame_design_status","summary":"Stato composizione","description":"Controlla una proposta precedentemente avviata, usando solo il jobId ricevuto. Rispetta retryAfterMs; non ripetere l’avvio.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^[a-f0-9]{48}$"}},"required":["jobId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/tools/florame_prepare_cart":{"post":{"operationId":"florame_prepare_cart","summary":"Prepara la selezione","description":"Ricontrolla prodotti del medesimo fiorista e restituisce il link al carrello Florame. Non crea un ordine, non addebita e non conferma consegna. Il cliente completa consegna, destinatario, biglietto ed extra sul sito. Non chiedere numeri di carta.","security":[],"x-florame-annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"partnerSlug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,99}$"},"cap":{"type":"string","pattern":"^\\d{5}$"},"addressPlaceId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9_-]+$"},"deliveryType":{"type":"string","enum":["delivery","pickup"]},"selectedDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"selectedTimeSlot":{"type":"string","maxLength":48},"city":{"type":"string","maxLength":100},"lines":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"string","pattern":"^\\d{5,24}$"},"quantity":{"type":"integer","minimum":1,"maximum":20}},"required":["productId","quantity"],"additionalProperties":false},"minItems":1,"maxItems":12}},"required":["partnerSlug","lines"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}}},"responses":{"200":{"description":"Tool result; use returned identifiers, checkedAt and retryAfterMs.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input; correct the reported fields.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"OAuth connection required; follow WWW-Authenticate.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"403":{"description":"Scope or current account/shop permission denied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"409":{"description":"Idempotency conflict or uncertain result: reconcile before another change.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Body exceeds 64 KiB.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Choice is no longer valid; recheck the address, stock or slot.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; wait Retry-After before retrying.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Temporarily unavailable; retry later.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}