> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://es.megaport.ferndocs.com/es/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://es.megaport.ferndocs.com/es/_mcp/server.

# Validar Orden de Puerto (v3)

POST https://api.megaport.com/v3/networkdesign/validate
Content-Type: application/json

Valida la solicitud y asegura que todos los parámetros estén dentro del rango y sean aceptables para el sistema de aprovisionamiento. Una solicitud de validación exitosa devuelve los detalles de precios.

Puede personalizar el cuerpo de la solicitud con los detalles de configuración para el Puerto.

Esta solicitud no confirma el pedido.

`promoCode` es una cadena opcional que se puede usar para ingresar un código promocional para el pedido de servicio. El código no se valida, por lo que si el código no existe o no funciona para el servicio, la llamada seguirá siendo exitosa.

Reference: https://es.megaport.ferndocs.com/es/api-reference/internet-exchange-ix/validate-port-order-v-3

## Servers

- `https://api.megaport.com` (Entorno de producción, default)
- `https://api-staging.megaport.com` (Entorno de pruebas (solo pruebas, se restablece cada 24 horas))

## Request

### Body (application/json)

This endpoint expects a list of V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItems.

- `list of V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItems`

## Response

### 200

Validar Orden de Puerto (v3) / Validar Orden de Puerto (v3) / Validar Orden de LAG (v3) / Validar Orden de LAG (v3) / Validar Orden de VXC (v3) / Validar Orden de VXC (v3) - Término de Contrato de 12 Meses / Validar Orden de VXC (v3) - Término de Contrato de 12 Meses / Validar Orden de VXC (v3) / Validar Orden de Internet Megaport (v3) / Validar Orden de Internet Megaport (v3) / Validar AWS - VIF Alojado (v3) / Validar AWS - VIF Alojado (v3) / Validar AWS - Conexión Alojada (v3) / Validar AWS - Conexión Alojada (v3) / Validar Orden de MCR (v3) / Validar Orden de MCR (v3) / Validar Orden de VXC de MCR (v3) / Validar Orden de VXC de MCR (v3) / Validar MVE (v3) / Ejemplo de vNIC (v3) / Ejemplo de vNIC (v3) / Validar MVE (v3) / Validar Orden de Internet Megaport (v3) / Validar Orden de Internet Megaport con vNICs (v3) / Validar Orden de Internet Megaport (v3) / Validar Orden de Internet Megaport con vNICs (v3) / Validar Orden de Internet Megaport de Palo Alto (v3) / Validar Orden de Internet Megaport de Palo Alto (v3) / Validar Orden de VXC de MVE (v3) / Validar Orden de VXC de MVE (v3) / Validar Orden de IX (v3) / Validar Orden de IX (v3)

- `data` (list of V3NetworkdesignValidatePostResponsesContentApplicationJsonSchemaDataItems, optional)
- `message` (string, optional)
- `terms` (string, optional)

## Types

### V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItems

- `associatedIxs` (list of V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItemsAssociatedIxsItems, optional)
- `productUid` (string, optional)

### V3NetworkdesignValidatePostResponsesContentApplicationJsonSchemaDataItems

- `market` (string, optional)
- `price` (V3NetworkdesignValidatePostResponsesContentApplicationJsonSchemaDataItemsPrice, optional)
- `productType` (string, optional)
- `productUid` (string, optional)
- `serviceName` (string, optional)
- `string` (string, optional)

### V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItemsAssociatedIxsItems

- `asn` (double, optional)
- `macAddress` (string, optional)
- `networkServiceType` (string, optional)
- `productName` (string, optional)
- `rateLimit` (double, optional)
- `vlan` (double, optional)

### V3NetworkdesignValidatePostResponsesContentApplicationJsonSchemaDataItemsPrice

- `currency` (string, optional)
- `dailyRate` (double, optional)
- `dailySetup` (double, optional)
- `empty` (boolean, optional)
- `fixedRecurringCharge` (double, optional)
- `hourlyRate` (double, optional)
- `hourlySetup` (double, optional)
- `key` (string, optional)
- `longHaulMbpsRate` (double, optional)
- `mbpsRate` (double, optional)
- `monthlyRate` (double, optional)
- `monthlySetup` (double, optional)
- `postPaidBaseRate` (string, optional)
- `productType` (string, optional)

## Examples

### Validate AWS - Hosted Connection (v3)

**Request**

```json
[
  {
    "productUid": "a0f36688-48a7-4208-a58b-d965cb423694",
    "associatedVxcs": [
      {
        "aEnd": {
          "vlan": 101
        },
        "bEnd": {
          "partnerConfig": {
            "connectType": "AWSHC",
            "name": "Example VXC",
            "ownerAccount": "{{AWSAccount}}"
          },
          "productUid": "f274bd09-1796-43af-8837-28fa4fa2a1ab"
        },
        "productName": "My Amazon HC",
        "rateLimit": "100"
      }
    ]
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 100,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0.18,
        "mbpsRate": 0.18,
        "monthlyRate": 126,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0.08
      },
      "productType": "VXC",
      "productUid": "5654dcb3-e878-4b31-be59-96d61ece79bc",
      "serviceName": "My Amazon HC",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate AWS - Hosted Connection (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "productUid": "a0f36688-48a7-4208-a58b-d965cb423694",
        "associatedVxcs": [
            {
                "aEnd": { "vlan": 101 },
                "bEnd": {
                    "partnerConfig": {
                        "connectType": "AWSHC",
                        "name": "Example VXC",
                        "ownerAccount": "{{AWSAccount}}"
                    },
                    "productUid": "f274bd09-1796-43af-8837-28fa4fa2a1ab"
                },
                "productName": "My Amazon HC",
                "rateLimit": "100"
            }
        ]
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate AWS - Hosted Connection (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"productUid":"a0f36688-48a7-4208-a58b-d965cb423694","associatedVxcs":[{"aEnd":{"vlan":101},"bEnd":{"partnerConfig":{"connectType":"AWSHC","name":"Example VXC","ownerAccount":"{{AWSAccount}}"},"productUid":"f274bd09-1796-43af-8837-28fa4fa2a1ab"},"productName":"My Amazon HC","rateLimit":"100"}]}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate AWS - Hosted Connection (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"AWSHC\",\n            \"name\": \"Example VXC\",\n            \"ownerAccount\": \"{{AWSAccount}}\"\n          },\n          \"productUid\": \"f274bd09-1796-43af-8837-28fa4fa2a1ab\"\n        },\n        \"productName\": \"My Amazon HC\",\n        \"rateLimit\": \"100\"\n      }\n    ]\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate AWS - Hosted Connection (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"AWSHC\",\n            \"name\": \"Example VXC\",\n            \"ownerAccount\": \"{{AWSAccount}}\"\n          },\n          \"productUid\": \"f274bd09-1796-43af-8837-28fa4fa2a1ab\"\n        },\n        \"productName\": \"My Amazon HC\",\n        \"rateLimit\": \"100\"\n      }\n    ]\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate AWS - Hosted Connection (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"AWSHC\",\n            \"name\": \"Example VXC\",\n            \"ownerAccount\": \"{{AWSAccount}}\"\n          },\n          \"productUid\": \"f274bd09-1796-43af-8837-28fa4fa2a1ab\"\n        },\n        \"productName\": \"My Amazon HC\",\n        \"rateLimit\": \"100\"\n      }\n    ]\n  }\n]")
  .asString();
```

