> ## Documentation Index
> Fetch the complete documentation index at: https://api-doc.xmenu.it/llms.txt
> Use this file to discover all available pages before exploring further.

# Validazione indirizzo consegna

> Valida un indirizzo di consegna prima della creazione di un ordine, confermando se la località è raggiungibile e recuperando le informazioni sulla zona di consegna.

<Badge color="blue" icon="key">`write:orders`</Badge>


## OpenAPI

````yaml openapi-it.json POST /order/validate_address
openapi: 3.1.0
info:
  title: xMenu API
  description: API Pubblica xMenu - Endpoint REST e notifiche webhook
  version: 1.0.0
servers:
  - url: https://app.xmenu.it/api
    description: xMenu API Production
security: []
paths:
  /order/validate_address:
    post:
      tags:
        - Inserimento Ordine
      summary: Validazione indirizzo consegna
      description: >-
        Valida un indirizzo di consegna prima della creazione di un ordine,
        confermando se la località è raggiungibile e recuperando le informazioni
        sulla zona di consegna.
      operationId: orderValidateAddress
      requestBody:
        required: true
        description: >-
          L'indirizzo può essere fornito in due modalità alternative:

          - **Modalità 1**: campo `address` con indirizzo completo come stringa
          unica

          - **Modalità 2**: campi separati (`street`, `number`, `city`,
          `province`, `zip`, `country`)


          È necessario fornire l'indirizzo in una delle due modalità.
        content:
          application/json:
            schema:
              type: object
              properties:
                address:
                  type: string
                  description: >-
                    **[Modalità 1]** Indirizzo completo come stringa unica
                    (alternativa ai campi separati)
                street:
                  type: string
                  description: '**[Modalità 2]** Nome della via/viale'
                number:
                  type: string
                  description: '**[Modalità 2]** Numero civico'
                city:
                  type: string
                  description: '**[Modalità 2]** Comune'
                province:
                  type: string
                  description: '**[Modalità 2]** Codice provincia'
                zip:
                  type: string
                  description: '**[Modalità 2]** Codice postale'
                country:
                  type: string
                  description: '**[Modalità 2]** Codice paese (es. IT)'
                language:
                  type: string
                  description: >-
                    Codice lingua ISO 639-1; di default viene utilizzato quello
                    impostato nelle impostazioni del ristorante
      responses:
        '200':
          description: Risposta validazione indirizzo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderValidateAddressResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
        - clientId: []
          clientSecret: []
        - oauth2: []
