# MVMNT API The MVMNT API enables you to automate freight brokerage workflows by integrating directly with our Transportation Management System. ## Authentication OAuth 2.0 client credentials flow. See [Authentication Guide](/getting-started/authentication) for details. ### Token Endpoint ``` POST https://api.mvmnt.io/oauth2/token ``` #### Request **Headers:** ```http Content-Type: application/x-www-form-urlencoded ``` **Body Parameters:** ``` grant_type=client_credentials client_id=YOUR_CLIENT_ID client_secret=YOUR_CLIENT_SECRET ``` #### Example Request ```bash curl -X POST https://api.mvmnt.io/oauth2/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET" ``` #### Success Response **Status:** `200 OK` ```json { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600 } ``` **Response Fields:** - `access_token`: JWT Bearer token to use for API requests - `token_type`: Always `Bearer` - `expires_in`: Token lifetime in seconds (3600 = 1 hour) Version: 1.0.0 License: Proprietary ## Servers Production ``` https://api.mvmnt.io/v1 ``` ## Security ### BearerAuth OAuth 2.0 access token obtained via client credentials flow Type: http Scheme: bearer Bearer Format: JWT ## Download OpenAPI description [MVMNT API](https://docs.mvmnt.io/_bundle/apis/openapi.yaml) ## Companies ### Filter companies - [POST /companies/filter](https://docs.mvmnt.io/apis/openapi/companies/filtercompanies.md): Query companies using flexible filter criteria with AND/OR logic. By default, only non-deleted companies are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. ### Create a new company - [POST /companies](https://docs.mvmnt.io/apis/openapi/companies/createcompany.md): Create a new company within an organization ### Get a company by ID - [GET /companies/{id}](https://docs.mvmnt.io/apis/openapi/companies/getcompanybyid.md): Retrieve a single company by its unique identifier ### Update a company - [PATCH /companies/{id}](https://docs.mvmnt.io/apis/openapi/companies/updatecompany.md): Partially update a company. 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 ### Delete a company - [DELETE /companies/{id}](https://docs.mvmnt.io/apis/openapi/companies/deletecompany.md): Soft delete a company (sets deletedAt timestamp). The company will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Carrier Contacts ### Filter carrier contacts - [POST /carrier-contacts/filter](https://docs.mvmnt.io/apis/openapi/carrier-contacts/filtercarriercontacts.md): Query carrier contacts using flexible filter criteria with AND/OR logic. By default, only non-deleted carrier contacts are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. ### Create carrier contact - [POST /carrier-contacts](https://docs.mvmnt.io/apis/openapi/carrier-contacts/createcarriercontact.md): Create a new carrier contact. The contactInfo will create a new Contact record, and the CarrierContact will reference it via contactId (managed internally). ### Get carrier contact - [GET /carrier-contacts/{id}](https://docs.mvmnt.io/apis/openapi/carrier-contacts/getcarriercontactbyid.md): Retrieve a single carrier contact by its unique identifier ### Update carrier contact - [PATCH /carrier-contacts/{id}](https://docs.mvmnt.io/apis/openapi/carrier-contacts/updatecarriercontact.md): Partially update a carrier 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 When updating contactInfo, the underlying Contact record is updated. ### Delete carrier contact - [DELETE /carrier-contacts/{id}](https://docs.mvmnt.io/apis/openapi/carrier-contacts/deletecarriercontact.md): Soft delete a carrier contact (sets deletedAt timestamp). The contact will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Carriers ### Filter carriers - [POST /carriers/filter](https://docs.mvmnt.io/apis/openapi/carriers/filtercarriers.md): Query carriers using flexible filter criteria with AND/OR logic. By default, only non-deleted carriers are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. Returns carriers of all types (TRUCKLOAD, AIR, CARTAGE, LINEHAUL, LTL, OCEAN, RAIL) with type-specific fields included based on carrier type. ### Create a new carrier - [POST /carriers](https://docs.mvmnt.io/apis/openapi/carriers/createcarrier.md): Create a new carrier within an organization. The carrier type must be specified and determines which fields are available: - TRUCKLOAD: Includes insurance, safety rating, and FMCSA inspection fields - AIR, CARTAGE, LINEHAUL, LTL, OCEAN, RAIL: Include only base carrier fields Note: In the backend, null carrier type is represented as TRUCKLOAD in the public API. ### Get a carrier by ID - [GET /carriers/{id}](https://docs.mvmnt.io/apis/openapi/carriers/getcarrierbyid.md): Retrieve a single carrier by its unique identifier. The response will include type-specific fields based on the carrier's type: - TRUCKLOAD: Includes insurance, safety rating, and FMCSA inspection fields - AIR, CARTAGE, LINEHAUL, LTL, OCEAN, RAIL: Include only base carrier fields ### Update a carrier - [PATCH /carriers/{id}](https://docs.mvmnt.io/apis/openapi/carriers/updatecarrier.md): Partially update a carrier. 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 The carrier type determines which fields can be updated: - TRUCKLOAD: Can update insurance, safety rating, and FMCSA fields - AIR, CARTAGE, LINEHAUL, LTL, OCEAN, RAIL: Can only update base carrier fields Changing the carrier type will affect which specialized fields are available. ### Delete a carrier - [DELETE /carriers/{id}](https://docs.mvmnt.io/apis/openapi/carriers/deletecarrier.md): Soft delete a carrier (sets deletedAt timestamp). The carrier will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ### Search carriers - [POST /carriers/search](https://docs.mvmnt.io/apis/openapi/carriers/searchcarriers.md): Search carriers using OpenSearch-powered full-text and field-specific search. This endpoint searches both: - ONBOARDED carriers: Carriers with profiles in your organization - FMCSA carriers: Public carrier records from FMCSA database Features: - Full-text search across multiple fields - Field-specific filtering with various operators - Sorting and pagination - Saved search preferences Note: Only active (non-deleted) carriers are searchable. Soft-deleted records are automatically excluded from all search results. Response Formats: - flat (default): Returns indexed fields only for faster performance - full: Returns complete carrier objects with all relationships ## Carrier Factors ### Filter carrier factors - [POST /carrier-factors/filter](https://docs.mvmnt.io/apis/openapi/carrier-factors/filtercarrierfactors.md): Query carrier factors (factoring companies) using flexible filter criteria with AND/OR logic. By default, only non-deleted carrier factors are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. Carrier factors represent factoring companies that provide payment services for carriers. ### Create carrier factor - [POST /carrier-factors](https://docs.mvmnt.io/apis/openapi/carrier-factors/createcarrierfactor.md): Create a new carrier factor (factoring company). Factoring companies provide payment services for carriers, allowing them to receive immediate payment for invoices. ### Get carrier factor - [GET /carrier-factors/{id}](https://docs.mvmnt.io/apis/openapi/carrier-factors/getcarrierfactorbyid.md): Retrieve a single carrier factor by its unique identifier. Carrier factors represent factoring companies that provide payment services. ### Update carrier factor - [PATCH /carrier-factors/{id}](https://docs.mvmnt.io/apis/openapi/carrier-factors/updatecarrierfactor.md): Partially update a carrier factor. 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 ### Delete carrier factor - [DELETE /carrier-factors/{id}](https://docs.mvmnt.io/apis/openapi/carrier-factors/deletecarrierfactor.md): Soft delete a carrier factor (sets deletedAt timestamp). The carrier factor will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Carrier Payment Methods ### Filter carrier payment methods - [POST /carrier-payment-methods/filter](https://docs.mvmnt.io/apis/openapi/carrier-payment-methods/filtercarrierpaymentmethods.md): Query carrier payment methods using flexible filter criteria with AND/OR logic. By default, only non-deleted payment methods are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. Carrier payment methods define how and where payments are sent for a specific carrier. ### Create carrier payment method - [POST /carrier-payment-methods](https://docs.mvmnt.io/apis/openapi/carrier-payment-methods/createcarrierpaymentmethod.md): Create a new carrier payment method. Payment Recipient Type Constraints: - DIRECT: Payment goes to carrier directly. carrierFactorId must be null or omitted. - FACTOR: Payment goes to factoring company. carrierFactorId is required. Important: The carrierId cannot be changed after creation. ### Get carrier payment method - [GET /carrier-payment-methods/{id}](https://docs.mvmnt.io/apis/openapi/carrier-payment-methods/getcarrierpaymentmethodbyid.md): Retrieve a single carrier payment method by its unique identifier. Returns full details including banking information and associated carrier/factor references. ### Update carrier payment method - [PATCH /carrier-payment-methods/{id}](https://docs.mvmnt.io/apis/openapi/carrier-payment-methods/updatecarrierpaymentmethod.md): Partially update a carrier payment method. Only provided fields will be updated. IMPORTANT: The carrierId field cannot be changed after creation. Payment Recipient Type Constraints: - When changing to DIRECT: carrierFactorId must be set to null - When changing to FACTOR: carrierFactorId is required - Omitted fields: Not modified (current value preserved) - Provided fields: Updated to the new value - Null values: Clear the field (set to null) where applicable ### Delete carrier payment method - [DELETE /carrier-payment-methods/{id}](https://docs.mvmnt.io/apis/openapi/carrier-payment-methods/deletecarrierpaymentmethod.md): Soft delete a carrier payment method (sets deletedAt timestamp). The payment method will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Customer Contacts ### Filter customer contacts - [POST /customer-contacts/filter](https://docs.mvmnt.io/apis/openapi/customer-contacts/filtercustomercontacts.md): Query customer contacts using flexible filter criteria with AND/OR logic. By default, only non-deleted customer contacts are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. ### Create customer contact - [POST /customer-contacts](https://docs.mvmnt.io/apis/openapi/customer-contacts/createcustomercontact.md): Create a new customer contact. The contactInfo will create a new Contact record, and the CustomerContact will reference it via parentContactId (managed internally). ### Get customer contact - [GET /customer-contacts/{id}](https://docs.mvmnt.io/apis/openapi/customer-contacts/getcustomercontactbyid.md): Retrieve a single customer contact by its unique identifier ### Update customer contact - [PATCH /customer-contacts/{id}](https://docs.mvmnt.io/apis/openapi/customer-contacts/updatecustomercontact.md): Partially update a customer 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 When updating contactInfo, the underlying Contact record is updated. ### Delete customer contact - [DELETE /customer-contacts/{id}](https://docs.mvmnt.io/apis/openapi/customer-contacts/deletecustomercontact.md): Soft delete a customer contact (sets deletedAt timestamp). The contact will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Customers ### Filter customers - [POST /customers/filter](https://docs.mvmnt.io/apis/openapi/customers/filtercustomers.md): Filter customers using comprehensive query criteria with AND/OR logic and multiple operators. Supports complex filtering similar to GraphQL capabilities. Note: Soft-deleted customers are excluded by default (deletedAt defaults to { isNull: true }). ### Create customer - [POST /customers](https://docs.mvmnt.io/apis/openapi/customers/createcustomer.md): Create a new customer in your organization ### Get customer - [GET /customers/{id}](https://docs.mvmnt.io/apis/openapi/customers/getcustomer.md): Retrieve a customer by ID or client key ### Update customer - [PATCH /customers/{id}](https://docs.mvmnt.io/apis/openapi/customers/updatecustomer.md): Partially update a customer. Only provided fields will be updated. ### Delete customer - [DELETE /customers/{id}](https://docs.mvmnt.io/apis/openapi/customers/deletecustomer.md): Soft delete a customer (sets deletedAt timestamp) ### Search customers - [POST /customers/search](https://docs.mvmnt.io/apis/openapi/customers/searchcustomers.md): Search customers using OpenSearch-powered full-text and field-specific search. This endpoint provides fast, indexed search across customer data with support for: - Full-text search across multiple fields - Field-specific filtering with various operators - Sorting and pagination - Saved search preferences Note: Only active (non-deleted) customers are searchable. Soft-deleted records are automatically excluded from all search results. Response Formats: - flat (default): Returns indexed fields only for faster performance - full: Returns complete customer objects with all relationships ## Locations ### Filter locations - [POST /locations/filter](https://docs.mvmnt.io/apis/openapi/locations/filterlocations.md): Query locations using flexible filter criteria with AND/OR logic. By default, only non-deleted locations are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. ### Create a new location - [POST /locations](https://docs.mvmnt.io/apis/openapi/locations/createlocation.md): Create a new location for a customer. Locations represent pickup or delivery points (warehouses, distribution centers, etc.). ### Get a location by ID - [GET /locations/{id}](https://docs.mvmnt.io/apis/openapi/locations/getlocationbyid.md): Retrieve a single location by its unique identifier. ### Update a location - [PATCH /locations/{id}](https://docs.mvmnt.io/apis/openapi/locations/updatelocation.md): Partially update a location. 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 ### Delete a location - [DELETE /locations/{id}](https://docs.mvmnt.io/apis/openapi/locations/deletelocation.md): Soft delete a location (sets deletedAt timestamp). The location will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ### Search locations - [POST /locations/search](https://docs.mvmnt.io/apis/openapi/locations/searchlocations.md): Search locations using OpenSearch-powered full-text and field-specific search. This endpoint provides fast, indexed search across location data with support for: - Full-text search across multiple fields - Field-specific filtering with various operators - Geographic search capabilities - Sorting and pagination - Saved search preferences Note: Only active (non-deleted) locations are searchable. Soft-deleted records are automatically excluded from all search results. Response Formats: - flat (default): Returns indexed fields only for faster performance - full: Returns complete location objects with all relationships ## Location Contacts ### Filter location contacts - [POST /location-contacts/filter](https://docs.mvmnt.io/apis/openapi/location-contacts/filterlocationcontacts.md): 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. ### Create a new location contact - [POST /location-contacts](https://docs.mvmnt.io/apis/openapi/location-contacts/createlocationcontact.md): 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. ### Get a location contact by ID - [GET /location-contacts/{id}](https://docs.mvmnt.io/apis/openapi/location-contacts/getlocationcontactbyid.md): Retrieve a single location contact by its unique identifier. ### Update a location contact - [PATCH /location-contacts/{id}](https://docs.mvmnt.io/apis/openapi/location-contacts/updatelocationcontact.md): 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 ### Delete a location contact - [DELETE /location-contacts/{id}](https://docs.mvmnt.io/apis/openapi/location-contacts/deletelocationcontact.md): 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. ## Payment Terms ### Filter payment terms - [POST /payment-terms/filter](https://docs.mvmnt.io/apis/openapi/payment-terms/filterpaymentterms.md): Filter payment terms using comprehensive query criteria with AND/OR logic and multiple operators. Supports complex filtering similar to GraphQL capabilities. Note: Soft-deleted payment terms are excluded by default (deletedAt defaults to { isNull: true }). ### Create payment term - [POST /payment-terms](https://docs.mvmnt.io/apis/openapi/payment-terms/createpaymentterm.md): Create a new payment term configuration in your organization ### Get payment term - [GET /payment-terms/{id}](https://docs.mvmnt.io/apis/openapi/payment-terms/getpaymentterm.md): Retrieve a payment term by ID or client key ### Update payment term - [PATCH /payment-terms/{id}](https://docs.mvmnt.io/apis/openapi/payment-terms/updatepaymentterm.md): Partially update a payment term. Only provided fields will be updated. ### Delete payment term - [DELETE /payment-terms/{id}](https://docs.mvmnt.io/apis/openapi/payment-terms/deletepaymentterm.md): Soft delete a payment term (sets deletedAt timestamp) ## Teams ### Filter teams - [POST /teams/filter](https://docs.mvmnt.io/apis/openapi/teams/filterteams.md): Filter teams using comprehensive query criteria with AND/OR logic and multiple operators. Supports complex filtering similar to GraphQL capabilities. Note: Soft-deleted teams are excluded by default (deletedAt defaults to { isNull: true }). ### Create team - [POST /teams](https://docs.mvmnt.io/apis/openapi/teams/createteam.md): Create a new team in your organization ### Get team - [GET /teams/{id}](https://docs.mvmnt.io/apis/openapi/teams/getteam.md): Retrieve a team by ID or client key ### Update team - [PATCH /teams/{id}](https://docs.mvmnt.io/apis/openapi/teams/updateteam.md): Partially update a team. Only provided fields will be updated. ### Delete team - [DELETE /teams/{id}](https://docs.mvmnt.io/apis/openapi/teams/deleteteam.md): Soft delete a team (sets deletedAt timestamp) ## Users ### Filter users - [POST /users/filter](https://docs.mvmnt.io/apis/openapi/users/filterusers.md): Filter users using comprehensive query criteria with AND/OR logic and multiple operators. Supports complex filtering similar to GraphQL capabilities. Note: Soft-deleted users are excluded by default (deletedAt defaults to { isNull: true }). ### Create user - [POST /users](https://docs.mvmnt.io/apis/openapi/users/createuser.md): Create a new user in your organization ### Get user - [GET /users/{id}](https://docs.mvmnt.io/apis/openapi/users/getuser.md): Retrieve a user by ID or client key ### Update user - [PATCH /users/{id}](https://docs.mvmnt.io/apis/openapi/users/updateuser.md): Partially update a user. Only provided fields will be updated. ### Delete user - [DELETE /users/{id}](https://docs.mvmnt.io/apis/openapi/users/deleteuser.md): Soft delete a user (sets deletedAt timestamp) ### Search users - [POST /users/search](https://docs.mvmnt.io/apis/openapi/users/searchusers.md): Search users using OpenSearch-powered full-text and field-specific search. This endpoint provides fast, indexed search across user data with support for: - Full-text search across multiple fields - Field-specific filtering with various operators - Sorting and pagination - Saved search preferences Note: Only active (non-deleted) users are searchable. Soft-deleted records are automatically excluded from all search results. Response Formats: - flat (default): Returns indexed fields only for faster performance - full: Returns complete user objects with all relationships ## Vendors ### Filter vendors - [POST /vendors/filter](https://docs.mvmnt.io/apis/openapi/vendors/filtervendors.md): Query vendors using flexible filter criteria with AND/OR logic. By default, only non-deleted vendors are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. ### Create a new vendor - [POST /vendors](https://docs.mvmnt.io/apis/openapi/vendors/createvendor.md): Create a new vendor within an organization. Vendors represent service providers (warehousing, storage, etc.) that are not carriers. ### Get a vendor by ID - [GET /vendors/{id}](https://docs.mvmnt.io/apis/openapi/vendors/getvendorbyid.md): Retrieve a single vendor by its unique identifier. ### Update a vendor - [PATCH /vendors/{id}](https://docs.mvmnt.io/apis/openapi/vendors/updatevendor.md): Partially update a vendor. 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 ### Delete a vendor - [DELETE /vendors/{id}](https://docs.mvmnt.io/apis/openapi/vendors/deletevendor.md): Soft delete a vendor (sets deletedAt timestamp). The vendor will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ### Search vendors - [POST /vendors/search](https://docs.mvmnt.io/apis/openapi/vendors/searchvendors.md): Search vendors using OpenSearch-powered full-text and field-specific search. This endpoint provides fast, indexed search across vendor data with support for: - Full-text search across multiple fields - Field-specific filtering with various operators - Sorting and pagination - Saved search preferences Note: Only active (non-deleted) vendors are searchable. Soft-deleted records are automatically excluded from all search results. Response Formats: - flat (default): Returns indexed fields only for faster performance - full: Returns complete vendor objects with all relationships ## Vendor Contacts ### Filter vendor contacts - [POST /vendor-contacts/filter](https://docs.mvmnt.io/apis/openapi/vendor-contacts/filtervendorcontacts.md): Query vendor contacts using flexible filter criteria with AND/OR logic. By default, only non-deleted contacts are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. ### Create a new vendor contact - [POST /vendor-contacts](https://docs.mvmnt.io/apis/openapi/vendor-contacts/createvendorcontact.md): Create a new contact for a vendor. Contacts represent individuals at the vendor who can be reached for various purposes. ### Get a vendor contact by ID - [GET /vendor-contacts/{id}](https://docs.mvmnt.io/apis/openapi/vendor-contacts/getvendorcontactbyid.md): Retrieve a single vendor contact by its unique identifier. ### Update a vendor contact - [PATCH /vendor-contacts/{id}](https://docs.mvmnt.io/apis/openapi/vendor-contacts/updatevendorcontact.md): Partially update a vendor 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 ### Delete a vendor contact - [DELETE /vendor-contacts/{id}](https://docs.mvmnt.io/apis/openapi/vendor-contacts/deletevendorcontact.md): Soft delete a vendor contact (sets deletedAt timestamp). The contact will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Vendor Payment Methods ### Filter vendor payment methods - [POST /vendor-payment-methods/filter](https://docs.mvmnt.io/apis/openapi/vendor-payment-methods/filtervendorpaymentmethods.md): Query vendor payment methods using flexible filter criteria with AND/OR logic. By default, only non-deleted payment methods are returned (deletedAt: { isNull: true }). Override this by explicitly setting deletedAt filter criteria. Vendor payment methods define how and where payments are sent for a specific vendor. ### Create vendor payment method - [POST /vendor-payment-methods](https://docs.mvmnt.io/apis/openapi/vendor-payment-methods/createvendorpaymentmethod.md): Create a new vendor payment method. Important: The vendorId cannot be changed after creation. ### Get vendor payment method - [GET /vendor-payment-methods/{id}](https://docs.mvmnt.io/apis/openapi/vendor-payment-methods/getvendorpaymentmethodbyid.md): Retrieve a single vendor payment method by its unique identifier. Returns full details including banking information and associated vendor references. ### Update vendor payment method - [PATCH /vendor-payment-methods/{id}](https://docs.mvmnt.io/apis/openapi/vendor-payment-methods/updatevendorpaymentmethod.md): Partially update a vendor payment method. Only provided fields will be updated. IMPORTANT: The vendorId field cannot be changed after creation. - Omitted fields: Not modified (current value preserved) - Provided fields: Updated to the new value - Null values: Clear the field (set to null) where applicable ### Delete vendor payment method - [DELETE /vendor-payment-methods/{id}](https://docs.mvmnt.io/apis/openapi/vendor-payment-methods/deletevendorpaymentmethod.md): Soft delete a vendor payment method (sets deletedAt timestamp). The payment method will no longer appear in default queries but can be retrieved by explicitly filtering for deleted records. ## Saved Searches ### Filter saved searches - [POST /saved-searches/filter](https://docs.mvmnt.io/apis/openapi/saved-searches/filtersavedsearches.md): Filter saved searches using comprehensive query criteria with AND/OR logic and multiple operators. Supports complex filtering similar to GraphQL capabilities. Returns only saved searches accessible to the authenticated user (either owned by them or public). ### Create saved search - [POST /saved-searches](https://docs.mvmnt.io/apis/openapi/saved-searches/createsavedsearch.md): Create a new saved search configuration in your organization. The saved search can be used to quickly apply predefined search criteria, sorting, and display preferences. The saved search will be owned by the authenticated user unless otherwise specified. ### Get saved search - [GET /saved-searches/{id}](https://docs.mvmnt.io/apis/openapi/saved-searches/getsavedsearch.md): Retrieve a saved search by ID. You can only retrieve saved searches that you own or that are public in your organization. ### Update saved search - [PATCH /saved-searches/{id}](https://docs.mvmnt.io/apis/openapi/saved-searches/updatesavedsearch.md): Partially update a saved search. Only provided fields will be updated. You can only update saved searches that you own. ### Delete saved search - [DELETE /saved-searches/{id}](https://docs.mvmnt.io/apis/openapi/saved-searches/deletesavedsearch.md): Permanently delete a saved search. You can only delete saved searches that you own. ## Search ### Search globally - [POST /global-search](https://docs.mvmnt.io/apis/openapi/search/globalsearch.md): Search across multiple entity types simultaneously (shipments, customers, carriers, users, vendors). Use Cases: - Unified search bar for finding any type of record - Quick lookup by name, ID, or reference number - Cross-entity discovery Search Behavior: - Searches across default searchable fields for each entity type - Results are sorted by object type priority: SHIPMENT → CUSTOMER → CARRIER → USER → VENDOR - Within each object type, results are sorted by most recently updated Prefix Filtering: Use "type:query" syntax to search specific object types: - carrier:acme - searches only carriers - shipment:12345 - searches only shipments - customer:west - searches only customers IMPORTANT: Eventually Consistent This endpoint queries OpenSearch indices which are updated asynchronously. Changes typically appear within 2 seconds, but this is not guaranteed. ## Event Notifications ### Webhook Event - [POST your-endpoint](https://docs.mvmnt.io/apis/openapi/event-notifications/webhookcallback.md): All webhook events are delivered to your configured endpoint URL. The event field in the payload determines which type of webhook was triggered. Your endpoint should handle all event types or gracefully ignore unknown events. Event Types: - Entity changes: CUSTOMER_, COMPANY_, CARRIER_, CUSTOMER_CONTACT_ - Shipment events: SHIPMENT_DELIVERED, SHIPMENT_BOOKED, SHIPMENT_DISPATCHED, etc. - Financial events: CARRIER_INVOICE_CREATED, CUSTOMER_PAYMENT_CREATED, etc. Security: All webhook requests include an x-api-key header containing your webhook token configured in the MVMNT UI. Best Practices: - Return 200 OK quickly and process asynchronously - Implement idempotency using event ID and timestamp - Handle unknown event types gracefully for forward compatibility