Lone Wolf Technologies Client Contact API

The Client Contact API from Lone Wolf Technologies — 8 operation(s) for client contact.

Operations 13

GET /client-contacts/{clientContactId} Get a client contact
PATCH /client-contacts/{clientContactId} Update a client contact.
DELETE /client-contacts/{clientContactId} Delete a client contact
GET /deals/{dealId}/client-contacts Get a client contact
POST /deals/{dealId}/client-contacts Create a client contact
POST /client-contacts/{clientContactId}/phone-numbers Create client contact phone number
POST /client-contacts/{clientContactId}/email-addresses Create client contact email address
POST /client-contacts/{clientContactId}/addresses Create client contact address
PATCH /client-contacts/{clientContactId}/email-addresses/{emailAddressTypeCode} Update client contact email address
DELETE /client-contacts/{clientContactId}/email-addresses/{emailAddressTypeCode} Delete client contact email address.
PATCH /client-contacts/{clientContactId}/phone-numbers/{phoneNumberTypeCode} Update client contact phone number
DELETE /client-contacts/{clientContactId}/phone-numbers/{phoneNumberTypeCode} Delete client contact phone number
DELETE /client-contacts/{clientContactId}/addresses/{addressTypeCode} Delete client contact address

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lone-wolf-client-contact-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lone-wolf-client-contact-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Deals Client Contact API
  version: 1.0.0
  description: "## Index\n\nFor partner integration use (25.01.00)\n\n### Getting Started\n\n#### Getting a JWT Access Token\n\n`POST https://authentication.api.lwolf.com/v1/login`\n\nAll APIs require an *Authorization* HTTP Header that contains a *Bearer {token}* as its value. The token is a JSON Web Token (JWT) and can be generated as needed from the Authentication API using a POST request to the `/v1/login` endpoint with your provided credentials / secrets.\n\nThis will provide a JWT token in the response which can then be used as your Bearer token in your Authorization header when making API calls.\n\n**Request Example**\n\n```json\n{\n  \"emailAddress\": \"api-aaaa111@apps.lwolf.com\",\n  \"password\": \"AAAA111\",\n  \"clientId\": \"GgP8g-zksBgWuXum!DbXh*qASYCsfNZF\"\n}\n```\n\n**cURL**\n\n```bash\ncurl --location --request POST 'https://authentication.api.lwolf.com/v1/login' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n\"emailAddress\": \"api-aaa111@apps.lwolf.com\",\n\"clientId\": \"AAAA111\",\n\"password\": \"GgP8g-zksBgWuXum!DbXh*qASYCsfNZF\"\n}'\n```\n\n**Response Example (200 OK)**\n\n```json\n{\n  \"token\": \"<JWT string>\",\n  \"expiresIn\": 86400\n}\n```\n\n### Searching Deals\n\n#### Using Field Search on Summaries\n\n`GET https://deals.api.lwolf.com/v1/search`\n\nThe Deals API supports searching deal summaries, compact and heavily indexed versions of deals, by a single field and value.\n\n**Example**\n\n```\nhttps://deals.api.lwolf.com/v1/deals/search?entityPath=deal&fieldName=bwId&searchText=12345\n```\n\n#### Using OData on Full Details\n\n`GET https://deals.api.lwolf.com/v1/deals`\n\nThe Deals API supports searching deals using a subset of OData queries ($filter, $top, $skip, $limit). Any top-level field can be used in a query however at the current time fields from nested objects is not supported. As well the use of the IN operator is not supported, however multiple OR operators can be used instead.\n\n**Example**\n\n```\nhttps://deals.api.lwolf.com/v1/deals?$filter=addressStreetNumber%20eq%20%27263%27%20and%20%20addressStreetName%20eq%20%27Wellington%20St%27%20and%20addressUnitNumber%20eq%20%27701%27\n```\n\nAPI for managing deals, commissions, conditions, and client contacts.\n\n## Roster API\n\nLone Wolf Technologies Roster API\n\n**API Endpoint:** `https://roster.api.lwolf.com/v1`\n\n**Schemes:** https\n\n**Version:** 1.0.0\n\n### Authentication\n\n**Bearer Token**\n\nUse the Authentication API to retrieve the JSON Web Token for all calls to this API. Pass the token as `Authorization: Bearer {token}` in the request header.\n\n### Members\n\n#### Add new member\n\n`POST /members`\n\nIf the 'id' is passed in this object, the API will attempt to use that for its member id. If 'id' is null or undefined, the API will generate one.\n\n**Request Example**\n\n```json\n{\n  \"id\": \"string (UUID)\",\n  \"bwId\": \"number (int32)\",\n  \"firstName\": \"string\",\n  \"middleName\": \"string\",\n  \"lastName\": \"string\",\n  \"number\": \"string\",\n  \"officeId\": \"string (UUID)\",\n  \"bwOfficeId\": \"number (int32)\",\n  \"inactiveDate\": \"string (date)\",\n  \"legalName\": \"string\",\n  \"primaryEmailAddress\": \"string\",\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressCity\": \"string\",\n  \"addressPostalCode\": \"string\",\n  \"addressProvinceCode\": \"string\",\n  \"addressCountryCode\": \"string\",\n  \"birthDate\": \"string (date)\",\n  \"typeId\": \"string\",\n  \"lwaId\": \"string (UUID)\",\n  \"memberTypeCode\": {\n    \"createdTimestamp\": \"string (date-time)\",\n    \"modifiedTimestamp\": \"string (date-time)\",\n    \"id\": \"string (UUID)\",\n    \"code\": \"string\",\n    \"name\": \"string\"\n  }\n}\n```\n\n| Response | Description |\n|---|---|\n| 201 Created | Member created |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 409 Conflict | Member already exists. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (201 Created)**\n\n```json\n{\n  \"createdTimestamp\": \"string (date-time)\",\n  \"modifiedTimestamp\": \"string (date-time)\",\n  \"id\": \"string (UUID)\",\n  \"version\": \"number (int32)\",\n  \"bwId\": \"number (int32)\",\n  \"firstName\": \"string\",\n  \"middleName\": \"string\",\n  \"lastName\": \"string\",\n  \"number\": \"string\",\n  \"officeId\": \"string (UUID)\",\n  \"bwOfficeId\": \"number (int32)\",\n  \"inactiveDate\": \"string (date)\",\n  \"legalName\": \"string\",\n  \"primaryEmailAddress\": \"string\",\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressCity\": \"string\",\n  \"addressPostalCode\": \"string\",\n  \"addressProvinceCode\": \"string\",\n  \"addressCountryCode\": \"string\",\n  \"birthDate\": \"string (date)\",\n  \"typeId\": \"string\",\n  \"lwaId\": \"string (UUID)\",\n  \"memberTypeCode\": {\n    \"createdTimestamp\": \"string (date-time)\",\n    \"modifiedTimestamp\": \"string (date-time)\",\n    \"id\": \"string (UUID)\",\n    \"code\": \"string\",\n    \"name\": \"string\"\n  }\n}\n```\n\n**Response Example (409 Conflict)**\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### Get list of members\n\n`GET /members`\n\n| Response | Description |\n|---|---|\n| 200 OK | Success |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (200 OK)**\n\n```json\n[\n  {\n    \"createdTimestamp\": \"string (date-time)\",\n    \"modifiedTimestamp\": \"string (date-time)\",\n    \"id\": \"string (UUID)\",\n    \"version\": \"number (int32)\",\n    \"bwId\": \"number (int32)\",\n    \"firstName\": \"string\",\n    \"middleName\": \"string\",\n    \"lastName\": \"string\",\n    \"number\": \"string\",\n    \"officeId\": \"string (UUID)\",\n    \"bwOfficeId\": \"number (int32)\",\n    \"inactiveDate\": \"string (date)\",\n    \"legalName\": \"string\",\n    \"primaryEmailAddress\": \"string\",\n    \"addressLine1\": \"string\",\n    \"addressLine2\": \"string\",\n    \"addressCity\": \"string\",\n    \"addressPostalCode\": \"string\",\n    \"addressProvinceCode\": \"string\",\n    \"addressCountryCode\": \"string\",\n    \"birthDate\": \"string (date)\",\n    \"typeId\": \"string\",\n    \"lwaId\": \"string (UUID)\",\n    \"memberTypeCode\": {\n      \"createdTimestamp\": \"string (date-time)\",\n      \"modifiedTimestamp\": \"string (date-time)\",\n      \"id\": \"string (UUID)\",\n      \"code\": \"string\",\n      \"name\": \"string\"\n    }\n  }\n]\n```\n\n#### Delete a specific member\n\n`DELETE /members/{memberId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| memberId | string (UUID) | |\n\n| Response | Description |\n|---|---|\n| 200 OK | Member deleted. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Member not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (404 Not Found)**\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### Get a specific member\n\n`GET /members/{memberId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| memberId | string (UUID) | |\n\n**Query Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| isBwId | boolean | Indicates whether the passed 'memberId' should be treated as the brokerWOLF id |\n\n| Response | Description |\n|---|---|\n| 200 OK | Member found. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Member not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n#### Update a member property\n\n`PATCH /members/{memberId}`\n\nUpdates properties on the member entity. None of its child collections can be updated with this route.\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| memberId | string (UUID) | |\n\n**Request Example**\n\n```json\n{\n  \"bwId\": \"number (int32)\",\n  \"firstName\": \"string\",\n  \"middleName\": \"string\",\n  \"lastName\": \"string\",\n  \"number\": \"string\",\n  \"officeId\": \"string (UUID)\",\n  \"bwOfficeId\": \"number (int32)\",\n  \"inactiveDate\": \"string (date)\",\n  \"legalName\": \"string\",\n  \"primaryEmailAddress\": \"string\",\n  \"addressLine1\": \"string\",\n  \"addressLine2\": \"string\",\n  \"addressCity\": \"string\",\n  \"addressPostalCode\": \"string\",\n  \"addressProvinceCode\": \"string\",\n  \"addressCountryCode\": \"string\",\n  \"birthDate\": \"string (date)\",\n  \"typeId\": \"string\",\n  \"lwaId\": \"string (UUID)\",\n  \"memberTypeCode\": {\n    \"createdTimestamp\": \"string (date-time)\",\n    \"modifiedTimestamp\": \"string (date-time)\",\n    \"id\": \"string (UUID)\",\n    \"code\": \"string\",\n    \"name\": \"string\"\n  }\n}\n```\n\n| Response | Description |\n|---|---|\n| 200 OK | Member updated. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Member not found. |\n| 412 Precondition Failed | Optimistic concurrency check failed. The If-Match header is missing or it does not contain the version currently in the database. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n### Offices\n\n#### Add new office\n\n`POST /offices`\n\nIf the 'id' is passed in this object, the API will attempt to use that for its office id. If 'id' is null or undefined, the API will generate one.\n\n**Request Example**\n\n```json\n{\n  \"id\": \"string (UUID)\",\n  \"bwId\": \"number (int32)\",\n  \"name\": \"string\",\n  \"shortName\": \"string\",\n  \"inactiveDate\": \"string (date)\"\n}\n```\n\n| Response | Description |\n|---|---|\n| 201 Created | Office created |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 409 Conflict | Office already exists. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (201 Created)**\n\n```json\n{\n  \"createdTimestamp\": \"string (date-time)\",\n  \"modifiedTimestamp\": \"string (date-time)\",\n  \"id\": \"string (UUID)\",\n  \"version\": \"number (int32)\",\n  \"bwId\": \"number (int32)\",\n  \"name\": \"string\",\n  \"shortName\": \"string\",\n  \"inactiveDate\": \"string (date)\"\n}\n```\n\n#### Get list of offices\n\n`GET /offices`\n\n| Response | Description |\n|---|---|\n| 200 OK | Success |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (200 OK)**\n\n```json\n[\n  {\n    \"createdTimestamp\": \"string (date-time)\",\n    \"modifiedTimestamp\": \"string (date-time)\",\n    \"version\": \"number (int32)\",\n    \"id\": \"string (UUID)\",\n    \"bwId\": \"number (int32)\",\n    \"name\": \"string\",\n    \"shortName\": \"string\",\n    \"inactiveDate\": \"string (date)\"\n  }\n]\n```\n\n#### Delete a specific office\n\n`DELETE /offices/{officeId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| officeId | string (UUID) | |\n\n| Response | Description |\n|---|---|\n| 200 OK | Office deleted. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Office not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n#### Get a specific office\n\n`GET /offices/{officeId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| officeId | string (UUID) | |\n\n**Query Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| isBwId | boolean | Indicates whether the passed 'officeId' should be treated as the brokerWOLF id |\n\n| Response | Description |\n|---|---|\n| 200 OK | Office found. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Office not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n#### Update an office property\n\n`PATCH /offices/{officeId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| officeId | string (UUID) | |\n\n| Response | Description |\n|---|---|\n| 200 OK | Office updated. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Office not found. |\n| 412 Precondition Failed | Optimistic concurrency check failed. The If-Match header is missing or it does not contain the version currently in the database. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n#### Get list of office summaries\n\n`GET /offices/summary`\n\n| Response | Description |\n|---|---|\n| 200 OK | Success |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (200 OK)**\n\n```json\n[\n  {\n    \"id\": \"string (UUID)\",\n    \"name\": \"string\",\n    \"shortName\": \"string\",\n    \"inactiveDate\": \"string (date)\"\n  }\n]\n```\n\n### Brokerages\n\n#### Add new brokerage\n\n`POST /brokerages`\n\nIf the 'id' is passed in this object, the API will attempt to use that for its brokerage id. If 'id' is null or undefined, the API will generate one. An internal token is needed to access this endpoint.\n\n**Request Example**\n\n```json\n{\n  \"createdTimestamp\": \"string (date-time)\",\n  \"modifiedTimestamp\": \"string (date-time)\",\n  \"name\": \"string\",\n  \"shortName\": \"string\",\n  \"id\": \"string\",\n  \"companyTypeCode\": \"string\",\n  \"addressPostalCode\": \"string\",\n  \"addressCountryCode\": \"string\"\n}\n```\n\n| Response | Description |\n|---|---|\n| 201 Created | Brokerage created |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 409 Conflict | Brokerage already exists. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (201 Created)**\n\n```json\n{\n  \"createdTimestamp\": \"string (date-time)\",\n  \"modifiedTimestamp\": \"string (date-time)\",\n  \"name\": \"string\",\n  \"shortName\": \"string\",\n  \"id\": \"string\",\n  \"companyTypeCode\": \"string\",\n  \"addressPostalCode\": \"string\",\n  \"addressCountryCode\": \"string\"\n}\n```\n\n#### Retrieve all brokerages\n\n`GET /brokerages`\n\nThis endpoint is internal only and requires an internal token. The response will be all brokerages in the database.\n\n**Query Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| filter | string | Filter that will be used to query the database. |\n\n| Response | Description |\n|---|---|\n| 200 OK | Success |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n#### Delete a specific brokerage\n\n`DELETE /brokerages/{clientId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| clientId | string (UUID) | |\n\n| Response | Description |\n|---|---|\n| 200 OK | Brokerage deleted. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Brokerage not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n#### Get a specific brokerage\n\n`GET /brokerages/{clientId}`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| clientId | string | |\n\n| Response | Description |\n|---|---|\n| 200 OK | Brokerage found. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Brokerage not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n### Member Types\n\n#### Get a specific Member Type\n\n`GET /member-types`\n\n**Path Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| id | string (UUID) | |\n\n| Response | Description |\n|---|---|\n| 200 OK | Member Type found. |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 403 Forbidden | Permission denied. See response body for details. |\n| 404 Not Found | Brokerage not found. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n**Response Example (200 OK)**\n\n```json\n{\n  \"id\": \"string (UUID)\",\n  \"createdTimestamp\": \"string (date-time)\",\n  \"modifiedTimestamp\": \"string (date-time)\",\n  \"version\": \"number (int32)\",\n  \"code\": \"string\",\n  \"name\": \"string\"\n}\n```\n\n#### Retrieve all Member Types\n\n`GET /member-types`\n\nThis endpoint is internal only and requires an internal token. The response will be all brokerages in the database.\n\n**Query Parameters**\n\n| Parameter | Type | Description |\n|---|---|---|\n| filter | string | Filter that will be used to query the database. |\n\n| Response | Description |\n|---|---|\n| 200 OK | Success |\n| 400 Bad Request | Invalid request. See response body for details. |\n| 401 Unauthorized | Unauthorized request. See response body for details. |\n| 500 Internal Server Error | Unknown error. See response body for details. |\n\n### Schema Definitions\n\n#### HttpStatus400\n\nInvalid request. See response body for details.\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### HttpStatus401\n\nUnauthorized request. See response body for details.\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### HttpStatus403\n\nPermission denied. See response body for details.\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### HttpStatus412\n\nOptimistic concurrency check failed. The If-Match header is missing or it does not contain the version currently in the database.\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### HttpStatus500\n\nUnknown error. See response body for details.\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### ApiError\n\n| Field | Type | Description |\n|---|---|---|\n| code | integer (int32) | An error code. This is typically the same as the http status code but can be different in some cases. |\n| message | string | Simple message about the error. |\n| details | string[] | An array of strings holding more details about the error. |\n\n```json\n{\n  \"code\": \"integer (int32)\",\n  \"message\": \"string\",\n  \"details\": [\"string\"]\n}\n```\n\n#### Member\n\n| Field | Type | Description |\n|---|---|---|\n| createdTimestamp | string (date-time) | |\n| modifiedTimestamp | string (date-time) | |\n| id | string (UUID) | |\n| bwId | number (int32) | The brokerWOLF Id of the member. This should not be used by third party systems as this value could go away in the future. |\n| version | number (int32) | The version of the member in the database. Used for optimistic concurrency checking. |\n| firstName | string | |\n| middleName | string | |\n| lastName | string | |\n| number | string | The brokerage specified number. |\n| officeId | string (UUID) | |\n| bwOfficeId | number (int32) | The brokerWOLF Id of the office. This should not be used by third party systems as this value could go away in the future. |\n| inactiveDate | string (date) | The date the member went inactive. If this is null, the member is active. |\n| legalName | string | The legal name of member. |\n| primaryEmailAddress | string | The primary email address of a member. |\n| addressLine1 | string | The address of a member. |\n| addressLine2 | string | The second address of a member. |\n| addressCity | string | The city of a member. |\n| addressPostalCode | string | The postal code of a member. |\n| addressProvinceCode | string | The province code of a member. |\n| addressCountryCode | string | The country code of a member. |\n| birthDate | string | The birth date of a member. |\n| typeId | string | The type id of a member. |\n| lwaId | string | The lwaId of a member. |\n| memberTypeCode | string | The member type of a member. |\n\n#### Office\n\n| Field | Type | Description |\n|---|---|---|\n| createdTimestamp | string (date-time) | |\n| modifiedTimestamp | string (date-time) | |\n| id | string (UUID) | |\n| version | number (int32) | The version of the office in the database. Used for optimistic concurrency checking. |\n| bwId | number (int32) | The brokerWOLF Id of the office. This should not be used by third party systems as this value could go away in the future. |\n| name | string | Main name of the office. |\n| shortName | string | Short name for the office. |\n| inactiveDate | string (date) | The date the office went inactive. If this is null, the office is active. |\n\n#### Brokerage\n\n| Field | Type | Description |\n|---|---|---|\n| createdTimestamp | string (date-time) | |\n| modifiedTimestamp | string (date-time) | |\n| version | number (int32) | The version of the brokerage in the database. Used for optimistic concurrency checking. |\n| name | string | Main name of the brokerage. |\n| shortName | string | Short name for the brokerage. |\n| id | string | |\n| companyTypeCode | string | Company Type Code for the brokerage. |\n| addressPostalCode | string | Address Postal Code for the brokerage. |\n| addressCountryCode | string | Country Code for the brokerage. |\n\n#### Member Type\n\n| Field | Type | Description |\n|---|---|---|\n| createdTimestamp | string (date-time) | |\n| modifiedTimestamp | string (date-time) | |\n| id | string | |\n| version | number (int32) | The version of the brokerage in the database. Used for optimistic concurrency checking. |\n| code | string | Member type code. |\n| name | string | Name of the member type. |\n\n#### Office Summary\n\n| Field | Type | Description |\n|---|---|---|\n| id | string (UUID) | |\n| name | string | Main name of the office. |\n| shortName | string | Short name for the office. |\n| inactiveDate | string (date) | The date the office went inactive. If this is null, the office is active. |\n\n"
