MVMNT Location Contacts API
Location contact management operations
Location contact management operations
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/mvmnt-location-contacts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: MVMNT Location Contacts API
version: 1.0.0
description: "The MVMNT API enables you to automate freight brokerage workflows by integrating\ndirectly with our Transportation Management System.\n\n## Authentication\n\nOAuth 2.0 client credentials flow. See [Authentication Guide](/getting-started/authentication)\nfor details.\n\n### Token Endpoint\n\n```\nPOST https://api.mvmnt.io/oauth2/token\n```\n\n#### Request\n\n**Headers:**\n```http\nContent-Type: application/x-www-form-urlencoded\n```\n\n**Body Parameters:**\n```\ngrant_type=client_credentials\nclient_id=YOUR_CLIENT_ID\nclient_secret=YOUR_CLIENT_SECRET\n```\n\n#### Example Request\n\n```bash\ncurl -X POST https://api.mvmnt.io/oauth2/token \\\n -H \"Content-Type: application/x-www-form-urlencoded\" \\\n -d \"grant_type=client_credentials\" \\\n -d \"client_id=YOUR_CLIENT_ID\" \\\n -d \"client_secret=YOUR_CLIENT_SECRET\"\n```\n\n#### Success Response\n\n**Status:** `200 OK`\n\n```json\n{\n \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n```\n\n**Response Fields:**\n- `access_token`: JWT Bearer token to use for API requests\n- `token_type`: Always `Bearer`\n- `expires_in`: Token lifetime in seconds (3600 = 1 hour)\n"
contact:
name: MVMNT Support
email: support@mvmnt.io
url: https://docs.mvmnt.io
license:
name: Proprietary
url: https://mvmnt.io/legal/terms
x-parsed-md-description:
result:
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: true
attributes:
content: The MVMNT API enables you to automate freight brokerage workflows by integrating
children: []
type: text
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: true
attributes: {}
children: []
type: softbreak
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 0
- 2
inline: true
attributes:
content: directly with our Transportation Management System.
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes:
level: 2
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: true
attributes:
content: Authentication
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: heading
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: 'OAuth 2.0 client credentials flow. See '
children: []
type: text
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
href: /getting-started/authentication
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: Authentication Guide
children: []
type: text
annotations: []
slots: {}
type: link
annotations: []
slots: {}
redocly:::linkOriginal:href: /getting-started/authentication
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: ' for details.'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
servers:
- url: https://api.mvmnt.io/v1
description: Production
security:
- BearerAuth: []
tags:
- name: Location Contacts
description: Location contact management operations
paths:
/location-contacts/filter:
post:
tags:
- Location Contacts
summary: Filter location contacts
description: 'Query location contacts using flexible filter criteria with AND/OR logic.
By default, only non-deleted location contacts are returned (deletedAt: { isNull: true }).
Override this by explicitly setting deletedAt filter criteria.
'
operationId: filterLocationContacts
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LocationContactFilterRequest'
responses:
'200':
description: Filtered location contacts with pagination
content:
application/json:
schema:
type: object
required:
- data
- pageInfo
properties:
data:
type: array
items:
$ref: '#/components/schemas/LocationContact'
pageInfo:
$ref: '#/components/schemas/PaginationInfo'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/InternalServerError'
/location-contacts:
post:
tags:
- Location Contacts
summary: Create a new location contact
description: 'Link a customer contact to a location with specific contact types/roles.
Location contacts represent the relationship between a customer contact
and a specific location, defining what role the contact has at that location.
'
operationId: createLocationContact
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LocationContactInput'
examples:
primary_manager:
summary: Primary location manager
value:
locationId: 770e8400-e29b-41d4-a716-446655440000
customerContactId: 660e8400-e29b-41d4-a716-446655440000
isPrimary: true
contactTypes:
- LOCATION_MANAGER
- SHIPPING
key: ERP-LOC-CONTACT-001
billing_contact:
summary: Billing contact
value:
locationId: 770e8400-e29b-41d4-a716-446655440000
customerContactId: 660e8400-e29b-41d4-a716-446655440001
isPrimary: false
contactTypes:
- BILLING
responses:
'201':
description: Location contact created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LocationContact'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'409':
$ref: '#/components/responses/ConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
/location-contacts/{id}:
get:
tags:
- Location Contacts
summary: Get a location contact by ID
description: 'Retrieve a single location contact by its unique identifier.
'
operationId: getLocationContactById
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
responses:
'200':
description: Location contact found
content:
application/json:
schema:
$ref: '#/components/schemas/LocationContact'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
patch:
tags:
- Location Contacts
summary: Update a location contact
description: 'Partially update a location contact. Only provided fields will be updated.
- **Omitted fields**: Not modified (current value preserved)
- **Provided fields**: Updated to the new value
- **Null values**: Clear the field (set to null) where applicable
'
operationId: updateLocationContact
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LocationContactPatch'
examples:
updateContactTypes:
summary: Update contact types
value:
contactTypes:
- LOCATION_MANAGER
- SHIPPING
- RECEIVING
updatePrimary:
summary: Set as primary
value:
isPrimary: true
responses:
'200':
description: Location contact updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LocationContact'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'409':
$ref: '#/components/responses/ConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
tags:
- Location Contacts
summary: Delete a location contact
description: 'Soft delete a location contact (sets deletedAt timestamp).
The location contact will no longer appear in default queries but can be retrieved
by explicitly filtering for deleted records.
'
operationId: deleteLocationContact
parameters:
- $ref: '#/components/parameters/IdOrClientKey'
responses:
'204':
description: Location contact deleted successfully
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
CustomerStatus:
type: string
enum:
- NEW
- CONTACTED
- QUALIFIED
- QUOTED
- NURTURING
- PENDING
- ACTIVE
- INACTIVE
- BLOCKED
- CLOSED
description: 'Customer account status (includes lead stages):
- `NEW`: New lead, not yet contacted
- `CONTACTED`: Initial contact made with lead
- `QUALIFIED`: Lead has been qualified as potential customer
- `QUOTED`: Quote has been provided to lead
- `NURTURING`: Lead being nurtured for future opportunity
- `PENDING`: Customer prospect pending activation
- `ACTIVE`: Active customer account
- `INACTIVE`: Deactivated customer account
- `BLOCKED`: Customer account blocked from operations
- `CLOSED`: Customer account permanently closed
'
x-parsed-md-description:
result:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: true
attributes:
content: 'Customer account status (includes lead stages):'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 1
- 11
inline: false
attributes:
ordered: false
marker: '-'
children:
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: true
attributes:
content: NEW
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 1
- 2
inline: true
attributes:
content: ': New lead, not yet contacted'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: true
attributes:
content: CONTACTED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 2
- 3
inline: true
attributes:
content: ': Initial contact made with lead'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: true
attributes:
content: QUALIFIED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 3
- 4
inline: true
attributes:
content: ': Lead has been qualified as potential customer'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: true
attributes:
content: QUOTED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 4
- 5
inline: true
attributes:
content: ': Quote has been provided to lead'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: NURTURING
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 5
- 6
inline: true
attributes:
content: ': Lead being nurtured for future opportunity'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: true
attributes:
content: PENDING
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 6
- 7
inline: true
attributes:
content: ': Customer prospect pending activation'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: true
attributes:
content: ACTIVE
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 7
- 8
inline: true
attributes:
content: ': Active customer account'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: true
attributes:
content: INACTIVE
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 8
- 9
inline: true
attributes:
content: ': Deactivated customer account'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: true
attributes:
content: BLOCKED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 9
- 10
inline: true
attributes:
content: ': Customer account blocked from operations'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: true
attributes:
content: CLOSED
children: []
type: code
annotations: []
slots: {}
- $$mdtype: Node
errors: []
lines:
- 10
- 11
inline: true
attributes:
content: ': Customer account permanently closed'
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: item
annotations: []
slots: {}
type: list
annotations: []
slots: {}
PaymentTermReference:
type: object
description: 'Enhanced reference to a payment term resource (returned in responses).
Includes full payment term details in addition to id/key.
'
required:
- id
- name
- createdAt
- updatedAt
properties:
id:
type: string
format: uuid
description: Payment term UUID
example: 550e8400-e29b-41d4-a716-446655440000
key:
type:
- string
- 'null'
maxLength: 512
description: Client-defined reference ID if set
example: ERP-PAYTERM-NET30
name:
type: string
description: Payment term name
example: Net 30
description:
type:
- string
- 'null'
description: Payment term description or notes
example: Payment due 30 days from invoice date
days:
type:
- integer
- 'null'
description: Number of days until payment is due
example: 30
quickPayFee:
type:
- number
- 'null'
format: float
description: Quick pay fee percentage (e.g., 0.05 for 5%)
example: 0.05
x-parsed-md-description:
result:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: false
attributes: {}
children:
- $$mdtype: Node
errors: []
lines:
- 0
- 1
inline: true
attributes:
content: Quick pay fee percentage (e.g., 0.05 for 5%)
children: []
type: text
annotations: []
slots: {}
type: inline
annotations: []
slots: {}
type: paragraph
annotations: []
slots: {}
apOnly:
type:
- boolean
- 'null'
description: Whether this payment term is for accounts payable only
example: false
doNotUse:
type:
- boolean
- 'null'
description: Flag to prevent using this payment term for new transactions
example: false
createdAt:
type: string
format: date-time
description: When the payment term was created
example: '2025-01-15T10:00:00Z'
updatedAt:
type: string
format: date-time
description: When the payment term was last updated
example: '2025-01-15T14:30:00Z'
deletedAt:
type:
- string
- 'null'
format: date-time
description: When the payment term was soft deleted (null if active)
example: null
LocationContactFilterRequest:
type: object
description: Request body for filtering location contacts
properties:
filter:
$ref: '#/components/schemas/LocationContactFilter'
description: 'Filter criteria (optional - omit to return all location contacts).
Note: deletedAt automatically defaults to { isNull: true } unless explicitly overridden.
'
pageSize:
type: integer
minimum: 1
maximum: 250
default: 50
description: Number of results per page
cursor:
type: string
description: Pagination cursor for next page
example:
filter:
and:
- locationId:
equalTo: 770e8400-e29b-41d4-a716-446655440000
- isPrimary:
equalTo: true
pageSize: 50
LocationContactReference:
type: object
description: 'Location contact reference for embedding in Location responses.
Identical to LocationContact but excludes the location and locationId fields to avoid circular references.
'
required:
- id
- customerContactId
- isPrimary
- createdAt
- updatedAt
properties:
object:
type: string
enum:
- LOCATION_CONTACT
readOnly: true
description: Object type identifier
example: LOCATION_CONTACT
id:
type: string
format: uuid
readOnly: true
description: Unique location contact identifier
example: 880e8400-e29b-41d4-a716-446655440000
customerContactId:
type: string
format: uuid
description: Customer contact linked to this location
example: 660e8400-e29b-41d4-a716-446655440000
customerContact:
$ref: '#/components/schemas/CustomerContact'
readOnly: true
description: The customer contact details
isPrimary:
type: boolean
description: Whether this is the primary contact for the location
example: true
contactTypes:
type: array
items:
$ref: '#/components/schemas/LocationContactType'
description: Roles/types for this location contact
example:
- LOCATION_MANAGER
- SHIPPING
key:
type:
- string
- 'null'
maxLength: 512
description: Client-defined reference identifier for this location contact
example: ERP-LOC-CONTACT-001
createdAt:
type: string
format: date-time
readOnly: true
description: Timestamp when location contact was created
example: '2025-01-15T10:00:00Z'
updatedAt:
type: string
format: date-time
readOnly: true
description: Timestamp when location contact was last updated
example: '2025-01-15T14:30:00Z'
deletedAt:
type:
- string
- 'null'
format: date-time
readOnly: true
description: Timestamp when location contact was soft-deleted (null if active)
example: null
CustomerDeactivationReason:
type: string
enum:
- NOT_PAYING_INVOICE
- ACQUIRED
- DUPLICATE
- NOT_IN_BUSINESS
- OTHER
description: 'Reason for customer deactivation:
- `NOT_PAYING_INVOICE`: Customer is not paying invoices
- `ACQUIRED`: Customer was acquired by another company
- `DUPLICATE`: Duplicate customer record
- `NOT_IN_BUSINESS`:
# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mvmnt/refs/heads/main/openapi/mvmnt-location-contacts-api-openapi.yml