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

# Create a vendor for Entrata

POST https://api.propexo.com/v1/vendors/entrata/
Content-Type: application/json

Create a vendor for Entrata| Method              |
| ------------------- |
| vendors/sendVendors |This write operation will set the created_record_id flag on the write-status endpoint and allow for new record to be read back in immediately.

Reference: https://docs.propexo.com/api-reference/entrata/vendors/create-a-vendor-for-entrata

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api.propexo.com` (Production, default)
- `https://api.sandbox.propexo.com` (Sandbox)

## Request

### Body (application/json)

This endpoint expects a _v1_vendors_entrata__post_input.

- `integration_id` (string, required) — The Propexo unique identifier for the integration
- `properties` (list of V1VendorsEntrataPostInputItems, required) — A list of properties that the vendor is approved for
- `name` (string, required) — The name associated with the vendor
- `tax_payer_first_name` (string, required) — The first name of the tax payer associated with the vendor
- `tax_payer_last_name` (string, required) — The last name of the tax payer associated with the vendor
- `payment_type_id` (string, required) — The Propexo unique identifier for the vendor payment type
- `location_name` (string, required) — The name associated with the vendor location
- `contacts` (list of V1VendorsEntrataPostInputContactsItems, required) — A list of contacts associated with the vendor. At least 1 contact must be marked as the primary contact
- `notes` (string, optional) — Notes associated with the vendor
- `tax_id` (string, optional)
- `third_party_id` (string, optional) — A unique value provided to Entrata to uniquely identify the vendor from your system. This can be an alphanumeric string. This does not become the ID of the vendor in Entrata. If not provided, Propexo will generate one
- `financial_account_id` (string, optional) — The Propexo unique identifier for the financial account
- `payment_name_on_account` (string, optional) — The name on the account associated with vendor payments. Required if vendor payment type is ACH
- `payment_routing_number` (string, optional) — The routing number associated with vendor payments. Required if vendor payment type is ACH
- `payment_account_number` (string, optional) — The account number associated with vendor payments. Required if vendor payment type is ACH
- `payment_address_1` (string, optional) — The first address line associated with the vendor location
- `payment_address_2` (string, optional) — The second address line associated with the vendor location
- `payment_city` (string, optional) — The city associated with the vendor location
- `payment_state` (enum, optional) — The state associated with the vendor location
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `NE`, `NL`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `SD`, `TN`, `TX`, `UT`, `VA`, `VI`, `VT`, `WA`, `WI`, `WV`, `WY`, `AB`, `BC`, `MB`, `NB`, `NL`, `NT`, `NS`, `NU`, `ON`, `PE`, `QC`, `SK`, `YT`
- `payment_zip` (string, optional) — The zip code associated with the vendor location
- `payment_country` (V1VendorsEntrataPostInputPaymentCountry, optional) — The country associated with the vendor location
- `location_address_1` (string, optional) — The first address line associated with the vendor location
- `location_address_2` (string, optional) — The second address line associated with the vendor location
- `location_city` (string, optional) — The city associated with the vendor location
- `location_state` (enum, optional) — The state associated with the vendor location
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `NE`, `NL`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `SD`, `TN`, `TX`, `UT`, `VA`, `VI`, `VT`, `WA`, `WI`, `WV`, `WY`, `AB`, `BC`, `MB`, `NB`, `NL`, `NT`, `NS`, `NU`, `ON`, `PE`, `QC`, `SK`, `YT`
- `location_zip` (string, optional) — The zip code associated with the vendor location
- `location_country` (V1VendorsEntrataPostInputLocationCountry, optional) — The country associated with the vendor location
- `location_email_1` (string, optional) — The primary email address associated with the vendor location
- `location_phone_1` (string, optional) — Primary phone number associated with the vendor location
- `location_notes` (string, optional) — Notes associated with the vendor location
- `insurance_plan` (V1VendorsEntrataPostInputInsurancePlan, optional) — The details of an insurance plan associated with the vendor

## Response

### 200

Successful response

- `meta` (V1VendorsEntrataPostOutputMeta, required)
- `result` (V1VendorsEntrataPostOutputResult, required)

## Errors

### 400 Bad Request Error

