# Rate Comparativa POST

L'endpoint RateComparativa permette un'analisi preventiva dei costi calcolabili a priori di una spedizione attraverso i Vostri listini (attivi o passivi) salvati e gestiti su Gsped, come ad esempio:

* Nolo (costo base della spedizione)
* Spese accessorie calcolabili a priori
  * Costo contrassegno
  * Costo assicurazione
  * FUEL
  * Zone disagiate o Isole
  * Servizi accessori (al piano, al sabato etc)
  * Addebiti per oversize su regole standard
  * Etc.

Sono possibili due tipi di rating:

* **ATTIVO**: richiede solo analisi costi in base ai listini attivi, ovvero quelli che usate per rivendere la spedizione ai vostri clienti
* **PASSIVO**: analisi dei costi di spedizione in base ai listini sottoscritti con il corriere in fase di contrattazione. Questa modalità aggiunge in automatico anche il rating ATTIVO per permettere anche un'analisi rapida della differenza tra costi di acquisto e di vendita del trasporto.

***

### RateComparativa - POST

<mark style="color:$warning;">`POST`</mark> `https://api.gsped.it/[ISTANZA]/RateComparativa`

**Headers**

| Name           | Type   | Description                |
| -------------- | ------ | -------------------------- |
| x-api-key\*    | String | Apikey rilasciata da Gsped |
| Content-Type\* | String | `application/json`         |

**Request Body**

| Name                    | Type    | Description                                                                                                                                                                                                      |
| ----------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| client\_id\*            | Integer | Client ID sul quale si vuole fare il rating                                                                                                                                                                      |
| colli\*                 | Integer | Numero di colli che formano la spedizione                                                                                                                                                                        |
| peso\*                  | Float   | Peso totale della spedizione in KG                                                                                                                                                                               |
| volume\*                | Float   | Volume totale della spedizione in Mc                                                                                                                                                                             |
| sender\_addr\*          | String  | Indirizzo del MITTENTE                                                                                                                                                                                           |
| sender\_city\*          | String  | Città del MITTENTE                                                                                                                                                                                               |
| sender\_cap\*           | String  | Codice postale MITTENTE                                                                                                                                                                                          |
| sender\_prov\*          | String  | Sigla della provincia MITTENTE                                                                                                                                                                                   |
| sender\_country\_code\* | String  | Sigla ISO 2 char nazione MITTENTE                                                                                                                                                                                |
| rcpt\_addr\*            | String  | Indirizzo del DESTINATARIO                                                                                                                                                                                       |
| rcpt\_city\*            | String  | Città DESTINATARIO                                                                                                                                                                                               |
| rcpt\_cap\*             | String  | Codice postale DESTINATARIO                                                                                                                                                                                      |
| rcpt\_prov\*            | String  | Sigla della provincia DESTINATARIO                                                                                                                                                                               |
| rcpt\_country\_code\*   | String  | Sigla ISO 2 char nazione DESTINATARIO                                                                                                                                                                            |
| tipo\_listino\*         | String  | `attivo` \| `passivo` — identifica il tipo di rating da eseguire. **N.B.: Se metti `passivo` restituisce entrambi**                                                                                              |
| invoiced\_client\_id    | Integer | Client ID sul quale verrà fatto il rating ATTIVO nelle istanze RESELLER                                                                                                                                          |
| departure\_date\_time   | String  | Data ora della presunta pronta merce in formato `YYYY-MM-DD HH:MM:SS`. Se non valorizzato viene usato il datetime della richiesta. **N.B.: Se la data fornita è nel passato, la chiamata restituirà un errore!** |
| contrassegno            | Float   | Ammontare del contrassegno spedizione                                                                                                                                                                            |
| valore                  | Float   | Cifra del valore assicurato                                                                                                                                                                                      |
| documenti               | String  | `0` \| `1` — identifica se si tratta di una spedizione di documenti                                                                                                                                              |
| al\_piano               | String  | `0` \| `1` — identifica se si è richiesto il servizio di consegna al piano (calcolato solo se il corriere fornisce il servizio)                                                                                  |
| al\_sabato              | String  | `0` \| `1` — identifica la richiesta di servizio di consegna al sabato (calcolato solo se il corriere fornisce il servizio)                                                                                      |
| preavviso\_telefonico   | String  | `S` \| `N` — identifica se è richiesto preavviso telefonico alla consegna                                                                                                                                        |
| gls\_exchange           | String  | `N` \| `S` — identifica la richiesta del servizio EXCHANGE per il corriere GLS                                                                                                                                   |
| corriereRichiesto       | Integer | Identifica l'ID del corriere specifico di cui si vogliono i risultati                                                                                                                                            |
| servizioRichiesto       | Integer | Identifica l'ID del servizio di cui si vuole il risultato. Funziona in combinata con `corriereRichiesto`                                                                                                         |
| corrieriEsclusi         | Array   | Lista di ID corrieri Gsped da escludere dal calcolo. **Non può essere usato insieme a** `corriereRichiesto`                                                                                                      |
| serviziEsclusi          | Array   | Lista di ID servizi Gsped da escludere dal calcolo. **Può essere usato solo in presenza di** `corriereRichiesto` e **non può essere usato insieme a** `servizioRichiesto`                                        |
| daticolli               | Array   | Dati dei singoli colli in CM \| KG \| MC. Campi: `altezza`, `larghezza`, `lunghezza`, `peso`, `volume`                                                                                                           |