components:
  schemas:
    OrderValidateAddressResponse:
      type: object
      required:
        - success
      properties:
        success:
          type: boolean
          description: >-
            Risultato dell'operazione: `true` se ha avuto successo, `false` se è
            fallita
        error:
          type: string
          description: >-
            Codice errore se l'operazione è fallita. Valori possibili:

            - `INVALID_ADDRESS` = indirizzo non valido, incompleto o non trovato

            - `ADDRESS_NOT_SERVED` = indirizzo fuori dalla zona di servizio

            - `DELIVERY_NOT_AVAILABLE` = servizio di consegna non disponibile

            - `MISSING_PARAMETER` = parametri dell'indirizzo mancanti o non
            sufficienti a identificare l'indirizzo (non è stato fornito né
            `address` né la combinazione `street` + `city` + `number`, oppure i
            campi forniti non bastano)

            - `EXTERNAL_SERVICE_ERROR` = il servizio esterno di
            geocodifica/calcolo distanze è temporaneamente non disponibile


            Vedi [Codici errore](/docs/it/overview/error-codes) per i codici
            errore generali che possono comunque verificarsi.
        message:
          type: string
          description: Descrizione leggibile dell'errore se l'operazione è fallita
        data:
          type: object
          description: Dati indirizzo validato (presente solo se success = true)
          required:
            - address
            - subrestaurant_uid
            - kms
          properties:
            address:
              type: object
              required:
                - place_id
                - street
                - number
                - city
                - province
                - zip
                - country
                - lat
                - lng
              properties:
                place_id:
                  type: string
                  description: Identificatore univoco indirizzo
                street:
                  type: string
                  description: Nome della via/viale
                number:
                  type: string
                  description: Numero civico
                city:
                  type: string
                  description: Comune
                province:
                  type: string
                  description: Codice provincia
                zip:
                  type: string
                  description: Codice postale
                country:
                  type: string
                  description: Codice paese
                lat:
                  type: number
                  format: double
                  description: Latitudine
                lng:
                  type: number
                  format: double
                  description: Longitudine
            subrestaurant_uid:
              type: string
              description: UID del punto vendita assegnato per gestire la consegna
            kms:
              type: number
              format: double
              description: Distanza in chilometri
            delivery_fee:
              type: number
              format: double
              description: Costo di consegna
            order_min:
              type: number
              format: double
              nullable: true
              description: >-
                Importo minimo dell'ordine richiesto per le consegne in questa
                fascia chilometrica. `null` se non è configurato un minimo per
                questa fascia.
  responses:
    Unauthorized:
      description: Autenticazione fallita.
      content:
        application/json:
          schema:
            oneOf:
              - type: object
                description: >-
                  Formato errore standard (quando si usa autenticazione API Key
                  o Client ID/Secret)
                required:
                  - success
                  - error
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Sempre false per gli errori
                  error:
                    type: string
                    enum:
                      - RESTAURANT_NOT_FOUND
                      - INVALID_KEY
                      - INVALID_AUTH
                    description: Codice errore
                  message:
                    type: string
                    description: Descrizione errore leggibile
              - type: object
                description: >-
                  Formato errore OAuth (quando si usa l'autenticazione Bearer
                  token)
                required:
                  - error
                properties:
                  error:
                    type: string
                    enum:
                      - invalid_token
                      - invalid_request
                    description: Codice errore OAuth (RFC 6749)
                  error_description:
                    type: string
                    description: Descrizione errore leggibile
          examples:
            standard:
              summary: Formato errore standard (API Key / Client ID+Secret)
              value:
                success: false
                error: INVALID_KEY
                message: La chiave API fornita non è valida
            oauth:
              summary: Formato errore OAuth (Bearer token)
              value:
                error: invalid_token
                error_description: Access token non valido o scaduto
    Forbidden:
      description: Autorizzazione fallita - permessi insufficienti o accesso negato.
      content:
        application/json:
          schema:
            oneOf:
              - type: object
                description: >-
                  Formato errore standard (quando si usa autenticazione API Key
                  o Client ID/Secret)
                required:
                  - success
                  - error
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Sempre false per gli errori
                  error:
                    type: string
                    enum:
                      - API_DISABLED
                      - INSUFFICIENT_SCOPE
                      - UNAUTHORIZED
                    description: Codice errore
                  message:
                    type: string
                    description: Descrizione errore leggibile
              - type: object
                description: >-
                  Formato errore OAuth (quando si usa l'autenticazione Bearer
                  token)
                required:
                  - error
                properties:
                  error:
                    type: string
                    enum:
                      - insufficient_scope
                      - invalid_request
                    description: Codice errore OAuth (RFC 6749)
                  error_description:
                    type: string
                    description: Descrizione errore leggibile
          examples:
            standard:
              summary: Formato errore standard (API Key / Client ID+Secret)
              value:
                success: false
                error: API_DISABLED
                message: L'accesso API non è abilitato per il ristorante
            oauth:
              summary: Formato errore OAuth (Bearer token)
              value:
                error: insufficient_scope
                error_description: 'Permessi mancanti richiesti: write:orders'
  securitySchemes:
    clientId:
      type: apiKey
      in: header
      name: X-Client-Id
      description: >-
        Client ID per l'autenticazione API Client (deve essere usato insieme al
        Client Secret)
    clientSecret:
      type: apiKey
      in: header
      name: X-Client-Secret
      description: >-
        Client Secret per l'autenticazione API Client (deve essere usato insieme
        al Client ID)
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://app.xmenu.it/oauth/token
          scopes: {}
      description: >-
        Autenticazione OAuth 2.0 utilizzando il flusso client credentials. Il
        token di accesso deve essere incluso nell'header Authorization come
        Bearer token.

````