Please enable JavaScript to view this website.

Skip to main content

cdp-api (v1)

Download OpenAPI specification:Download

Welcome to the API documentation for Milwaukee Tool's Customer Data Platform (CDP). This comprehensive guide is designed to help developers, partners, and stakeholders understand how to interact with the CDP programmatically. By leveraging our API, you can seamlessly integrate and access the wealth of customer data stored in our platform, enabling you to build custom applications, automate processes, and extract valuable insights.
NOTE: In places where the documentation states either an API key OR access token is required, both should be included. The documentation framework being used does not support specifying multiple authorization types for a single resource. Please reach out to dan.mcmanus@milwaukeetool.com to obtain Authentication credentials.

/v1/address

Get Address By Id

Supports querying for an address by an existing address id.

Authorizations:
access_tokenapi_key
path Parameters
id
required
string <uuid>
Example: https://cdp-api-test.milwaukeetool.com/v1/address/00000000-0000-0000-0000-000000000000

A unique identifier of the address you wish to retrieve

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create a new address

This endpoint creates a new address with the provided details.

Authorizations:
access_tokenapi_key
Request Body schema: application/json
optional

Details of the new address to be created.

address1
string
address2
string
city
string
state
string
postalCode
string <postal-code>
country
string (CountryCode) = 2 characters ^[A-Z]{2}$

ISO 3166-1 alpha-2 country code. A two-letter uppercase code representing a country (e.g., "US" for United States, "CA" for Canada, "MX" for Mexico). See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 for the complete list of codes.

alias
string
default
boolean
addressType
string
Enum: "residential" "commercial"

Responses

Request samples

Content type
application/json
{
  • "address1": "123 Fake Street",
  • "address2": "Apt 456",
  • "city": "Faketown",
  • "state": "WI",
  • "postalCode": "12345",
  • "country": "US",
  • "alias": "Home",
  • "default": true,
  • "addressType": "residential"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

/v1/service/address

Create a new service address

This endpoint creates a new service address moment with the provided details.

Authorizations:
access_tokenapi_key
Request Body schema: application/json
required

Details of the new service address to be created.

addressId
required
string
userId
string
address1
string
address2
string
city
string
state
string
postalCode
string
country
string (CountryCode) = 2 characters ^[A-Z]{2}$

ISO 3166-1 alpha-2 country code. A two-letter uppercase code representing a country (e.g., "US" for United States, "CA" for Canada, "MX" for Mexico). See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 for the complete list of codes.

alias
string

Responses

Request samples

Content type
application/json
{
  • "addressId": "00000000-0000-0000-0000-000000000000",
  • "userId": "00000000-0000-0000-0000-000000000001",
  • "address1": "123 Service Street",
  • "address2": "Suite 100",
  • "city": "Faketown",
  • "state": "CA",
  • "postalCode": "90210",
  • "country": "US",
  • "alias": "Service Location"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get Service Address By Id

Retrieve a specific service address moment by its service address Id.

Authorizations:
access_tokenapi_key
query Parameters
id
required
string

The ID of the service address to retrieve.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

/v1/user

Get User Profile

Supports querying for an end user by any id.

Authorizations:
access_tokenapi_key
query Parameters
id
string
Example: id=https://cdp-api-test.milwaukeetool.com/v1/user?id=john.doe@example.com

A unique identifier of the user profile you wish to retrieve (e.g. email, identity vertex id, auth0 account id, etc.)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create a new user

This endpoint creates a new user with the provided details. Calling this endpoint should be followed by sending an identify event to Rudderstack with the 'userId' field set to the newly created user's identityId.

Authorizations:
access_tokenapi_key
Request Body schema: application/json
optional

Details of the new user to be created.

emailAddress
string <email>
firstName
string
lastName
string
phoneNumber
string
address1
string
address2
string
city
string
state
string
postalCode
string
country
string (CountryCode) = 2 characters ^[A-Z]{2}$

ISO 3166-1 alpha-2 country code. A two-letter uppercase code representing a country (e.g., "US" for United States, "CA" for Canada, "MX" for Mexico). See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 for the complete list of codes.

jobTitle
string
languagePreference
string
trade
string
tradeSector
string
secondaryTradeSectors
Array of strings

Responses

Request samples

Content type
application/json
{
  • "emailAddress": "user@example.com",
  • "firstName": "string",
  • "lastName": "string",
  • "phoneNumber": "string",
  • "address1": "string",
  • "address2": "string",
  • "city": "string",
  • "state": "string",
  • "postalCode": "string",
  • "country": "US",
  • "jobTitle": "string",
  • "languagePreference": "string",
  • "trade": "string",
  • "tradeSector": "string",
  • "secondaryTradeSectors": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

/v1/user/addresses

Get Addresses By User Id

Supports querying for all addresses associated with a user by their identityId.

Authorizations:
access_tokenapi_key
path Parameters
id
required
string
Example: 00000000-0000-0000-0000-000000000000

A unique identifier of the user profile you wish to retrieve addresses for

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

/v1/user/search

Search for users by name or phone number. Returns a list of matching users. Maximum of 100 results returned.

Authorizations:
access_tokenapi_key
query Parameters
phone
string

Phone number to query by.

name
string
Example: name=John%20Doe

Full name to query by, in the format of {first_name}%20{last_name}. The client MUST remove all spaces from each name part, as well as URL encode the parameter. For example, John Doe would be encoded as John%20Doe.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

/v1/strategic-attributes

Get Trades

Returns a list of all trades and their corresponding specialties. The response is localized based on the Accept-Language header. (en-US by default)

Authorizations:
api_key
header Parameters
Accept-Language
string

Language code (e.g., en-US, es-MX). Used for localization. If value is not provided or language is unsupported, en-US is assumed.

Responses

Response samples

Content type
application/json
Example
{
  • "data": {
    }
}

/v1/moments

Get Moments

Returns moments for a single user. By default, returns all moments filtered by type and sorted/paginated as requested. If view=latestPerCase is provided, moments are first filtered by type, then grouped by caseId, then the latest moment per case is selected. Sorting and pagination are applied to the selected per-case moments.

Authorizations:
access_tokenapi_key
query Parameters
userId
required
string

A unique identifier of the user for which to retrieve moments.

types
Array of strings

Filter by one or more moment types.

view
string
Value: "latestPerCase"

Selects the result mode. Omit for default behavior (all moments). Use latestPerCase to return exactly one latest moment per caseId.

orderby
string
Enum: "asc" "desc"
Example: orderby=desc

Sort direction. Supported directions: asc, desc. Defaults to desc. In view=latestPerCase, sorting is applied to the selected per-case moments.

page
integer >= 1
Default: 1

The page number (1-based). Defaults to 1.

resultsperpage
integer [ 1 .. 200 ]
Default: 25

Number of items per page. Defaults to 25. In view=latestPerCase, this is the number of cases returned.

Responses

Response samples

Content type
application/json
Example
{
  • "data": {
    }
}

/v1/moments/{momentType}

Get moments by type

Returns raw moments of the specified momentType. Results can be filtered using the supported query parameters (for example, userId and caseId) and paginated with page and resultsperpage. Used for retrieving user timelines, case-based workflows, and general type-based moment retrieval.

Authorizations:
access_tokenapi_key
path Parameters
momentType
required
string

The type of moment to retrieve (e.g. cx_case_management_v2, auth0_log_in_v1).

query Parameters
userId
string

A unique identifier of the user for which to retrieve moments.

caseId
string

Filter moments by case ID.

page
integer
Default: 1
resultsperpage
integer
Default: 25

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}