Bad Request

- `error` (ErrorResponseError, required)

## Types

### V1VendorsEntrataPostInputItems

- `property_id` (string, required) — The Propexo unique identifier for the property
- `is_compliant` (boolean, required) — Whether or not the property is compliant

### V1VendorsEntrataPostInputContactsItems

- `contact_first_name` (string, required) — The first name associated with the vendor contact
- `contact_last_name` (string, required) — The last name associated with the vendor contact
- `is_primary` (boolean, required) — Whether or not this is the primary contact
- `contact_email_1` (string, optional) — The primary email address associated with the vendor contact
- `contact_phone_1` (string, optional) — Primary phone number associated with the vendor contact

### V1VendorsEntrataPostInputPaymentCountry

The country associated with the vendor location

### V1VendorsEntrataPostInputLocationCountry

The country associated with the vendor location

### V1VendorsEntrataPostInputInsurancePlan

The details of an insurance plan associated with the vendor

- `insurance_property_ids` (list of string, required) — An array of Propexo property IDs associated with the insurance policy
- `insurance_attachment` (V1VendorsEntrataPostInputInsurancePlanInsuranceAttachment, required) — The document of record associated with the insurance policy
- `insurance_coverage_name` (string, required) — The name of the coverage associated with the insurance plan
- `insurance_policies` (list of V1VendorsEntrataPostInputInsurancePlanInsurancePoliciesItems, required) — A list of insurance policies associated with the vendor

### V1VendorsEntrataPostOutputMeta

- `job_id` (string, required)

### V1VendorsEntrataPostOutputResult

- `integration_id` (string, required) — The Propexo unique identifier for the integration
- `properties` (list of V1VendorsEntrataPostOutputResultItems, required)
- `name` (string, required) — The name associated with the vendor
- `tax_payer_first_name` (string, required) — The first name of the tax payer associated with the vendor
- `tax_payer_last_name` (string, required) — The last name of the tax payer associated with the vendor
- `payment_type_id` (string, required) — The Propexo unique identifier for the vendor payment type
- `location_name` (string, required) — The name associated with the vendor location
- `contacts` (list of V1VendorsEntrataPostOutputResultContactsItems, required)
- `notes` (string, required, nullable)
- `tax_id` (string, required, nullable)
- `third_party_id` (string, required, nullable)
- `financial_account_id` (string, required, nullable)
- `payment_name_on_account` (string, required, nullable)
- `payment_routing_number` (string, required, nullable)
- `payment_account_number` (string, required, nullable)
- `payment_address_1` (string, required, nullable)
- `payment_address_2` (string, required, nullable)
- `payment_city` (string, required, nullable)
- `payment_state` (enum, required)
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `NE`, `NL`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `SD`, `TN`, `TX`, `UT`, `VA`, `VI`, `VT`, `WA`, `WI`, `WV`, `WY`, `AB`, `BC`, `MB`, `NB`, `NL`, `NT`, `NS`, `NU`, `ON`, `PE`, `QC`, `SK`, `YT`
- `payment_zip` (string, required, nullable)
- `payment_country` (V1VendorsEntrataPostOutputResultPaymentCountry, required, nullable)
- `location_address_1` (string, required, nullable)
- `location_address_2` (string, required, nullable)
- `location_city` (string, required, nullable)
- `location_state` (enum, required)
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `NE`, `NL`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `SD`, `TN`, `TX`, `UT`, `VA`, `VI`, `VT`, `WA`, `WI`, `WV`, `WY`, `AB`, `BC`, `MB`, `NB`, `NL`, `NT`, `NS`, `NU`, `ON`, `PE`, `QC`, `SK`, `YT`
- `location_zip` (string, required, nullable)
- `location_country` (V1VendorsEntrataPostOutputResultLocationCountry, required, nullable)
- `location_email_1` (string, required, nullable)
- `location_phone_1` (string, required, nullable)
- `location_notes` (string, required, nullable)
- `insurance_plan` (V1VendorsEntrataPostOutputResultInsurancePlan, required, nullable)

### ErrorResponseError

- `code` (string, required)
- `message` (string, required)
- `details` (map from string to any, optional)