servers:
- url: https://deals.api.lwolf.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
security:
- BearerToken: []
tags:
- name: Client Contact
paths:
  /client-contacts/{clientContactId}:
    get:
      summary: Get a client contact
      description: Using the client contact guid in the request path, the method requests a client contact.
      tags:
      - Client Contact
      security:
      - BearerToken: []
      parameters:
      - name: clientContactId
        in: in path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Retrieved client contact successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientContact'
        '400':
          description: Invalid request. See response body for details.
        '401':
          description: Unauthorized request. See response body for details.
        '403':
          description: Permission denied. See response body for details.
        '404':
          description: Client contact not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Unknown error. See response body for details.
    patch:
      summary: Update a client contact.
      description: Update a client contact
      tags:
      - Client Contact
      security:
      - BearerToken: []
      parameters:
      - name: clientContactId
        in: in path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successfully updated the client contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientContact'
        '400':
          description: Invalid request. See response body for details.
        '401':
          description: Unauthorized request. See response body for details.
        '403':
          description: Permission denied. See response body for details.
        '404':
          description: Client contact not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '412':
          description: Optimistic concurrency check failed. The If-Match header is missing or it does not contain the version currently in the database.
        '500':
          description: Unknown error. See response body for details.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientContact'
            example:
              id: string (UUID)
              type: string
              companyName: string
              prefix: string
              firstName: string
              middleName: string
              lastName: string
              suffix: string
              endCode: string
              movingOut: boolean
              occupation: string
              principalBusiness: string
              addresses:
              - typeCode: string
                line1: string
                line2: string
                city: string
                provinceCode: string
                postalCode: string
                countryCode: string
              phoneNumbers:
              - typeCode: string
                ext: string
                number: string
              emailAddresses:
              - typeCode: string
                address: string
    delete:
      summary: Delete a client contact
      description: Deletes a contact based on their contact GUID.
      tags:
      - Client Contact
      security:
      - BearerToken: []
      parameters:
      - name: clientContactId
        in: in path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successfully deleted the contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientContact'
        '400':
          description: Invalid request. See response body for details.
        '401':
          description: Unauthorized request. See response body for details.
        '403':
          description: Permission denied. See response body for details.
        '404':
          description: Client contact not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Unknown error. See response body for details.
  /deals/{dealId}/client-contacts:
    get:
      summary: Get a client contact
      description: Using the deal guid in the request path, the method requests a client contact.
      tags:
      - Client Contact
      security:
      - BearerToken: []
      parameters:
      - name: dealId
        in: in path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Retrieved client contacts successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientContact'
        '400':
          description: Invalid request. See response body for details.
        '401':
          description: Unauthorized request. See response body for details.
        '403':
          description: Permission denied. See response body for details.
        '404':
          description: Client contact not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Unknown error. See response body for details.
    post:
      summary: Create a client contact
      description: Creates a client contact in the given deal.
      tags:
      - Client Contact
      security:
      - BearerToken: []
      parameters:
      - name: dealId
        in: in path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '201':
          description: Successfully created the contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientContact'
        '400':
          description: Invalid request. See response body for details.
        '401':
          description: Unauthorized request. See response body for details.
        '403':
          description: Permission denied. See response body for details.
        '409':
          description: Client contact already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Unknown error. See response body for details.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientContact'
            example:
              id: string (UUID)
              type: string
              companyName: string
              prefix: string
              firstName: string
              middleName: string
              lastName: string
              suffix: string
              endCode: string
              movingOut: boolean
              occupation: string
              principalBusiness: string
              addresses:
              - typeCode: string
                line1: string
                line2: string
                city: string
                provinceCode: string
                postalCode: string
                countryCode: string
              phoneNumbers:
              - typeCode: string
                ext: string
                number: string
              emailAddresses:
              - typeCode: string
                address: string
  /client-contacts/{clientContactId}/phone-numbers:
    post:
      summary: Create cli

# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lone-wolf/refs/heads/main/openapi/lone-wolf-client-contact-api-openapi.yml