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

# Validate Port Order (v3)

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

Validates the request and ensures all parameters are within range and acceptable to the provisioning system. A successful validation request returns pricing details.

You customize the Body of the request with the configuration details for the Port.

This request does not commit the order.

`promoCode` is an optional string that can be used to enter a promotional code for the service order. The code is not validated, so if the code doesnâ€™t exist or doesnâ€™t work for the service, the call will still be successful.

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

## Servers

- `https://api.megaport.com` (Production environment, default)
- `https://api-staging.megaport.com` (Staging environment (test only, reset every 24 hours))

## Request

### Body (application/json)

This endpoint expects a list of V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItems.

- `list of V3NetworkdesignValidatePostRequestBodyContentApplicationJsonSchemaItems`

## Response

### 200

Validate Port Order (v3) / Validate Port Order (v3) / Validate a LAG Order (v3) / Validate a LAG Order (v3) / Validate VXC Order (v3) / Validate VXC Order (v3) - 12 Month Contract Term / Validate VXC Order (v3) - 12 Month Contract Term / Validate VXC Order (v3) / Validate Megaport Internet Order (v3) / Validate Megaport Internet Order (v3) / Validate AWS - Hosted VIF (v3) / Validate AWS - Hosted VIF (v3) / Validate AWS - Hosted Connection (v3) / Validate AWS - Hosted Connection (v3) / Validate MCR Order (v3) / Validate MCR Order (v3) / Validate MCR VXC Order (v3) / Validate MCR VXC Order (v3) / Validate MVE (v3) / vNIC example (v3) / vNIC example (v3) / Validate MVE (v3) / Validate Megaport Internet Order (v3) / Validate Megaport Internet Order with vNICs (v3) / Validate Megaport Internet Order (v3) / Validate Megaport Internet Order with vNICs (v3) / Validate Palo Alto Megaport Internet Order (v3) / Validate Palo Alto Megaport Internet Order (v3) / Validate MVE VXC Order (v3) / Validate MVE VXC Order (v3) / Validate IX Order (v3) / Validate IX Order (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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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 with MED and BFD enabled",
                    "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 without MED or 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": "test static route 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": "Validation passed",
  "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 with MED and BFD enabled",
                                        "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 without MED or 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": "test static route 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 with MED and BFD enabled","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 without MED or 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":"test static route 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 with MED and BFD enabled\",\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 without MED or 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\": \"test static route 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 with MED and BFD enabled\",\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 without MED or 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\": \"test static route 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 with MED and BFD enabled\",\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 without MED or 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\": \"test static route 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 with MED and BFD enabled",
                    "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 without MED or 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": "test static route 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 with MED and BFD enabled\",\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 without MED or 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\": \"test static route 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 with MED and BFD enabled",
                    "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 without MED or 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": "test static route 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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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": "Validation passed",
  "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()
```