### V1VendorsEntrataPostInputInsurancePlanInsuranceAttachment

The document of record associated with the insurance policy

- `file_data` (string, required) — The contents of the file, as a base64 encoded string. The PMS has a max file size of 50 MB.
- `file_name` (string, required) — The name of the file including the extension. Ex: "image.jpg"
- `mime_type` (string, required) — The mime type of the file. Ex: "image/jpeg"

### V1VendorsEntrataPostInputInsurancePlanInsurancePoliciesItems

- `insurance_policy_type_id` (string, required) — The Propexo unique identifier for the vendor insurance policy type
- `insurance_policy_number` (string, required) — The policy number associated with the insurance plan
- `insurance_policy_description` (string, required) — The policy description associated with the insurance plan
- `expiration_date` (V1VendorsEntrataPostInputInsurancePlanInsurancePoliciesItemsExpirationDate, required) — The expiration date of the insurance policy
- `insurance_coverages` (list of V1VendorsEntrataPostInputInsurancePlanInsurancePoliciesItemsInsuranceCoveragesItems, required) — List of coverages associated with the insurance policy

### V1VendorsEntrataPostOutputResultItems

- `property_id` (string, required) — The Propexo unique identifier for the property
- `is_compliant` (boolean, required) — Whether or not the property is compliant

### V1VendorsEntrataPostOutputResultContactsItems

- `contact_first_name` (string, required) — The first name associated with the vendor contact
- `contact_last_name` (string, required) — The last name associated with the vendor contact
- `is_primary` (boolean, required) — Whether or not this is the primary contact
- `contact_email_1` (string, optional)
- `contact_phone_1` (string, optional)

### V1VendorsEntrataPostOutputResultPaymentCountry

### V1VendorsEntrataPostOutputResultLocationCountry

### V1VendorsEntrataPostOutputResultInsurancePlan

- `insurance_property_ids` (list of string, required)
- `insurance_attachment` (V1VendorsEntrataPostOutputResultInsurancePlanInsuranceAttachment, required)
- `insurance_coverage_name` (string, required) — The name of the coverage associated with the insurance plan
- `insurance_policies` (list of V1VendorsEntrataPostOutputResultInsurancePlanInsurancePoliciesItems, required)

### V1VendorsEntrataPostInputInsurancePlanInsurancePoliciesItemsExpirationDate

The expiration date of the insurance policy

### V1VendorsEntrataPostInputInsurancePlanInsurancePoliciesItemsInsuranceCoveragesItems

- `insurance_coverage_type_id` (string, required) — The Propexo unique identifier for the vendor insurance coverage type
- `insurance_coverage_amount_in_cents` (double, required) — The coverage amount in cents associated with the insurance policy

### V1VendorsEntrataPostOutputResultInsurancePlanInsuranceAttachment

- `file_name` (string, required) — The name of the file including the extension. Ex: "image.jpg"
- `mime_type` (string, required) — The mime type of the file. Ex: "image/jpeg"
- `file_data` (string, optional, nullable) — The contents of the file, as a base64 encoded string. The PMS has a max file size of 50 MB.

### V1VendorsEntrataPostOutputResultInsurancePlanInsurancePoliciesItems

- `insurance_policy_type_id` (string, required) — The Propexo unique identifier for the vendor insurance policy type
- `insurance_policy_number` (string, required) — The policy number associated with the insurance plan
- `insurance_policy_description` (string, required) — The policy description associated with the insurance plan
- `expiration_date` (V1VendorsEntrataPostOutputResultInsurancePlanInsurancePoliciesItemsExpirationDate, required)
- `insurance_coverages` (list of V1VendorsEntrataPostOutputResultInsurancePlanInsurancePoliciesItemsInsuranceCoveragesItems, required)

### V1VendorsEntrataPostOutputResultInsurancePlanInsurancePoliciesItemsExpirationDate

### V1VendorsEntrataPostOutputResultInsurancePlanInsurancePoliciesItemsInsuranceCoveragesItems

- `insurance_coverage_type_id` (string, required) — The Propexo unique identifier for the vendor insurance coverage type
- `insurance_coverage_amount_in_cents` (double, required) — The coverage amount in cents associated with the insurance policy