{% hint style="warning" %}

### **Regole di utilizzo parametri di filtro**

* `corrieriEsclusi` e `corriereRichiesto` **non possono essere usati insieme**
* `serviziEsclusi` e `servizioRichiesto` **non possono essere usati insieme**
* `serviziEsclusi` è utilizzabile **solo in presenza di** `corriereRichiesto`&#x20;
  {% endhint %}

#### Snippets codice di esempio

{% tabs %}
{% tab title="PHP" %}

```javascript
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.gsped.it/sandbox/RateComparativa",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    "colli"               => 1,
    "peso"                => 3.81,
    "volume"              => 0.01,
    "tipo_listino"        => "passivo",
    "sender_addr"         => "Via Ofanto snc",
    "sender_cap"          => "04100",
    "sender_city"         => "Latina",
    "sender_prov"         => "LT",
    "sender_country_code" => "IT",
    "rcpt_addr"           => "Corso Felice Cavallotti 15",
    "rcpt_cap"            => "15121",
    "rcpt_city"           => "Alessandria",
    "rcpt_prov"           => "AL",
    "rcpt_country_code"   => "IT",
    "client_id"           => 390,
    "user_id"             => 6
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "x-api-key: YOUR-API-KEY"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

{% endtab %}

{% tab title="PYTHON" %}

```python
import http.client
import json

conn = http.client.HTTPSConnection("api.gsped.it")

payload = json.dumps({
  "colli": 1,
  "peso": 3.81,
  "volume": 0.01,
  "tipo_listino": "passivo",
  "sender_addr": "Via Ofanto snc",
  "sender_cap": "04100",
  "sender_city": "Latina",
  "sender_prov": "LT",
  "sender_country_code": "IT",
  "rcpt_addr": "Corso Felice Cavallotti 15",
  "rcpt_cap": "15121",
  "rcpt_city": "Alessandria",
  "rcpt_prov": "AL",
  "rcpt_country_code": "IT",
  "client_id": 390,
  "user_id": 6
})

headers = {
  "Content-Type": "application/json",
  "x-api-key": "YOUR-API-KEY"
}