```php Validate AWS - Hosted Connection (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "productUid": "a0f36688-48a7-4208-a58b-d965cb423694",
    "associatedVxcs": [
      {
        "aEnd": {
          "vlan": 101
        },
        "bEnd": {
          "partnerConfig": {
            "connectType": "AWSHC",
            "name": "Example VXC",
            "ownerAccount": "{{AWSAccount}}"
          },
          "productUid": "f274bd09-1796-43af-8837-28fa4fa2a1ab"
        },
        "productName": "My Amazon HC",
        "rateLimit": "100"
      }
    ]
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate AWS - Hosted Connection (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"AWSHC\",\n            \"name\": \"Example VXC\",\n            \"ownerAccount\": \"{{AWSAccount}}\"\n          },\n          \"productUid\": \"f274bd09-1796-43af-8837-28fa4fa2a1ab\"\n        },\n        \"productName\": \"My Amazon HC\",\n        \"rateLimit\": \"100\"\n      }\n    ]\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate AWS - Hosted Connection (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "productUid": "a0f36688-48a7-4208-a58b-d965cb423694",
    "associatedVxcs": [
      [
        "aEnd": ["vlan": 101],
        "bEnd": [
          "partnerConfig": [
            "connectType": "AWSHC",
            "name": "Example VXC",
            "ownerAccount": "{{AWSAccount}}"
          ],
          "productUid": "f274bd09-1796-43af-8837-28fa4fa2a1ab"
        ],
        "productName": "My Amazon HC",
        "rateLimit": "100"
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate AWS - Hosted VIF (v3)

**Request**

```json
[
  {
    "productUid": "da2e71e4-825e-4b62-8cec-672cbc64f1b8",
    "associatedVxcs": [
      {
        "aEnd": {
          "vlan": 101
        },
        "bEnd": {
          "partnerConfig": {
            "amazonAsn": 64555,
            "amazonIpAddress": null,
            "asn": 65105,
            "authKey": "123455",
            "connectType": "AWS",
            "customerIpAddress": null,
            "ownerAccount": "{{AWSAccount}}",
            "prefixes": "10.0.1.0/24",
            "type": "private"
          },
          "productUid": "b3e3a199-9230-4f56-8ac2-560c0b932626",
          "vlan": 0
        },
        "productName": "My Amazon Direct Connect",
        "rateLimit": "50"
      }
    ]
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 100,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0.18,
        "mbpsRate": 0.18,
        "monthlyRate": 109,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "16cae63e-b385-4581-a0ef-116f4d948173",
      "serviceName": "My Amazon Direct Connect",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate AWS - Hosted VIF (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "productUid": "da2e71e4-825e-4b62-8cec-672cbc64f1b8",
        "associatedVxcs": [
            {
                "aEnd": { "vlan": 101 },
                "bEnd": {
                    "partnerConfig": {
                        "amazonAsn": 64555,
                        "amazonIpAddress": None,
                        "asn": 65105,
                        "authKey": "123455",
                        "connectType": "AWS",
                        "customerIpAddress": None,
                        "ownerAccount": "{{AWSAccount}}",
                        "prefixes": "10.0.1.0/24",
                        "type": "private"
                    },
                    "productUid": "b3e3a199-9230-4f56-8ac2-560c0b932626",
                    "vlan": 0
                },
                "productName": "My Amazon Direct Connect",
                "rateLimit": "50"
            }
        ]
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate AWS - Hosted VIF (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"productUid":"da2e71e4-825e-4b62-8cec-672cbc64f1b8","associatedVxcs":[{"aEnd":{"vlan":101},"bEnd":{"partnerConfig":{"amazonAsn":64555,"amazonIpAddress":null,"asn":65105,"authKey":"123455","connectType":"AWS","customerIpAddress":null,"ownerAccount":"{{AWSAccount}}","prefixes":"10.0.1.0/24","type":"private"},"productUid":"b3e3a199-9230-4f56-8ac2-560c0b932626","vlan":0},"productName":"My Amazon Direct Connect","rateLimit":"50"}]}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate AWS - Hosted VIF (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"productUid\": \"da2e71e4-825e-4b62-8cec-672cbc64f1b8\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"amazonAsn\": 64555,\n            \"amazonIpAddress\": null,\n            \"asn\": 65105,\n            \"authKey\": \"123455\",\n            \"connectType\": \"AWS\",\n            \"customerIpAddress\": null,\n            \"ownerAccount\": \"{{AWSAccount}}\",\n            \"prefixes\": \"10.0.1.0/24\",\n            \"type\": \"private\"\n          },\n          \"productUid\": \"b3e3a199-9230-4f56-8ac2-560c0b932626\",\n          \"vlan\": 0\n        },\n        \"productName\": \"My Amazon Direct Connect\",\n        \"rateLimit\": \"50\"\n      }\n    ]\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate AWS - Hosted VIF (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"productUid\": \"da2e71e4-825e-4b62-8cec-672cbc64f1b8\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"amazonAsn\": 64555,\n            \"amazonIpAddress\": null,\n            \"asn\": 65105,\n            \"authKey\": \"123455\",\n            \"connectType\": \"AWS\",\n            \"customerIpAddress\": null,\n            \"ownerAccount\": \"{{AWSAccount}}\",\n            \"prefixes\": \"10.0.1.0/24\",\n            \"type\": \"private\"\n          },\n          \"productUid\": \"b3e3a199-9230-4f56-8ac2-560c0b932626\",\n          \"vlan\": 0\n        },\n        \"productName\": \"My Amazon Direct Connect\",\n        \"rateLimit\": \"50\"\n      }\n    ]\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate AWS - Hosted VIF (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"productUid\": \"da2e71e4-825e-4b62-8cec-672cbc64f1b8\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"amazonAsn\": 64555,\n            \"amazonIpAddress\": null,\n            \"asn\": 65105,\n            \"authKey\": \"123455\",\n            \"connectType\": \"AWS\",\n            \"customerIpAddress\": null,\n            \"ownerAccount\": \"{{AWSAccount}}\",\n            \"prefixes\": \"10.0.1.0/24\",\n            \"type\": \"private\"\n          },\n          \"productUid\": \"b3e3a199-9230-4f56-8ac2-560c0b932626\",\n          \"vlan\": 0\n        },\n        \"productName\": \"My Amazon Direct Connect\",\n        \"rateLimit\": \"50\"\n      }\n    ]\n  }\n]")
  .asString();
```

```php Validate AWS - Hosted VIF (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "productUid": "da2e71e4-825e-4b62-8cec-672cbc64f1b8",
    "associatedVxcs": [
      {
        "aEnd": {
          "vlan": 101
        },
        "bEnd": {
          "partnerConfig": {
            "amazonAsn": 64555,
            "amazonIpAddress": null,
            "asn": 65105,
            "authKey": "123455",
            "connectType": "AWS",
            "customerIpAddress": null,
            "ownerAccount": "{{AWSAccount}}",
            "prefixes": "10.0.1.0/24",
            "type": "private"
          },
          "productUid": "b3e3a199-9230-4f56-8ac2-560c0b932626",
          "vlan": 0
        },
        "productName": "My Amazon Direct Connect",
        "rateLimit": "50"
      }
    ]
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate AWS - Hosted VIF (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"productUid\": \"da2e71e4-825e-4b62-8cec-672cbc64f1b8\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 101\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"amazonAsn\": 64555,\n            \"amazonIpAddress\": null,\n            \"asn\": 65105,\n            \"authKey\": \"123455\",\n            \"connectType\": \"AWS\",\n            \"customerIpAddress\": null,\n            \"ownerAccount\": \"{{AWSAccount}}\",\n            \"prefixes\": \"10.0.1.0/24\",\n            \"type\": \"private\"\n          },\n          \"productUid\": \"b3e3a199-9230-4f56-8ac2-560c0b932626\",\n          \"vlan\": 0\n        },\n        \"productName\": \"My Amazon Direct Connect\",\n        \"rateLimit\": \"50\"\n      }\n    ]\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate AWS - Hosted VIF (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "productUid": "da2e71e4-825e-4b62-8cec-672cbc64f1b8",
    "associatedVxcs": [
      [
        "aEnd": ["vlan": 101],
        "bEnd": [
          "partnerConfig": [
            "amazonAsn": 64555,
            "amazonIpAddress": ,
            "asn": 65105,
            "authKey": "123455",
            "connectType": "AWS",
            "customerIpAddress": ,
            "ownerAccount": "{{AWSAccount}}",
            "prefixes": "10.0.1.0/24",
            "type": "private"
          ],
          "productUid": "b3e3a199-9230-4f56-8ac2-560c0b932626",
          "vlan": 0
        ],
        "productName": "My Amazon Direct Connect",
        "rateLimit": "50"
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate IX Order (v3)

**Request**

```json
[
  {
    "associatedIxs": [
      {
        "asn": 12345,
        "macAddress": "00:11:22:33:44:55",
        "networkServiceType": "Los Angeles IX",
        "productName": "My LA IX",
        "rateLimit": 500,
        "vlan": 2001
      }
    ],
    "productUid": "a0f36688-48a7-4208-a58b-d965cb423694"
  }
]
```

**Response**

```json
{
  "data": [
    {
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 0,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0,
        "mbpsRate": 0,
        "monthlyRate": 0,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "IX"
      },
      "productType": "IX",
      "productUid": "96f6171c-96f7-44a7-bae3-a49b1f2e9e18",
      "serviceName": "My LA IX"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate IX Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "associatedIxs": [
            {
                "asn": 12345,
                "macAddress": "00:11:22:33:44:55",
                "networkServiceType": "Los Angeles IX",
                "productName": "My LA IX",
                "rateLimit": 500,
                "vlan": 2001
            }
        ],
        "productUid": "a0f36688-48a7-4208-a58b-d965cb423694"
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate IX Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"associatedIxs":[{"asn":12345,"macAddress":"00:11:22:33:44:55","networkServiceType":"Los Angeles IX","productName":"My LA IX","rateLimit":500,"vlan":2001}],"productUid":"a0f36688-48a7-4208-a58b-d965cb423694"}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate IX Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"associatedIxs\": [\n      {\n        \"asn\": 12345,\n        \"macAddress\": \"00:11:22:33:44:55\",\n        \"networkServiceType\": \"Los Angeles IX\",\n        \"productName\": \"My LA IX\",\n        \"rateLimit\": 500,\n        \"vlan\": 2001\n      }\n    ],\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\"\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate IX Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"associatedIxs\": [\n      {\n        \"asn\": 12345,\n        \"macAddress\": \"00:11:22:33:44:55\",\n        \"networkServiceType\": \"Los Angeles IX\",\n        \"productName\": \"My LA IX\",\n        \"rateLimit\": 500,\n        \"vlan\": 2001\n      }\n    ],\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\"\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate IX Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"associatedIxs\": [\n      {\n        \"asn\": 12345,\n        \"macAddress\": \"00:11:22:33:44:55\",\n        \"networkServiceType\": \"Los Angeles IX\",\n        \"productName\": \"My LA IX\",\n        \"rateLimit\": 500,\n        \"vlan\": 2001\n      }\n    ],\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\"\n  }\n]")
  .asString();
```

```php Validate IX Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "associatedIxs": [
      {
        "asn": 12345,
        "macAddress": "00:11:22:33:44:55",
        "networkServiceType": "Los Angeles IX",
        "productName": "My LA IX",
        "rateLimit": 500,
        "vlan": 2001
      }
    ],
    "productUid": "a0f36688-48a7-4208-a58b-d965cb423694"
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate IX Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"associatedIxs\": [\n      {\n        \"asn\": 12345,\n        \"macAddress\": \"00:11:22:33:44:55\",\n        \"networkServiceType\": \"Los Angeles IX\",\n        \"productName\": \"My LA IX\",\n        \"rateLimit\": 500,\n        \"vlan\": 2001\n      }\n    ],\n    \"productUid\": \"a0f36688-48a7-4208-a58b-d965cb423694\"\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate IX Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "associatedIxs": [
      [
        "asn": 12345,
        "macAddress": "00:11:22:33:44:55",
        "networkServiceType": "Los Angeles IX",
        "productName": "My LA IX",
        "rateLimit": 500,
        "vlan": 2001
      ]
    ],
    "productUid": "a0f36688-48a7-4208-a58b-d965cb423694"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate MCR Order (v3)

**Request**

```json
[
  {
    "addOns": {
      "addOnType": "IP_SEC",
      "tunnelCount": 10
    },
    "config": {
      "diversityZone": "red"
    },
    "costCentre": "Optional finance reference",
    "locationId": 60,
    "market": "US",
    "portSpeed": 1000,
    "productName": "Test MCR",
    "productType": "MCR2",
    "promoCode": "promox3mnthfree2",
    "virtual": false
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 0,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0.6,
        "mbpsRate": 0.6,
        "monthlyRate": 600,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "MCR2",
        "discounts": [
          {
            "amount": 0,
            "discountReason": "TERM",
            "percentageAmount": null
          }
        ],
        "monthlyRackRate": 600,
        "priceBookVersionId": 2176
      },
      "productType": "MCR2",
      "productUid": "ee9e1cd0-5e3e-410b-acdb-e995cbccf4ee",
      "serviceName": "Test MCR",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate MCR Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "addOns": {
            "addOnType": "IP_SEC",
            "tunnelCount": 10
        },
        "config": { "diversityZone": "red" },
        "costCentre": "Optional finance reference",
        "locationId": 60,
        "market": "US",
        "portSpeed": 1000,
        "productName": "Test MCR",
        "productType": "MCR2",
        "promoCode": "promox3mnthfree2",
        "virtual": False
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate MCR Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"addOns":{"addOnType":"IP_SEC","tunnelCount":10},"config":{"diversityZone":"red"},"costCentre":"Optional finance reference","locationId":60,"market":"US","portSpeed":1000,"productName":"Test MCR","productType":"MCR2","promoCode":"promox3mnthfree2","virtual":false}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate MCR Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"addOns\": {\n      \"addOnType\": \"IP_SEC\",\n      \"tunnelCount\": 10\n    },\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 1000,\n    \"productName\": \"Test MCR\",\n    \"productType\": \"MCR2\",\n    \"promoCode\": \"promox3mnthfree2\",\n    \"virtual\": false\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate MCR Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"addOns\": {\n      \"addOnType\": \"IP_SEC\",\n      \"tunnelCount\": 10\n    },\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 1000,\n    \"productName\": \"Test MCR\",\n    \"productType\": \"MCR2\",\n    \"promoCode\": \"promox3mnthfree2\",\n    \"virtual\": false\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate MCR Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"addOns\": {\n      \"addOnType\": \"IP_SEC\",\n      \"tunnelCount\": 10\n    },\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 1000,\n    \"productName\": \"Test MCR\",\n    \"productType\": \"MCR2\",\n    \"promoCode\": \"promox3mnthfree2\",\n    \"virtual\": false\n  }\n]")
  .asString();
```

```php Validate MCR Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "addOns": {
      "addOnType": "IP_SEC",
      "tunnelCount": 10
    },
    "config": {
      "diversityZone": "red"
    },
    "costCentre": "Optional finance reference",
    "locationId": 60,
    "market": "US",
    "portSpeed": 1000,
    "productName": "Test MCR",
    "productType": "MCR2",
    "promoCode": "promox3mnthfree2",
    "virtual": false
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate MCR Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"addOns\": {\n      \"addOnType\": \"IP_SEC\",\n      \"tunnelCount\": 10\n    },\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 1000,\n    \"productName\": \"Test MCR\",\n    \"productType\": \"MCR2\",\n    \"promoCode\": \"promox3mnthfree2\",\n    \"virtual\": false\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate MCR Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "addOns": [
      "addOnType": "IP_SEC",
      "tunnelCount": 10
    ],
    "config": ["diversityZone": "red"],
    "costCentre": "Optional finance reference",
    "locationId": 60,
    "market": "US",
    "portSpeed": 1000,
    "productName": "Test MCR",
    "productType": "MCR2",
    "promoCode": "promox3mnthfree2",
    "virtual": false
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate MCR VXC Order (v3)

**Request**

```json
[
  {
    "productUid": "f55ceb5d-7278-4458-9bc6-35d61dceda8b",
    "associatedVxcs": [
      {
        "aEnd": {
          "partnerConfig": {
            "connectType": "VROUTER",
            "interfaces": [
              {
                "bgpConnections": [
                  {
                    "bfdEnabled": true,
                    "denyExportTo": [],
                    "description": "BGP con MED y BFD habilitados",
                    "exportBlacklist": null,
                    "exportPolicy": null,
                    "exportWhitelist": null,
                    "importBlacklist": null,
                    "importWhitelist": null,
                    "localAsn": 133937,
                    "localIpAddress": "10.191.0.25",
                    "medIn": 100,
                    "medOut": 100,
                    "multiplier": null,
                    "password": "cnn6eaeaETSjvjvjvjv",
                    "peerAsn": "62512",
                    "peerIpAddress": "10.191.0.26",
                    "permitExportTo": [],
                    "rxInterval": null,
                    "shutdown": false,
                    "txInterval": null
                  },
                  {
                    "bfdEnabled": false,
                    "denyExportTo": [],
                    "description": "BGP sin MED o BFD",
                    "exportBlacklist": null,
                    "exportPolicy": null,
                    "exportWhitelist": null,
                    "importBlacklist": null,
                    "importWhitelist": null,
                    "localAsn": 133937,
                    "localIpAddress": "10.191.0.25",
                    "medIn": null,
                    "medOut": null,
                    "multiplier": null,
                    "password": "cnn23049asdkfj",
                    "peerAsn": "62511",
                    "peerIpAddress": "10.191.0.27",
                    "permitExportTo": [],
                    "rxInterval": null,
                    "shutdown": false,
                    "txInterval": null
                  }
                ],
                "ipAddresses": [
                  "10.191.0.25/29"
                ],
                "ipMtu": 5000,
                "ipRoutes": [
                  {
                    "description": "probar ruta estática 1",
                    "nextHop": "10.191.0.26",
                    "prefix": "10.0.0.0/24"
                  }
                ],
                "natIpAddresses": [],
                "vlan": null
              }
            ]
          }
        },
        "bEnd": {
          "partnerConfig": {
            "asn": "133937",
            "name": "Test Connection",
            "ownerAccount": "684021030471",
            "type": null
          },
          "productUid": "6461f0bc-549a-42c4-ac32-d51a6132f959"
        },
        "connectType": "AWSHC",
        "productName": "Test Connection",
        "productType": "VXC",
        "productUid": "5843c2dd-12f2-4c03-9946-158cfeebe73c",
        "rateLimit": 500
      }
    ]
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "JP",
      "price": {
        "currency": "JPY",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 22000,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 403.12224,
        "mbpsRate": 403.12224,
        "monthlyRate": 230633.44,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 14.14464
      },
      "productType": "VXC",
      "productUid": "5843c2dd-12f2-4c03-9946-158cfeebe73c",
      "serviceName": "Test Connection",
      "string": "Tokyo"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate MCR VXC Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "productUid": "f55ceb5d-7278-4458-9bc6-35d61dceda8b",
        "associatedVxcs": [
            {
                "aEnd": { "partnerConfig": {
                        "connectType": "VROUTER",
                        "interfaces": [
                            {
                                "bgpConnections": [
                                    {
                                        "bfdEnabled": True,
                                        "denyExportTo": [],
                                        "description": "BGP con MED y BFD habilitados",
                                        "exportBlacklist": None,
                                        "exportPolicy": None,
                                        "exportWhitelist": None,
                                        "importBlacklist": None,
                                        "importWhitelist": None,
                                        "localAsn": 133937,
                                        "localIpAddress": "10.191.0.25",
                                        "medIn": 100,
                                        "medOut": 100,
                                        "multiplier": None,
                                        "password": "cnn6eaeaETSjvjvjvjv",
                                        "peerAsn": "62512",
                                        "peerIpAddress": "10.191.0.26",
                                        "permitExportTo": [],
                                        "rxInterval": None,
                                        "shutdown": False,
                                        "txInterval": None
                                    },
                                    {
                                        "bfdEnabled": False,
                                        "denyExportTo": [],
                                        "description": "BGP sin MED o BFD",
                                        "exportBlacklist": None,
                                        "exportPolicy": None,
                                        "exportWhitelist": None,
                                        "importBlacklist": None,
                                        "importWhitelist": None,
                                        "localAsn": 133937,
                                        "localIpAddress": "10.191.0.25",
                                        "medIn": None,
                                        "medOut": None,
                                        "multiplier": None,
                                        "password": "cnn23049asdkfj",
                                        "peerAsn": "62511",
                                        "peerIpAddress": "10.191.0.27",
                                        "permitExportTo": [],
                                        "rxInterval": None,
                                        "shutdown": False,
                                        "txInterval": None
                                    }
                                ],
                                "ipAddresses": ["10.191.0.25/29"],
                                "ipMtu": 5000,
                                "ipRoutes": [
                                    {
                                        "description": "probar ruta estática 1",
                                        "nextHop": "10.191.0.26",
                                        "prefix": "10.0.0.0/24"
                                    }
                                ],
                                "natIpAddresses": [],
                                "vlan": None
                            }
                        ]
                    } },
                "bEnd": {
                    "partnerConfig": {
                        "asn": "133937",
                        "name": "Test Connection",
                        "ownerAccount": "684021030471",
                        "type": None
                    },
                    "productUid": "6461f0bc-549a-42c4-ac32-d51a6132f959"
                },
                "connectType": "AWSHC",
                "productName": "Test Connection",
                "productType": "VXC",
                "productUid": "5843c2dd-12f2-4c03-9946-158cfeebe73c",
                "rateLimit": 500
            }
        ]
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate MCR VXC Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"productUid":"f55ceb5d-7278-4458-9bc6-35d61dceda8b","associatedVxcs":[{"aEnd":{"partnerConfig":{"connectType":"VROUTER","interfaces":[{"bgpConnections":[{"bfdEnabled":true,"denyExportTo":[],"description":"BGP con MED y BFD habilitados","exportBlacklist":null,"exportPolicy":null,"exportWhitelist":null,"importBlacklist":null,"importWhitelist":null,"localAsn":133937,"localIpAddress":"10.191.0.25","medIn":100,"medOut":100,"multiplier":null,"password":"cnn6eaeaETSjvjvjvjv","peerAsn":"62512","peerIpAddress":"10.191.0.26","permitExportTo":[],"rxInterval":null,"shutdown":false,"txInterval":null},{"bfdEnabled":false,"denyExportTo":[],"description":"BGP sin MED o BFD","exportBlacklist":null,"exportPolicy":null,"exportWhitelist":null,"importBlacklist":null,"importWhitelist":null,"localAsn":133937,"localIpAddress":"10.191.0.25","medIn":null,"medOut":null,"multiplier":null,"password":"cnn23049asdkfj","peerAsn":"62511","peerIpAddress":"10.191.0.27","permitExportTo":[],"rxInterval":null,"shutdown":false,"txInterval":null}],"ipAddresses":["10.191.0.25/29"],"ipMtu":5000,"ipRoutes":[{"description":"probar ruta estática 1","nextHop":"10.191.0.26","prefix":"10.0.0.0/24"}],"natIpAddresses":[],"vlan":null}]}},"bEnd":{"partnerConfig":{"asn":"133937","name":"Test Connection","ownerAccount":"684021030471","type":null},"productUid":"6461f0bc-549a-42c4-ac32-d51a6132f959"},"connectType":"AWSHC","productName":"Test Connection","productType":"VXC","productUid":"5843c2dd-12f2-4c03-9946-158cfeebe73c","rateLimit":500}]}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate MCR VXC Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"productUid\": \"f55ceb5d-7278-4458-9bc6-35d61dceda8b\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"VROUTER\",\n            \"interfaces\": [\n              {\n                \"bgpConnections\": [\n                  {\n                    \"bfdEnabled\": true,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP con MED y BFD habilitados\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": 100,\n                    \"medOut\": 100,\n                    \"multiplier\": null,\n                    \"password\": \"cnn6eaeaETSjvjvjvjv\",\n                    \"peerAsn\": \"62512\",\n                    \"peerIpAddress\": \"10.191.0.26\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  },\n                  {\n                    \"bfdEnabled\": false,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP sin MED o BFD\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": null,\n                    \"medOut\": null,\n                    \"multiplier\": null,\n                    \"password\": \"cnn23049asdkfj\",\n                    \"peerAsn\": \"62511\",\n                    \"peerIpAddress\": \"10.191.0.27\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  }\n                ],\n                \"ipAddresses\": [\n                  \"10.191.0.25/29\"\n                ],\n                \"ipMtu\": 5000,\n                \"ipRoutes\": [\n                  {\n                    \"description\": \"probar ruta estática 1\",\n                    \"nextHop\": \"10.191.0.26\",\n                    \"prefix\": \"10.0.0.0/24\"\n                  }\n                ],\n                \"natIpAddresses\": [],\n                \"vlan\": null\n              }\n            ]\n          }\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"asn\": \"133937\",\n            \"name\": \"Test Connection\",\n            \"ownerAccount\": \"684021030471\",\n            \"type\": null\n          },\n          \"productUid\": \"6461f0bc-549a-42c4-ac32-d51a6132f959\"\n        },\n        \"connectType\": \"AWSHC\",\n        \"productName\": \"Test Connection\",\n        \"productType\": \"VXC\",\n        \"productUid\": \"5843c2dd-12f2-4c03-9946-158cfeebe73c\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate MCR VXC Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"productUid\": \"f55ceb5d-7278-4458-9bc6-35d61dceda8b\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"VROUTER\",\n            \"interfaces\": [\n              {\n                \"bgpConnections\": [\n                  {\n                    \"bfdEnabled\": true,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP con MED y BFD habilitados\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": 100,\n                    \"medOut\": 100,\n                    \"multiplier\": null,\n                    \"password\": \"cnn6eaeaETSjvjvjvjv\",\n                    \"peerAsn\": \"62512\",\n                    \"peerIpAddress\": \"10.191.0.26\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  },\n                  {\n                    \"bfdEnabled\": false,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP sin MED o BFD\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": null,\n                    \"medOut\": null,\n                    \"multiplier\": null,\n                    \"password\": \"cnn23049asdkfj\",\n                    \"peerAsn\": \"62511\",\n                    \"peerIpAddress\": \"10.191.0.27\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  }\n                ],\n                \"ipAddresses\": [\n                  \"10.191.0.25/29\"\n                ],\n                \"ipMtu\": 5000,\n                \"ipRoutes\": [\n                  {\n                    \"description\": \"probar ruta estática 1\",\n                    \"nextHop\": \"10.191.0.26\",\n                    \"prefix\": \"10.0.0.0/24\"\n                  }\n                ],\n                \"natIpAddresses\": [],\n                \"vlan\": null\n              }\n            ]\n          }\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"asn\": \"133937\",\n            \"name\": \"Test Connection\",\n            \"ownerAccount\": \"684021030471\",\n            \"type\": null\n          },\n          \"productUid\": \"6461f0bc-549a-42c4-ac32-d51a6132f959\"\n        },\n        \"connectType\": \"AWSHC\",\n        \"productName\": \"Test Connection\",\n        \"productType\": \"VXC\",\n        \"productUid\": \"5843c2dd-12f2-4c03-9946-158cfeebe73c\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate MCR VXC Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"productUid\": \"f55ceb5d-7278-4458-9bc6-35d61dceda8b\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"VROUTER\",\n            \"interfaces\": [\n              {\n                \"bgpConnections\": [\n                  {\n                    \"bfdEnabled\": true,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP con MED y BFD habilitados\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": 100,\n                    \"medOut\": 100,\n                    \"multiplier\": null,\n                    \"password\": \"cnn6eaeaETSjvjvjvjv\",\n                    \"peerAsn\": \"62512\",\n                    \"peerIpAddress\": \"10.191.0.26\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  },\n                  {\n                    \"bfdEnabled\": false,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP sin MED o BFD\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": null,\n                    \"medOut\": null,\n                    \"multiplier\": null,\n                    \"password\": \"cnn23049asdkfj\",\n                    \"peerAsn\": \"62511\",\n                    \"peerIpAddress\": \"10.191.0.27\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  }\n                ],\n                \"ipAddresses\": [\n                  \"10.191.0.25/29\"\n                ],\n                \"ipMtu\": 5000,\n                \"ipRoutes\": [\n                  {\n                    \"description\": \"probar ruta estática 1\",\n                    \"nextHop\": \"10.191.0.26\",\n                    \"prefix\": \"10.0.0.0/24\"\n                  }\n                ],\n                \"natIpAddresses\": [],\n                \"vlan\": null\n              }\n            ]\n          }\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"asn\": \"133937\",\n            \"name\": \"Test Connection\",\n            \"ownerAccount\": \"684021030471\",\n            \"type\": null\n          },\n          \"productUid\": \"6461f0bc-549a-42c4-ac32-d51a6132f959\"\n        },\n        \"connectType\": \"AWSHC\",\n        \"productName\": \"Test Connection\",\n        \"productType\": \"VXC\",\n        \"productUid\": \"5843c2dd-12f2-4c03-9946-158cfeebe73c\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]")
  .asString();
```

```php Validate MCR VXC Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "productUid": "f55ceb5d-7278-4458-9bc6-35d61dceda8b",
    "associatedVxcs": [
      {
        "aEnd": {
          "partnerConfig": {
            "connectType": "VROUTER",
            "interfaces": [
              {
                "bgpConnections": [
                  {
                    "bfdEnabled": true,
                    "denyExportTo": [],
                    "description": "BGP con MED y BFD habilitados",
                    "exportBlacklist": null,
                    "exportPolicy": null,
                    "exportWhitelist": null,
                    "importBlacklist": null,
                    "importWhitelist": null,
                    "localAsn": 133937,
                    "localIpAddress": "10.191.0.25",
                    "medIn": 100,
                    "medOut": 100,
                    "multiplier": null,
                    "password": "cnn6eaeaETSjvjvjvjv",
                    "peerAsn": "62512",
                    "peerIpAddress": "10.191.0.26",
                    "permitExportTo": [],
                    "rxInterval": null,
                    "shutdown": false,
                    "txInterval": null
                  },
                  {
                    "bfdEnabled": false,
                    "denyExportTo": [],
                    "description": "BGP sin MED o BFD",
                    "exportBlacklist": null,
                    "exportPolicy": null,
                    "exportWhitelist": null,
                    "importBlacklist": null,
                    "importWhitelist": null,
                    "localAsn": 133937,
                    "localIpAddress": "10.191.0.25",
                    "medIn": null,
                    "medOut": null,
                    "multiplier": null,
                    "password": "cnn23049asdkfj",
                    "peerAsn": "62511",
                    "peerIpAddress": "10.191.0.27",
                    "permitExportTo": [],
                    "rxInterval": null,
                    "shutdown": false,
                    "txInterval": null
                  }
                ],
                "ipAddresses": [
                  "10.191.0.25/29"
                ],
                "ipMtu": 5000,
                "ipRoutes": [
                  {
                    "description": "probar ruta estática 1",
                    "nextHop": "10.191.0.26",
                    "prefix": "10.0.0.0/24"
                  }
                ],
                "natIpAddresses": [],
                "vlan": null
              }
            ]
          }
        },
        "bEnd": {
          "partnerConfig": {
            "asn": "133937",
            "name": "Test Connection",
            "ownerAccount": "684021030471",
            "type": null
          },
          "productUid": "6461f0bc-549a-42c4-ac32-d51a6132f959"
        },
        "connectType": "AWSHC",
        "productName": "Test Connection",
        "productType": "VXC",
        "productUid": "5843c2dd-12f2-4c03-9946-158cfeebe73c",
        "rateLimit": 500
      }
    ]
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate MCR VXC Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"productUid\": \"f55ceb5d-7278-4458-9bc6-35d61dceda8b\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"partnerConfig\": {\n            \"connectType\": \"VROUTER\",\n            \"interfaces\": [\n              {\n                \"bgpConnections\": [\n                  {\n                    \"bfdEnabled\": true,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP con MED y BFD habilitados\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": 100,\n                    \"medOut\": 100,\n                    \"multiplier\": null,\n                    \"password\": \"cnn6eaeaETSjvjvjvjv\",\n                    \"peerAsn\": \"62512\",\n                    \"peerIpAddress\": \"10.191.0.26\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  },\n                  {\n                    \"bfdEnabled\": false,\n                    \"denyExportTo\": [],\n                    \"description\": \"BGP sin MED o BFD\",\n                    \"exportBlacklist\": null,\n                    \"exportPolicy\": null,\n                    \"exportWhitelist\": null,\n                    \"importBlacklist\": null,\n                    \"importWhitelist\": null,\n                    \"localAsn\": 133937,\n                    \"localIpAddress\": \"10.191.0.25\",\n                    \"medIn\": null,\n                    \"medOut\": null,\n                    \"multiplier\": null,\n                    \"password\": \"cnn23049asdkfj\",\n                    \"peerAsn\": \"62511\",\n                    \"peerIpAddress\": \"10.191.0.27\",\n                    \"permitExportTo\": [],\n                    \"rxInterval\": null,\n                    \"shutdown\": false,\n                    \"txInterval\": null\n                  }\n                ],\n                \"ipAddresses\": [\n                  \"10.191.0.25/29\"\n                ],\n                \"ipMtu\": 5000,\n                \"ipRoutes\": [\n                  {\n                    \"description\": \"probar ruta estática 1\",\n                    \"nextHop\": \"10.191.0.26\",\n                    \"prefix\": \"10.0.0.0/24\"\n                  }\n                ],\n                \"natIpAddresses\": [],\n                \"vlan\": null\n              }\n            ]\n          }\n        },\n        \"bEnd\": {\n          \"partnerConfig\": {\n            \"asn\": \"133937\",\n            \"name\": \"Test Connection\",\n            \"ownerAccount\": \"684021030471\",\n            \"type\": null\n          },\n          \"productUid\": \"6461f0bc-549a-42c4-ac32-d51a6132f959\"\n        },\n        \"connectType\": \"AWSHC\",\n        \"productName\": \"Test Connection\",\n        \"productType\": \"VXC\",\n        \"productUid\": \"5843c2dd-12f2-4c03-9946-158cfeebe73c\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate MCR VXC Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "productUid": "f55ceb5d-7278-4458-9bc6-35d61dceda8b",
    "associatedVxcs": [
      [
        "aEnd": ["partnerConfig": [
            "connectType": "VROUTER",
            "interfaces": [
              [
                "bgpConnections": [
                  [
                    "bfdEnabled": true,
                    "denyExportTo": [],
                    "description": "BGP con MED y BFD habilitados",
                    "exportBlacklist": ,
                    "exportPolicy": ,
                    "exportWhitelist": ,
                    "importBlacklist": ,
                    "importWhitelist": ,
                    "localAsn": 133937,
                    "localIpAddress": "10.191.0.25",
                    "medIn": 100,
                    "medOut": 100,
                    "multiplier": ,
                    "password": "cnn6eaeaETSjvjvjvjv",
                    "peerAsn": "62512",
                    "peerIpAddress": "10.191.0.26",
                    "permitExportTo": [],
                    "rxInterval": ,
                    "shutdown": false,
                    "txInterval": 
                  ],
                  [
                    "bfdEnabled": false,
                    "denyExportTo": [],
                    "description": "BGP sin MED o BFD",
                    "exportBlacklist": ,
                    "exportPolicy": ,
                    "exportWhitelist": ,
                    "importBlacklist": ,
                    "importWhitelist": ,
                    "localAsn": 133937,
                    "localIpAddress": "10.191.0.25",
                    "medIn": ,
                    "medOut": ,
                    "multiplier": ,
                    "password": "cnn23049asdkfj",
                    "peerAsn": "62511",
                    "peerIpAddress": "10.191.0.27",
                    "permitExportTo": [],
                    "rxInterval": ,
                    "shutdown": false,
                    "txInterval": 
                  ]
                ],
                "ipAddresses": ["10.191.0.25/29"],
                "ipMtu": 5000,
                "ipRoutes": [
                  [
                    "description": "probar ruta estática 1",
                    "nextHop": "10.191.0.26",
                    "prefix": "10.0.0.0/24"
                  ]
                ],
                "natIpAddresses": [],
                "vlan": 
              ]
            ]
          ]],
        "bEnd": [
          "partnerConfig": [
            "asn": "133937",
            "name": "Test Connection",
            "ownerAccount": "684021030471",
            "type": 
          ],
          "productUid": "6461f0bc-549a-42c4-ac32-d51a6132f959"
        ],
        "connectType": "AWSHC",
        "productName": "Test Connection",
        "productType": "VXC",
        "productUid": "5843c2dd-12f2-4c03-9946-158cfeebe73c",
        "rateLimit": 500
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate MVE (v3)

**Response**

```json
{
  "data": [
    {
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 1200,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0,
        "monthlyRate": 1200,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "MVE"
      },
      "productType": "MEGAPORT",
      "productUid": "fe19eca3-0f26-4f23-b145-2c87887c6c8f",
      "serviceName": "My small Versa MVE",
      "string": "New York"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate MVE (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

response = requests.post(url)

print(response.json())
```

```javascript Validate MVE (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {method: 'POST'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate MVE (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

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

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

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

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

}
```

```ruby Validate MVE (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
```

```java Validate MVE (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .asString();
```

```php Validate MVE (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate');

echo $response->getBody();
```

```csharp Validate MVE (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
IRestResponse response = client.Execute(request);
```

```swift Validate MVE (v3)
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate MVE VXC Order (v3)

**Request**

```json
[
  {
    "productUid": "e0c78854-16bb-4a3c-b1a6-07464c237c3f",
    "associatedVxcs": [
      {
        "aEnd": {
          "innerVlan": 12,
          "vlan": 102
        },
        "bEnd": {
          "productUid": "5aa96068-38bd-4031-bb36-0d0a9b471bc8",
          "vlan": 101
        },
        "productName": "My MVE VXC",
        "rateLimit": 550
      }
    ]
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 100,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 7.28985507246,
        "mbpsRate": 7.28985507246,
        "monthlyRate": 4109.42,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "50315cdf-6c5c-4a31-9460-832a82ed2708",
      "serviceName": "My MVE VXC",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate MVE VXC Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "productUid": "e0c78854-16bb-4a3c-b1a6-07464c237c3f",
        "associatedVxcs": [
            {
                "aEnd": {
                    "innerVlan": 12,
                    "vlan": 102
                },
                "bEnd": {
                    "productUid": "5aa96068-38bd-4031-bb36-0d0a9b471bc8",
                    "vlan": 101
                },
                "productName": "My MVE VXC",
                "rateLimit": 550
            }
        ]
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate MVE VXC Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"productUid":"e0c78854-16bb-4a3c-b1a6-07464c237c3f","associatedVxcs":[{"aEnd":{"innerVlan":12,"vlan":102},"bEnd":{"productUid":"5aa96068-38bd-4031-bb36-0d0a9b471bc8","vlan":101},"productName":"My MVE VXC","rateLimit":550}]}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate MVE VXC Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"productUid\": \"e0c78854-16bb-4a3c-b1a6-07464c237c3f\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"innerVlan\": 12,\n          \"vlan\": 102\n        },\n        \"bEnd\": {\n          \"productUid\": \"5aa96068-38bd-4031-bb36-0d0a9b471bc8\",\n          \"vlan\": 101\n        },\n        \"productName\": \"My MVE VXC\",\n        \"rateLimit\": 550\n      }\n    ]\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate MVE VXC Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"productUid\": \"e0c78854-16bb-4a3c-b1a6-07464c237c3f\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"innerVlan\": 12,\n          \"vlan\": 102\n        },\n        \"bEnd\": {\n          \"productUid\": \"5aa96068-38bd-4031-bb36-0d0a9b471bc8\",\n          \"vlan\": 101\n        },\n        \"productName\": \"My MVE VXC\",\n        \"rateLimit\": 550\n      }\n    ]\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate MVE VXC Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"productUid\": \"e0c78854-16bb-4a3c-b1a6-07464c237c3f\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"innerVlan\": 12,\n          \"vlan\": 102\n        },\n        \"bEnd\": {\n          \"productUid\": \"5aa96068-38bd-4031-bb36-0d0a9b471bc8\",\n          \"vlan\": 101\n        },\n        \"productName\": \"My MVE VXC\",\n        \"rateLimit\": 550\n      }\n    ]\n  }\n]")
  .asString();
```

```php Validate MVE VXC Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "productUid": "e0c78854-16bb-4a3c-b1a6-07464c237c3f",
    "associatedVxcs": [
      {
        "aEnd": {
          "innerVlan": 12,
          "vlan": 102
        },
        "bEnd": {
          "productUid": "5aa96068-38bd-4031-bb36-0d0a9b471bc8",
          "vlan": 101
        },
        "productName": "My MVE VXC",
        "rateLimit": 550
      }
    ]
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate MVE VXC Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"productUid\": \"e0c78854-16bb-4a3c-b1a6-07464c237c3f\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"innerVlan\": 12,\n          \"vlan\": 102\n        },\n        \"bEnd\": {\n          \"productUid\": \"5aa96068-38bd-4031-bb36-0d0a9b471bc8\",\n          \"vlan\": 101\n        },\n        \"productName\": \"My MVE VXC\",\n        \"rateLimit\": 550\n      }\n    ]\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate MVE VXC Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "productUid": "e0c78854-16bb-4a3c-b1a6-07464c237c3f",
    "associatedVxcs": [
      [
        "aEnd": [
          "innerVlan": 12,
          "vlan": 102
        ],
        "bEnd": [
          "productUid": "5aa96068-38bd-4031-bb36-0d0a9b471bc8",
          "vlan": 101
        ],
        "productName": "My MVE VXC",
        "rateLimit": 550
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate Megaport Internet Order (v3)

**Request**

```json
[
  {
    "productUid": "8c46d67b-63b0-41c5-bcdb-bc390bd77e33",
    "associatedVxcs": [
      {
        "aEnd": {
          "productName": "Test Aruba MVE docs",
          "vNicIndex": 0
        },
        "bEnd": {
          "productUid": "0b59d82d-d1f3-4d4f-932b-ab265e34a489"
        },
        "connectType": "TRANSIT",
        "productName": "Example Transit VXC",
        "productType": "VXC",
        "rateLimit": 10000
      }
    ]
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 0,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 200,
        "mbpsRate": 200,
        "monthlyRate": 200,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "1e63ba1c-71f5-457d-8416-5f072a52cfe5",
      "serviceName": "IP Transit VXC - test",
      "string": "New York"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate Megaport Internet Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "productUid": "8c46d67b-63b0-41c5-bcdb-bc390bd77e33",
        "associatedVxcs": [
            {
                "aEnd": {
                    "productName": "Test Aruba MVE docs",
                    "vNicIndex": 0
                },
                "bEnd": { "productUid": "0b59d82d-d1f3-4d4f-932b-ab265e34a489" },
                "connectType": "TRANSIT",
                "productName": "Example Transit VXC",
                "productType": "VXC",
                "rateLimit": 10000
            }
        ]
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate Megaport Internet Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"productUid":"8c46d67b-63b0-41c5-bcdb-bc390bd77e33","associatedVxcs":[{"aEnd":{"productName":"Test Aruba MVE docs","vNicIndex":0},"bEnd":{"productUid":"0b59d82d-d1f3-4d4f-932b-ab265e34a489"},"connectType":"TRANSIT","productName":"Example Transit VXC","productType":"VXC","rateLimit":10000}]}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate Megaport Internet Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"productUid\": \"8c46d67b-63b0-41c5-bcdb-bc390bd77e33\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"productName\": \"Test Aruba MVE docs\",\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"0b59d82d-d1f3-4d4f-932b-ab265e34a489\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"Example Transit VXC\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 10000\n      }\n    ]\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate Megaport Internet Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"productUid\": \"8c46d67b-63b0-41c5-bcdb-bc390bd77e33\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"productName\": \"Test Aruba MVE docs\",\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"0b59d82d-d1f3-4d4f-932b-ab265e34a489\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"Example Transit VXC\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 10000\n      }\n    ]\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate Megaport Internet Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"productUid\": \"8c46d67b-63b0-41c5-bcdb-bc390bd77e33\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"productName\": \"Test Aruba MVE docs\",\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"0b59d82d-d1f3-4d4f-932b-ab265e34a489\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"Example Transit VXC\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 10000\n      }\n    ]\n  }\n]")
  .asString();
```

```php Validate Megaport Internet Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "productUid": "8c46d67b-63b0-41c5-bcdb-bc390bd77e33",
    "associatedVxcs": [
      {
        "aEnd": {
          "productName": "Test Aruba MVE docs",
          "vNicIndex": 0
        },
        "bEnd": {
          "productUid": "0b59d82d-d1f3-4d4f-932b-ab265e34a489"
        },
        "connectType": "TRANSIT",
        "productName": "Example Transit VXC",
        "productType": "VXC",
        "rateLimit": 10000
      }
    ]
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate Megaport Internet Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"productUid\": \"8c46d67b-63b0-41c5-bcdb-bc390bd77e33\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"productName\": \"Test Aruba MVE docs\",\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"0b59d82d-d1f3-4d4f-932b-ab265e34a489\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"Example Transit VXC\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 10000\n      }\n    ]\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate Megaport Internet Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "productUid": "8c46d67b-63b0-41c5-bcdb-bc390bd77e33",
    "associatedVxcs": [
      [
        "aEnd": [
          "productName": "Test Aruba MVE docs",
          "vNicIndex": 0
        ],
        "bEnd": ["productUid": "0b59d82d-d1f3-4d4f-932b-ab265e34a489"],
        "connectType": "TRANSIT",
        "productName": "Example Transit VXC",
        "productType": "VXC",
        "rateLimit": 10000
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate Megaport Internet Order with vNICs (v3)

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 0,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 9952,
        "mbpsRate": 9952,
        "monthlyRate": 9952,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "6fcd25d3-9eaa-4216-bee2-f37afdf765ef",
      "serviceName": "Example Transit VXC",
      "string": "Chicago"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate Megaport Internet Order with vNICs (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

response = requests.post(url)

print(response.json())
```

```javascript Validate Megaport Internet Order with vNICs (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {method: 'POST'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate Megaport Internet Order with vNICs (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

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

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

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

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

}
```

```ruby Validate Megaport Internet Order with vNICs (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
```

```java Validate Megaport Internet Order with vNICs (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .asString();
```

```php Validate Megaport Internet Order with vNICs (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate');

echo $response->getBody();
```

```csharp Validate Megaport Internet Order with vNICs (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
IRestResponse response = client.Execute(request);
```

```swift Validate Megaport Internet Order with vNICs (v3)
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate Palo Alto Megaport Internet Order (v3)

**Request**

```json
[
  {
    "associatedIxs": [],
    "associatedVxcs": [
      {
        "aEnd": {
          "vNicIndex": 0
        },
        "bEnd": {
          "productUid": "874dbcff-a1f9-4328-9c08-112cd87c20f6"
        },
        "connectType": "TRANSIT",
        "productName": "IP Transit VXC Customised",
        "productType": "VXC",
        "rateLimit": 5000,
        "serviceLicense": {
          "type": "PREPAID"
        }
      }
    ],
    "locationId": 23,
    "portSpeed": 1000,
    "productName": "PA Mve Example",
    "productType": "MVE",
    "vendorConfig": {
      "adminPasswordHash": "$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI",
      "cpuCount": 2,
      "imageId": 32,
      "mveLabel": "MVE 2/8",
      "sshPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7",
      "vendor": "PALO_ALTO"
    },
    "vxcpermitted": true
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 0,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 200,
        "mbpsRate": 200,
        "monthlyRate": 200,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "1e63ba1c-71f5-457d-8416-5f072a52cfe5",
      "serviceName": "IP Transit VXC Customised",
      "string": "New York"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate Palo Alto Megaport Internet Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "associatedIxs": [],
        "associatedVxcs": [
            {
                "aEnd": { "vNicIndex": 0 },
                "bEnd": { "productUid": "874dbcff-a1f9-4328-9c08-112cd87c20f6" },
                "connectType": "TRANSIT",
                "productName": "IP Transit VXC Customised",
                "productType": "VXC",
                "rateLimit": 5000,
                "serviceLicense": { "type": "PREPAID" }
            }
        ],
        "locationId": 23,
        "portSpeed": 1000,
        "productName": "PA Mve Example",
        "productType": "MVE",
        "vendorConfig": {
            "adminPasswordHash": "$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI",
            "cpuCount": 2,
            "imageId": 32,
            "mveLabel": "MVE 2/8",
            "sshPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7",
            "vendor": "PALO_ALTO"
        },
        "vxcpermitted": True
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate Palo Alto Megaport Internet Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"associatedIxs":[],"associatedVxcs":[{"aEnd":{"vNicIndex":0},"bEnd":{"productUid":"874dbcff-a1f9-4328-9c08-112cd87c20f6"},"connectType":"TRANSIT","productName":"IP Transit VXC Customised","productType":"VXC","rateLimit":5000,"serviceLicense":{"type":"PREPAID"}}],"locationId":23,"portSpeed":1000,"productName":"PA Mve Example","productType":"MVE","vendorConfig":{"adminPasswordHash":"$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI","cpuCount":2,"imageId":32,"mveLabel":"MVE 2/8","sshPublicKey":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7","vendor":"PALO_ALTO"},"vxcpermitted":true}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate Palo Alto Megaport Internet Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"874dbcff-a1f9-4328-9c08-112cd87c20f6\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"IP Transit VXC Customised\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 5000,\n        \"serviceLicense\": {\n          \"type\": \"PREPAID\"\n        }\n      }\n    ],\n    \"locationId\": 23,\n    \"portSpeed\": 1000,\n    \"productName\": \"PA Mve Example\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"adminPasswordHash\": \"$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI\",\n      \"cpuCount\": 2,\n      \"imageId\": 32,\n      \"mveLabel\": \"MVE 2/8\",\n      \"sshPublicKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7\",\n      \"vendor\": \"PALO_ALTO\"\n    },\n    \"vxcpermitted\": true\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate Palo Alto Megaport Internet Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"874dbcff-a1f9-4328-9c08-112cd87c20f6\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"IP Transit VXC Customised\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 5000,\n        \"serviceLicense\": {\n          \"type\": \"PREPAID\"\n        }\n      }\n    ],\n    \"locationId\": 23,\n    \"portSpeed\": 1000,\n    \"productName\": \"PA Mve Example\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"adminPasswordHash\": \"$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI\",\n      \"cpuCount\": 2,\n      \"imageId\": 32,\n      \"mveLabel\": \"MVE 2/8\",\n      \"sshPublicKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7\",\n      \"vendor\": \"PALO_ALTO\"\n    },\n    \"vxcpermitted\": true\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate Palo Alto Megaport Internet Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"874dbcff-a1f9-4328-9c08-112cd87c20f6\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"IP Transit VXC Customised\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 5000,\n        \"serviceLicense\": {\n          \"type\": \"PREPAID\"\n        }\n      }\n    ],\n    \"locationId\": 23,\n    \"portSpeed\": 1000,\n    \"productName\": \"PA Mve Example\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"adminPasswordHash\": \"$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI\",\n      \"cpuCount\": 2,\n      \"imageId\": 32,\n      \"mveLabel\": \"MVE 2/8\",\n      \"sshPublicKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7\",\n      \"vendor\": \"PALO_ALTO\"\n    },\n    \"vxcpermitted\": true\n  }\n]")
  .asString();
```

```php Validate Palo Alto Megaport Internet Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "associatedIxs": [],
    "associatedVxcs": [
      {
        "aEnd": {
          "vNicIndex": 0
        },
        "bEnd": {
          "productUid": "874dbcff-a1f9-4328-9c08-112cd87c20f6"
        },
        "connectType": "TRANSIT",
        "productName": "IP Transit VXC Customised",
        "productType": "VXC",
        "rateLimit": 5000,
        "serviceLicense": {
          "type": "PREPAID"
        }
      }
    ],
    "locationId": 23,
    "portSpeed": 1000,
    "productName": "PA Mve Example",
    "productType": "MVE",
    "vendorConfig": {
      "adminPasswordHash": "$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI",
      "cpuCount": 2,
      "imageId": 32,
      "mveLabel": "MVE 2/8",
      "sshPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7",
      "vendor": "PALO_ALTO"
    },
    "vxcpermitted": true
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate Palo Alto Megaport Internet Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vNicIndex\": 0\n        },\n        \"bEnd\": {\n          \"productUid\": \"874dbcff-a1f9-4328-9c08-112cd87c20f6\"\n        },\n        \"connectType\": \"TRANSIT\",\n        \"productName\": \"IP Transit VXC Customised\",\n        \"productType\": \"VXC\",\n        \"rateLimit\": 5000,\n        \"serviceLicense\": {\n          \"type\": \"PREPAID\"\n        }\n      }\n    ],\n    \"locationId\": 23,\n    \"portSpeed\": 1000,\n    \"productName\": \"PA Mve Example\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"adminPasswordHash\": \"$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI\",\n      \"cpuCount\": 2,\n      \"imageId\": 32,\n      \"mveLabel\": \"MVE 2/8\",\n      \"sshPublicKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7\",\n      \"vendor\": \"PALO_ALTO\"\n    },\n    \"vxcpermitted\": true\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate Palo Alto Megaport Internet Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "associatedIxs": [],
    "associatedVxcs": [
      [
        "aEnd": ["vNicIndex": 0],
        "bEnd": ["productUid": "874dbcff-a1f9-4328-9c08-112cd87c20f6"],
        "connectType": "TRANSIT",
        "productName": "IP Transit VXC Customised",
        "productType": "VXC",
        "rateLimit": 5000,
        "serviceLicense": ["type": "PREPAID"]
      ]
    ],
    "locationId": 23,
    "portSpeed": 1000,
    "productName": "PA Mve Example",
    "productType": "MVE",
    "vendorConfig": [
      "adminPasswordHash": "$5$abcdefg/.h$Uzt5FEFjN7FktWr.ffwOReqHHOqsPrD/xWZM1UhlGbI",
      "cpuCount": 2,
      "imageId": 32,
      "mveLabel": "MVE 2/8",
      "sshPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsG1/Lnqxe9V6+R6w7Zraq2z70dCwAcKv9zGf+jj156zagEvosLqtmzJ88LN52eAN3/11eBzS7ADsJKFPbRgJk1eZKwW+Kl/r4TVg+XIzMlPPIlZmXopWFDhvkHL8P/OGLps28GWyKOUHVmerd93nSjOdl//1wCAE9cn2sWPJvn5aYbP6o2R52AIDaVCMkObls1Z/9p/NykI6aZWn8L29wVuYztcMAz/SQQuCVAVn0ToqjfMcJzDgEPUnQtjm1NCSnd0o48kOIwS4GpnBB2OVxy0vC9tpZHeu7NZPepQ6ma05XuHUnZESUTJPXE9ynVI04P6M4z+aPTbFesjmEW+O7",
      "vendor": "PALO_ALTO"
    ],
    "vxcpermitted": true
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate Port Order (v3)

**Request**

```json
[
  {
    "config": {
      "diversityZone": "red"
    },
    "costCentre": "Optional finance reference",
    "locationId": 60,
    "market": "US",
    "portSpeed": 10000,
    "productName": "Test Port",
    "productType": "MEGAPORT",
    "term": 12
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 475,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0,
        "mbpsRate": 0,
        "monthlyRate": 475,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "MEGAPORT"
      },
      "productType": "MEGAPORT",
      "productUid": "53b4dd1c-0fc5-4450-a064-ed323f1a9dd7",
      "serviceName": "Test Port",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate Port Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "config": { "diversityZone": "red" },
        "costCentre": "Optional finance reference",
        "locationId": 60,
        "market": "US",
        "portSpeed": 10000,
        "productName": "Test Port",
        "productType": "MEGAPORT",
        "term": 12
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate Port Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"config":{"diversityZone":"red"},"costCentre":"Optional finance reference","locationId":60,"market":"US","portSpeed":10000,"productName":"Test Port","productType":"MEGAPORT","term":12}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate Port Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 10000,\n    \"productName\": \"Test Port\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate Port Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 10000,\n    \"productName\": \"Test Port\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate Port Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 10000,\n    \"productName\": \"Test Port\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]")
  .asString();
```

```php Validate Port Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "config": {
      "diversityZone": "red"
    },
    "costCentre": "Optional finance reference",
    "locationId": 60,
    "market": "US",
    "portSpeed": 10000,
    "productName": "Test Port",
    "productType": "MEGAPORT",
    "term": 12
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate Port Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"config\": {\n      \"diversityZone\": \"red\"\n    },\n    \"costCentre\": \"Optional finance reference\",\n    \"locationId\": 60,\n    \"market\": \"US\",\n    \"portSpeed\": 10000,\n    \"productName\": \"Test Port\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate Port Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "config": ["diversityZone": "red"],
    "costCentre": "Optional finance reference",
    "locationId": 60,
    "market": "US",
    "portSpeed": 10000,
    "productName": "Test Port",
    "productType": "MEGAPORT",
    "term": 12
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate VXC Order (v3)

**Request**

```json
[
  {
    "productUid": "6b4a75e2-3a27-40ea-8df1-0e5d989318ec",
    "associatedVxcs": [
      {
        "aEnd": {
          "vlan": 2001
        },
        "bEnd": {
          "productUid": "3366d93d-1a19-4d6f-a2e6-a044e835cc82",
          "vlan": 2002
        },
        "productName": "My API VXC - LA to Bay Area",
        "rateLimit": 500
      }
    ]
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 100,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0.18,
        "mbpsRate": 0.18,
        "monthlyRate": 190,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "b67d368e-3f24-4c36-aaa7-2951f91bbee4",
      "serviceName": "My API VXC - LA to Bay Area",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate VXC Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "productUid": "6b4a75e2-3a27-40ea-8df1-0e5d989318ec",
        "associatedVxcs": [
            {
                "aEnd": { "vlan": 2001 },
                "bEnd": {
                    "productUid": "3366d93d-1a19-4d6f-a2e6-a044e835cc82",
                    "vlan": 2002
                },
                "productName": "My API VXC - LA to Bay Area",
                "rateLimit": 500
            }
        ]
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate VXC Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"productUid":"6b4a75e2-3a27-40ea-8df1-0e5d989318ec","associatedVxcs":[{"aEnd":{"vlan":2001},"bEnd":{"productUid":"3366d93d-1a19-4d6f-a2e6-a044e835cc82","vlan":2002},"productName":"My API VXC - LA to Bay Area","rateLimit":500}]}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate VXC Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"productUid\": \"6b4a75e2-3a27-40ea-8df1-0e5d989318ec\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 2001\n        },\n        \"bEnd\": {\n          \"productUid\": \"3366d93d-1a19-4d6f-a2e6-a044e835cc82\",\n          \"vlan\": 2002\n        },\n        \"productName\": \"My API VXC - LA to Bay Area\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate VXC Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"productUid\": \"6b4a75e2-3a27-40ea-8df1-0e5d989318ec\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 2001\n        },\n        \"bEnd\": {\n          \"productUid\": \"3366d93d-1a19-4d6f-a2e6-a044e835cc82\",\n          \"vlan\": 2002\n        },\n        \"productName\": \"My API VXC - LA to Bay Area\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate VXC Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"productUid\": \"6b4a75e2-3a27-40ea-8df1-0e5d989318ec\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 2001\n        },\n        \"bEnd\": {\n          \"productUid\": \"3366d93d-1a19-4d6f-a2e6-a044e835cc82\",\n          \"vlan\": 2002\n        },\n        \"productName\": \"My API VXC - LA to Bay Area\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]")
  .asString();
```

```php Validate VXC Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "productUid": "6b4a75e2-3a27-40ea-8df1-0e5d989318ec",
    "associatedVxcs": [
      {
        "aEnd": {
          "vlan": 2001
        },
        "bEnd": {
          "productUid": "3366d93d-1a19-4d6f-a2e6-a044e835cc82",
          "vlan": 2002
        },
        "productName": "My API VXC - LA to Bay Area",
        "rateLimit": 500
      }
    ]
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate VXC Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"productUid\": \"6b4a75e2-3a27-40ea-8df1-0e5d989318ec\",\n    \"associatedVxcs\": [\n      {\n        \"aEnd\": {\n          \"vlan\": 2001\n        },\n        \"bEnd\": {\n          \"productUid\": \"3366d93d-1a19-4d6f-a2e6-a044e835cc82\",\n          \"vlan\": 2002\n        },\n        \"productName\": \"My API VXC - LA to Bay Area\",\n        \"rateLimit\": 500\n      }\n    ]\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate VXC Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "productUid": "6b4a75e2-3a27-40ea-8df1-0e5d989318ec",
    "associatedVxcs": [
      [
        "aEnd": ["vlan": 2001],
        "bEnd": [
          "productUid": "3366d93d-1a19-4d6f-a2e6-a044e835cc82",
          "vlan": 2002
        ],
        "productName": "My API VXC - LA to Bay Area",
        "rateLimit": 500
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate VXC Order (v3) - 12 Month Contract Term

**Response**

```json
{
  "data": [
    {
      "market": "AU",
      "price": {
        "currency": "AUD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 100,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 11.32,
        "mbpsRate": 11.32,
        "monthlyRate": 5760,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0
      },
      "productType": "VXC",
      "productUid": "0a9d8d08-568e-49d4-bc20-135c590e7f45",
      "serviceName": "My Test API VXC - Melbourne to San Diego",
      "string": "Melbourne"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate VXC Order (v3) - 12 Month Contract Term
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

response = requests.post(url)

print(response.json())
```

```javascript Validate VXC Order (v3) - 12 Month Contract Term
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {method: 'POST'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate VXC Order (v3) - 12 Month Contract Term
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

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

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

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

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

}
```

```ruby Validate VXC Order (v3) - 12 Month Contract Term
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
```

```java Validate VXC Order (v3) - 12 Month Contract Term
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .asString();
```

```php Validate VXC Order (v3) - 12 Month Contract Term
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate');

echo $response->getBody();
```

```csharp Validate VXC Order (v3) - 12 Month Contract Term
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
IRestResponse response = client.Execute(request);
```

```swift Validate VXC Order (v3) - 12 Month Contract Term
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate a LAG Order (v3)

**Request**

```json
[
  {
    "associatedIxs": [],
    "associatedVxcs": [],
    "createDate": 1560124227180,
    "lagPortCount": 2,
    "locationId": 2,
    "locationUid": {},
    "market": "AU",
    "marketplaceVisibility": false,
    "portSpeed": 10000,
    "productName": "LAG - 2PORT - DOC SAMPLE",
    "productType": "MEGAPORT",
    "term": 12
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "AU",
      "price": {
        "currency": "AUD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 475,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0,
        "mbpsRate": 0,
        "monthlyRate": 475,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "MEGAPORT"
      },
      "productType": "MEGAPORT",
      "productUid": "5b2ce95c-5015-4bd1-aa00-92635b54a6cc",
      "serviceName": "LAG - 2PORT - DOC SAMPLE",
      "string": "Sydney",
      "lagPortCount": 2
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate a LAG Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "associatedIxs": [],
        "associatedVxcs": [],
        "createDate": 1560124227180,
        "lagPortCount": 2,
        "locationId": 2,
        "locationUid": {},
        "market": "AU",
        "marketplaceVisibility": False,
        "portSpeed": 10000,
        "productName": "LAG - 2PORT - DOC SAMPLE",
        "productType": "MEGAPORT",
        "term": 12
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate a LAG Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"associatedIxs":[],"associatedVxcs":[],"createDate":1560124227180,"lagPortCount":2,"locationId":2,"locationUid":{},"market":"AU","marketplaceVisibility":false,"portSpeed":10000,"productName":"LAG - 2PORT - DOC SAMPLE","productType":"MEGAPORT","term":12}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate a LAG Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [],\n    \"createDate\": 1560124227180,\n    \"lagPortCount\": 2,\n    \"locationId\": 2,\n    \"locationUid\": {},\n    \"market\": \"AU\",\n    \"marketplaceVisibility\": false,\n    \"portSpeed\": 10000,\n    \"productName\": \"LAG - 2PORT - DOC SAMPLE\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate a LAG Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [],\n    \"createDate\": 1560124227180,\n    \"lagPortCount\": 2,\n    \"locationId\": 2,\n    \"locationUid\": {},\n    \"market\": \"AU\",\n    \"marketplaceVisibility\": false,\n    \"portSpeed\": 10000,\n    \"productName\": \"LAG - 2PORT - DOC SAMPLE\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate a LAG Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [],\n    \"createDate\": 1560124227180,\n    \"lagPortCount\": 2,\n    \"locationId\": 2,\n    \"locationUid\": {},\n    \"market\": \"AU\",\n    \"marketplaceVisibility\": false,\n    \"portSpeed\": 10000,\n    \"productName\": \"LAG - 2PORT - DOC SAMPLE\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]")
  .asString();
```

```php Validate a LAG Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "associatedIxs": [],
    "associatedVxcs": [],
    "createDate": 1560124227180,
    "lagPortCount": 2,
    "locationId": 2,
    "locationUid": {},
    "market": "AU",
    "marketplaceVisibility": false,
    "portSpeed": 10000,
    "productName": "LAG - 2PORT - DOC SAMPLE",
    "productType": "MEGAPORT",
    "term": 12
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate a LAG Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"associatedIxs\": [],\n    \"associatedVxcs\": [],\n    \"createDate\": 1560124227180,\n    \"lagPortCount\": 2,\n    \"locationId\": 2,\n    \"locationUid\": {},\n    \"market\": \"AU\",\n    \"marketplaceVisibility\": false,\n    \"portSpeed\": 10000,\n    \"productName\": \"LAG - 2PORT - DOC SAMPLE\",\n    \"productType\": \"MEGAPORT\",\n    \"term\": 12\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate a LAG Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "associatedIxs": [],
    "associatedVxcs": [],
    "createDate": 1560124227180,
    "lagPortCount": 2,
    "locationId": 2,
    "locationUid": [],
    "market": "AU",
    "marketplaceVisibility": false,
    "portSpeed": 10000,
    "productName": "LAG - 2PORT - DOC SAMPLE",
    "productType": "MEGAPORT",
    "term": 12
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### vNIC example (v3)

**Response**

```json
{
  "data": [
    {
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 840,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0,
        "monthlyRate": 840,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "MVE"
      },
      "productType": "MEGAPORT",
      "productUid": "031b74ee-a211-4815-b4fd-2916e89dc86f",
      "serviceName": "My Small Versa MVE Nichola test",
      "string": "New York"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python vNIC example (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

response = requests.post(url)

print(response.json())
```

```javascript vNIC example (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {method: 'POST'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go vNIC example (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

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

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

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

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

}
```

```ruby vNIC example (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
```

```java vNIC example (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .asString();
```

```php vNIC example (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate');

echo $response->getBody();
```

```csharp vNIC example (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
IRestResponse response = client.Execute(request);
```

```swift vNIC example (v3)
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Validate MVE Order (v3)

**Request**

```json
[
  {
    "associatedVxcs": [],
    "locationId": 62,
    "productName": "My small Versa MVE",
    "productType": "MVE",
    "vendorConfig": {
      "controllerAddress": "controller1.versa.com",
      "directorAddress": "director1.versa.com",
      "imageId": 20,
      "localAuth": "SDWAN-Branch@Versa.com",
      "mveLabel": "MVE 2/8",
      "remoteAuth": "Controller-1-staging@Versa.com",
      "serialNumber": "Megaport-Hub1",
      "vendor": "VERSA"
    }
  }
]
```

**Response**

```json
{
  "data": [
    {
      "market": "US",
      "price": {
        "currency": "USD",
        "dailyRate": 0,
        "dailySetup": 0,
        "empty": false,
        "fixedRecurringCharge": 100,
        "hourlyRate": 0,
        "hourlySetup": 0,
        "key": "no key",
        "longHaulMbpsRate": 0.18,
        "mbpsRate": 0.18,
        "monthlyRate": 126,
        "monthlySetup": 0,
        "postPaidBaseRate": "no base rate",
        "productType": "VXC",
        "aEndRate": 0,
        "bEndRate": 0.08
      },
      "productType": "VXC",
      "productUid": "5654dcb3-e878-4b31-be59-96d61ece79bc",
      "serviceName": "My Amazon HC",
      "string": "Los Angeles"
    }
  ],
  "message": "Validación superada",
  "terms": "This data is subject to the Acceptable Use Policy https://www.megaport.com/legal/acceptable-use-policy"
}
```

**SDK Code**

```python Validate MVE Order (v3)
import requests

url = "https://api.megaport.com/v3/networkdesign/validate"

payload = [
    {
        "associatedVxcs": [],
        "locationId": 62,
        "productName": "My small Versa MVE",
        "productType": "MVE",
        "vendorConfig": {
            "controllerAddress": "controller1.versa.com",
            "directorAddress": "director1.versa.com",
            "imageId": 20,
            "localAuth": "SDWAN-Branch@Versa.com",
            "mveLabel": "MVE 2/8",
            "remoteAuth": "Controller-1-staging@Versa.com",
            "serialNumber": "Megaport-Hub1",
            "vendor": "VERSA"
        }
    }
]
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Validate MVE Order (v3)
const url = 'https://api.megaport.com/v3/networkdesign/validate';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '[{"associatedVxcs":[],"locationId":62,"productName":"My small Versa MVE","productType":"MVE","vendorConfig":{"controllerAddress":"controller1.versa.com","directorAddress":"director1.versa.com","imageId":20,"localAuth":"SDWAN-Branch@Versa.com","mveLabel":"MVE 2/8","remoteAuth":"Controller-1-staging@Versa.com","serialNumber":"Megaport-Hub1","vendor":"VERSA"}}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Validate MVE Order (v3)
package main

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

func main() {

	url := "https://api.megaport.com/v3/networkdesign/validate"

	payload := strings.NewReader("[\n  {\n    \"associatedVxcs\": [],\n    \"locationId\": 62,\n    \"productName\": \"My small Versa MVE\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"controllerAddress\": \"controller1.versa.com\",\n      \"directorAddress\": \"director1.versa.com\",\n      \"imageId\": 20,\n      \"localAuth\": \"SDWAN-Branch@Versa.com\",\n      \"mveLabel\": \"MVE 2/8\",\n      \"remoteAuth\": \"Controller-1-staging@Versa.com\",\n      \"serialNumber\": \"Megaport-Hub1\",\n      \"vendor\": \"VERSA\"\n    }\n  }\n]")

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

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Validate MVE Order (v3)
require 'uri'
require 'net/http'

url = URI("https://api.megaport.com/v3/networkdesign/validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"associatedVxcs\": [],\n    \"locationId\": 62,\n    \"productName\": \"My small Versa MVE\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"controllerAddress\": \"controller1.versa.com\",\n      \"directorAddress\": \"director1.versa.com\",\n      \"imageId\": 20,\n      \"localAuth\": \"SDWAN-Branch@Versa.com\",\n      \"mveLabel\": \"MVE 2/8\",\n      \"remoteAuth\": \"Controller-1-staging@Versa.com\",\n      \"serialNumber\": \"Megaport-Hub1\",\n      \"vendor\": \"VERSA\"\n    }\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java Validate MVE Order (v3)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.megaport.com/v3/networkdesign/validate")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"associatedVxcs\": [],\n    \"locationId\": 62,\n    \"productName\": \"My small Versa MVE\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"controllerAddress\": \"controller1.versa.com\",\n      \"directorAddress\": \"director1.versa.com\",\n      \"imageId\": 20,\n      \"localAuth\": \"SDWAN-Branch@Versa.com\",\n      \"mveLabel\": \"MVE 2/8\",\n      \"remoteAuth\": \"Controller-1-staging@Versa.com\",\n      \"serialNumber\": \"Megaport-Hub1\",\n      \"vendor\": \"VERSA\"\n    }\n  }\n]")
  .asString();
```

```php Validate MVE Order (v3)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.megaport.com/v3/networkdesign/validate', [
  'body' => '[
  {
    "associatedVxcs": [],
    "locationId": 62,
    "productName": "My small Versa MVE",
    "productType": "MVE",
    "vendorConfig": {
      "controllerAddress": "controller1.versa.com",
      "directorAddress": "director1.versa.com",
      "imageId": 20,
      "localAuth": "SDWAN-Branch@Versa.com",
      "mveLabel": "MVE 2/8",
      "remoteAuth": "Controller-1-staging@Versa.com",
      "serialNumber": "Megaport-Hub1",
      "vendor": "VERSA"
    }
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Validate MVE Order (v3)
using RestSharp;

var client = new RestClient("https://api.megaport.com/v3/networkdesign/validate");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"associatedVxcs\": [],\n    \"locationId\": 62,\n    \"productName\": \"My small Versa MVE\",\n    \"productType\": \"MVE\",\n    \"vendorConfig\": {\n      \"controllerAddress\": \"controller1.versa.com\",\n      \"directorAddress\": \"director1.versa.com\",\n      \"imageId\": 20,\n      \"localAuth\": \"SDWAN-Branch@Versa.com\",\n      \"mveLabel\": \"MVE 2/8\",\n      \"remoteAuth\": \"Controller-1-staging@Versa.com\",\n      \"serialNumber\": \"Megaport-Hub1\",\n      \"vendor\": \"VERSA\"\n    }\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Validate MVE Order (v3)
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  [
    "associatedVxcs": [],
    "locationId": 62,
    "productName": "My small Versa MVE",
    "productType": "MVE",
    "vendorConfig": [
      "controllerAddress": "controller1.versa.com",
      "directorAddress": "director1.versa.com",
      "imageId": 20,
      "localAuth": "SDWAN-Branch@Versa.com",
      "mveLabel": "MVE 2/8",
      "remoteAuth": "Controller-1-staging@Versa.com",
      "serialNumber": "Megaport-Hub1",
      "vendor": "VERSA"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.megaport.com/v3/networkdesign/validate")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```