## Examples

**Request**

```json
{
  "integration_id": "intg-987654321",
  "properties": [
    {
      "property_id": "prop-123456789",
      "is_compliant": true
    }
  ],
  "name": "Greenfield Maintenance Services",
  "tax_payer_first_name": "John",
  "tax_payer_last_name": "Doe",
  "payment_type_id": "paytype-001",
  "location_name": "Greenfield Main Office",
  "contacts": [
    {
      "contact_first_name": "Alice",
      "contact_last_name": "Smith",
      "is_primary": true
    }
  ]
}
```

**Response**

```json
{
  "meta": {
    "job_id": "job-20240615-001"
  },
  "result": {
    "integration_id": "intg-987654321",
    "properties": [
      {
        "property_id": "prop-123456789",
        "is_compliant": true
      }
    ],
    "name": "Greenfield Maintenance Services",
    "tax_payer_first_name": "John",
    "tax_payer_last_name": "Doe",
    "payment_type_id": "paytype-001",
    "location_name": "Greenfield Main Office",
    "contacts": [
      {
        "contact_first_name": "Alice",
        "contact_last_name": "Smith",
        "is_primary": true,
        "contact_email_1": "alice.smith@greenfieldms.com",
        "contact_phone_1": "+1-555-123-4567"
      }
    ],
    "notes": "Preferred vendor for landscaping and general maintenance.",
    "tax_id": "12-3456789",
    "third_party_id": "GFMS-2024-0001",
    "financial_account_id": "finacct-789456123",
    "payment_name_on_account": "Greenfield Maintenance Services LLC",
    "payment_routing_number": "021000021",
    "payment_account_number": "123456789012",
    "payment_address_1": "123 Greenfield Blvd",
    "payment_address_2": "Suite 200",
    "payment_city": "Springfield",
    "payment_state": "CA",
    "payment_zip": "90210",
    "payment_country": "US",
    "location_address_1": "123 Greenfield Blvd",
    "location_address_2": "Suite 200",
    "location_city": "Springfield",
    "location_state": "CA",
    "location_zip": "90210",
    "location_country": "US",
    "location_email_1": "contact@greenfieldms.com",
    "location_phone_1": "+1-555-987-6543",
    "location_notes": "Main office location for vendor operations.",
    "insurance_plan": {
      "insurance_property_ids": [
        "prop-123456789"
      ],
      "insurance_attachment": {
        "file_name": "insurance_certificate.pdf",
        "mime_type": "application/pdf",
        "file_data": "SGVsbG8gV29ybGQ="
      },
      "insurance_coverage_name": "General Liability Coverage",
      "insurance_policies": [
        {
          "insurance_policy_type_id": "ins-policy-type-001",
          "insurance_policy_number": "GL-2024-56789",
          "insurance_policy_description": "General liability insurance covering property damage and bodily injury.",
          "expiration_date": "2025-12-31",
          "insurance_coverages": [
            {
              "insurance_coverage_type_id": "coverage-type-001",
              "insurance_coverage_amount_in_cents": 50000000
            }
          ]
        }
      ]
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.propexo.com/v1/vendors/entrata/"

payload = {
    "integration_id": "intg-987654321",
    "properties": [
        {
            "property_id": "prop-123456789",
            "is_compliant": True
        }
    ],
    "name": "Greenfield Maintenance Services",
    "tax_payer_first_name": "John",
    "tax_payer_last_name": "Doe",
    "payment_type_id": "paytype-001",
    "location_name": "Greenfield Main Office",
    "contacts": [
        {
            "contact_first_name": "Alice",
            "contact_last_name": "Smith",
            "is_primary": True
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript
const url = 'https://api.propexo.com/v1/vendors/entrata/';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"integration_id":"intg-987654321","properties":[{"property_id":"prop-123456789","is_compliant":true}],"name":"Greenfield Maintenance Services","tax_payer_first_name":"John","tax_payer_last_name":"Doe","payment_type_id":"paytype-001","location_name":"Greenfield Main Office","contacts":[{"contact_first_name":"Alice","contact_last_name":"Smith","is_primary":true}]}'
};

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

```go
package main

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