conn.request("POST", "/sandbox/RateComparativa", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
```

{% endtab %}

{% tab title="GO" %}

```javascript
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.gsped.it/sandbox/RateComparativa"

	payload := strings.NewReader(`{
  "colli": 1,
  "peso": 3.81,
  "volume": 0.01,
  "tipo_listino": "passivo",
  "sender_addr": "Via Ofanto snc",
  "sender_cap": "04100",
  "sender_city": "Latina",
  "sender_prov": "LT",
  "sender_country_code": "IT",
  "rcpt_addr": "Corso Felice Cavallotti 15",
  "rcpt_cap": "15121",
  "rcpt_city": "Alessandria",
  "rcpt_prov": "AL",
  "rcpt_country_code": "IT",
  "client_id": 390,
  "user_id": 6
}`)

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")
	req.Header.Add("x-api-key", "YOUR-API-KEY")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://api.gsped.it/sandbox/RateComparativa"),
    Headers =
    {
        { "x-api-key", "YOUR-API-KEY" },
    },
    Content = new StringContent(@"{
  ""colli"": 1,
  ""peso"": 3.81,
  ""volume"": 0.01,
  ""tipo_listino"": ""passivo"",
  ""sender_addr"": ""Via Ofanto snc"",
  ""sender_cap"": ""04100"",
  ""sender_city"": ""Latina"",
  ""sender_prov"": ""LT"",
  ""sender_country_code"": ""IT"",
  ""rcpt_addr"": ""Corso Felice Cavallotti 15"",
  ""rcpt_cap"": ""15121"",
  ""rcpt_city"": ""Alessandria"",
  ""rcpt_prov"": ""AL"",
  ""rcpt_country_code"": ""IT"",
  ""client_id"": 390,
  ""user_id"": 6
}")
    {
        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
    }
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
```

{% endtab %}

{% tab title="cURL" %}

```shellscript
curl --request POST \
  --url https://api.gsped.it/sandbox/RateComparativa \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR-API-KEY' \
  --data '{
  "colli": 1,
  "peso": 3.81,
  "volume": 0.01,
  "tipo_listino": "passivo",
  "sender_addr": "Via Ofanto snc",
  "sender_cap": "04100",
  "sender_city": "Latina",
  "sender_prov": "LT",
  "sender_country_code": "IT",
  "rcpt_addr": "Corso Felice Cavallotti 15",
  "rcpt_cap": "15121",
  "rcpt_city": "Alessandria",
  "rcpt_prov": "AL",
  "rcpt_country_code": "IT",
  "client_id": 390,
  "user_id": 6
}'
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "colli": 1,
    "sender_country_code": "IT",
    "volume": 0.01,
    "peso": 3.81,
    "sender_prov": "LT",
    "sender_addr": "Via Ofanto snc",
    "sender_city": "Latina",
    "sender_cap": "04100",
    "client_id": 390,
    "tipo_listino": "passivo",
    "rcpt_country_code": "IT",
    "rcpt_addr": "Corso Felice cavallotti 15",
    "rcpt_cap": "15121",
    "rcpt_city": "Alessandria",
    "rcpt_prov": "AL",
    "user_id": 6
}
```

{% endtab %}
{% endtabs %}

#### **Response d'esempio**

{% tabs %}
{% tab title="200: OK Informazioni spedizione" %}

```json
{
    "status": 200,
    "response": {
        "passivo": {
            "UPS - Client": {
                "Nazionale UPS Express Saver": {
                    "codice_corriere": 103,
                    "codice_servizio": "0",
                    "client_id": "2",
                    "nolo": 5.75,
                    "varie": 0.75,
                    "totale": 7.94,
                    "totale_tasse": "1.44",
                    "totale_no_tax": 6.50,
                    "cutoff": "2026-03-26T18:00:00",
                    "arrivo": "2026-03-27T23:30:00",
                    "tempo_transito": "1",
                    "arrivo_stimato": "2026-03-27",
                    "varie_dettaglio": {
                        "fuel_surcharge": "0.75"
                    }
                },
                "Nazionale UPS Standard": {
                    "codice_corriere": 103,
                    "codice_servizio": "3",
                    "client_id": "2",
                    "nolo": 5.43,
                    "varie": 0.40,
                    "totale": 7.11,
                    "totale_tasse": "1.28",
                    "totale_no_tax": 5.83,
                    "cutoff": "2026-03-26T18:00:00",
                    "arrivo": "2026-03-27T23:30:00",
                    "tempo_transito": "1",
                    "arrivo_stimato": "2026-03-27",
                    "varie_dettaglio": {
                        "fuel_surcharge": "0.40"
                    }
                }
            },
            "DHL - Client": {
                "Domestic Express": {
                    "codice_corriere": 104,
                    "codice_servizio": "0",
                    "client_id": "2",
                    "nolo": 9.70,
                    "varie": 1.77,
                    "totale": 13.99,
                    "totale_tasse": 2.52,
                    "totale_no_tax": 11.47,
                    "cutoff": "2026-03-26T17:00:00",
                    "arrivo": "2026-03-27T23:59:00",
                    "tempo_transito": "1",
                    "arrivo_stimato": "2026-03-27",
                    "varie_dettaglio": {
                        "fuel_surcharge": 1.77
                    }
                }
            },
            "GLS - Client": {
                "Espresso Nazionale": {
                    "codice_corriere": 101,
                    "codice_servizio": "0",
                    "client_id": "2",
                    "nolo": 4.20,
                    "varie": 0.05,
                    "totale": 4.25,
                    "totale_tasse": 0,
                    "totale_no_tax": 4.25,
                    "cutoff": null,
                    "arrivo": null,
                    "tempo_transito": 1,
                    "arrivo_stimato": "2026-03-27",
                    "varie_dettaglio": {
                        "Adeguamento autostrade e traghetti": 0.05
                    }
                }
            }
        }
    }
}
```

{% endtab %}

{% tab title="400: Bad Request Errore input" %}

```json
{
    "status": 400,
    "errors": "client_id: dato obbligatorio"
}
```

{% endtab %}

{% tab title="403: Forbidden Apikey invalida" %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found Spedizione non trovata" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

***

### Lowest - POST

<mark style="color:$warning;">`POST`</mark> `https://api.gsped.it/[ISTANZA]/RateComparativa/lowest`

L'utilizzo di questo endpoint è uguale a quello della RateComparativa POST ma in risposta si ottiene solo il servizio **più economico** rispettivamente per listino attivo/passivo come da richiesta effettuata.

#### **Headers**

| Name           | Type   | Description                |
| -------------- | ------ | -------------------------- |
| x-api-key\*    | String | Apikey rilasciata da Gsped |
| Content-Type\* | String | `application/json`         |

#### **Response d'esempio**

{% tabs %}
{% tab title="200: OK Informazioni spedizione" %}

```json
{
    "status": 200,
    "response": {
        "passivo": {
            "GLS - Client": {
                "Espresso Nazionale": {
                    "codice_corriere": 101,
                    "codice_servizio": "0",
                    "client_id": "2",
                    "nolo": 4.20,
                    "varie": 0.05,
                    "totale": 4.25,
                    "totale_tasse": 0,
                    "totale_no_tax": 4.25,
                    "cutoff": null,
                    "arrivo": null,
                    "tempo_transito": 1,
                    "arrivo_stimato": "2026-03-27",
                    "varie_dettaglio": {
                        "Adeguamento autostrade e traghetti": 0.05
                    }
                }
            }
        }
    }
}
```

{% endtab %}

{% tab title="400: Bad Request Errore input" %}

```json
{
    "status": 400,
    "errors": "client_id: dato obbligatorio"
}
```

{% endtab %}

{% tab title="403: Forbidden Apikey invalida" %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found Spedizione non trovata" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

***

### Fastest - POST

<mark style="color:$warning;">`POST`</mark> `https://api.gsped.it/[ISTANZA]/RateComparativa/fastest`

L'utilizzo di questo endpoint è uguale a quello della RateComparativa POST ma in risposta si ottiene solo il corriere **più veloce** rispettivamente per listino attivo/passivo come da richiesta effettuata.

**Headers**

| Name           | Type   | Description                |
| -------------- | ------ | -------------------------- |
| x-api-key\*    | String | Apikey rilasciata da Gsped |
| Content-Type\* | String | `application/json`         |

#### **Response d'esempio**

{% tabs %}
{% tab title="200: OK Informazioni spedizione" %}

```json
{
    "status": 200,
    "response": {
        "passivo": {
            "GLS - Client": {
                "Espresso Nazionale": {
                    "codice_corriere": 101,
                    "codice_servizio": "0",
                    "client_id": "2",
                    "nolo": 4.20,
                    "varie": 0.05,
                    "totale": 4.25,
                    "totale_tasse": 0,
                    "totale_no_tax": 4.25,
                    "cutoff": null,
                    "arrivo": null,
                    "tempo_transito": 1,
                    "arrivo_stimato": "2026-03-27",
                    "varie_dettaglio": {
                        "Adeguamento autostrade e traghetti": 0.05
                    }
                }
            }
        }
    }
}
```

{% endtab %}

{% tab title="400: Bad Request Errore input" %}

```json
{
    "status": 400,
    "errors": "client_id: dato obbligatorio"
}
```

{% endtab %}

{% tab title="403: Forbidden Apikey invalida" %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found Spedizione non trovata" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}