func main() {

	url := "https://api.propexo.com/v1/vendors/entrata/"

	payload := strings.NewReader("{\n  \"integration_id\": \"intg-987654321\",\n  \"properties\": [\n    {\n      \"property_id\": \"prop-123456789\",\n      \"is_compliant\": true\n    }\n  ],\n  \"name\": \"Greenfield Maintenance Services\",\n  \"tax_payer_first_name\": \"John\",\n  \"tax_payer_last_name\": \"Doe\",\n  \"payment_type_id\": \"paytype-001\",\n  \"location_name\": \"Greenfield Main Office\",\n  \"contacts\": [\n    {\n      \"contact_first_name\": \"Alice\",\n      \"contact_last_name\": \"Smith\",\n      \"is_primary\": true\n    }\n  ]\n}")

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

	req.Header.Add("Authorization", "Bearer <token>")
	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
require 'uri'
require 'net/http'

url = URI("https://api.propexo.com/v1/vendors/entrata/")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"integration_id\": \"intg-987654321\",\n  \"properties\": [\n    {\n      \"property_id\": \"prop-123456789\",\n      \"is_compliant\": true\n    }\n  ],\n  \"name\": \"Greenfield Maintenance Services\",\n  \"tax_payer_first_name\": \"John\",\n  \"tax_payer_last_name\": \"Doe\",\n  \"payment_type_id\": \"paytype-001\",\n  \"location_name\": \"Greenfield Main Office\",\n  \"contacts\": [\n    {\n      \"contact_first_name\": \"Alice\",\n      \"contact_last_name\": \"Smith\",\n      \"is_primary\": true\n    }\n  ]\n}"

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

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.propexo.com/v1/vendors/entrata/")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"integration_id\": \"intg-987654321\",\n  \"properties\": [\n    {\n      \"property_id\": \"prop-123456789\",\n      \"is_compliant\": true\n    }\n  ],\n  \"name\": \"Greenfield Maintenance Services\",\n  \"tax_payer_first_name\": \"John\",\n  \"tax_payer_last_name\": \"Doe\",\n  \"payment_type_id\": \"paytype-001\",\n  \"location_name\": \"Greenfield Main Office\",\n  \"contacts\": [\n    {\n      \"contact_first_name\": \"Alice\",\n      \"contact_last_name\": \"Smith\",\n      \"is_primary\": true\n    }\n  ]\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.propexo.com/v1/vendors/entrata/', [
  'body' => '{
  "integration_id": "intg-987654321",
  "properties": [
    {
      "property_id": "prop-123456789",
      "is_compliant": true
    }
  ],
  "name": "Greenfield Maintenance Services",
  "tax_payer_first_name": "John",
  "tax_payer_last_name": "Doe",
  "payment_type_id": "paytype-001",
  "location_name": "Greenfield Main Office",
  "contacts": [
    {
      "contact_first_name": "Alice",
      "contact_last_name": "Smith",
      "is_primary": true
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.propexo.com/v1/vendors/entrata/");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"integration_id\": \"intg-987654321\",\n  \"properties\": [\n    {\n      \"property_id\": \"prop-123456789\",\n      \"is_compliant\": true\n    }\n  ],\n  \"name\": \"Greenfield Maintenance Services\",\n  \"tax_payer_first_name\": \"John\",\n  \"tax_payer_last_name\": \"Doe\",\n  \"payment_type_id\": \"paytype-001\",\n  \"location_name\": \"Greenfield Main Office\",\n  \"contacts\": [\n    {\n      \"contact_first_name\": \"Alice\",\n      \"contact_last_name\": \"Smith\",\n      \"is_primary\": true\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "integration_id": "intg-987654321",
  "properties": [
    [
      "property_id": "prop-123456789",
      "is_compliant": true
    ]
  ],
  "name": "Greenfield Maintenance Services",
  "tax_payer_first_name": "John",
  "tax_payer_last_name": "Doe",
  "payment_type_id": "paytype-001",
  "location_name": "Greenfield Main Office",
  "contacts": [
    [
      "contact_first_name": "Alice",
      "contact_last_name": "Smith",
      "is_primary": true
    ]
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.propexo.com/v1/vendors/entrata/")! 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()
```