MVMNT Customer Contacts API

Customer contact management operations

OpenAPI Specification

mvmnt-customer-contacts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MVMNT Bill Payments Customer 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: Customer Contacts
  description: Customer contact management operations
paths:
  /customer-contacts/filter:
    post:
      tags:
      - Customer Contacts
      summary: Filter customer contacts
      description: '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.

        '
      operationId: filterCustomerContacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerContactFilterRequest'
      responses:
        '200':
          description: Filtered customer contacts with pagination
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - pageInfo
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CustomerContact'
                  pageInfo:
                    $ref: '#/components/schemas/PaginationInfo'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /customer-contacts:
    post:
      tags:
      - Customer Contacts
      summary: Create customer contact
      description: 'Create a new customer contact. The contactInfo will create a new Contact record,

        and the CustomerContact will reference it via parentContactId (managed internally).

        '
      operationId: createCustomerContact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerContactInput'
      responses:
        '201':
          description: Customer contact created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerContact'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '409':
          $ref: '#/components/responses/ConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /customer-contacts/{id}:
    get:
      tags:
      - Customer Contacts
      summary: Get customer contact
      description: Retrieve a single customer contact by its unique identifier
      operationId: getCustomerContactById
      parameters:
      - $ref: '#/components/parameters/IdOrClientKey'
      responses:
        '200':
          description: Customer contact found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerContact'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    patch:
      tags:
      - Customer Contacts
      summary: Update customer contact
      description: '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.

        '
      operationId: updateCustomerContact
      parameters:
      - $ref: '#/components/parameters/IdOrClientKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerContactPatch'
      responses:
        '200':
          description: Customer contact updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerContact'
        '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:
      - Customer Contacts
      summary: Delete customer contact
      description: '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.

        '
      operationId: deleteCustomerContact
      parameters:
      - $ref: '#/components/parameters/IdOrClientKey'
      responses:
        '204':
          description: Customer 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:
    ContactInfo:
      type: object
      description: 'Contact information details (nested, without id).


        This is an embedded object representing a Contact record. The id is managed

        internally and not exposed in the API.

        '
      required:
      - name
      properties:
        name:
          type: string
          description: Contact person's full name
          example: John Smith
        email:
          type:
          - string
          - 'null'
          format: email
          description: Email address
          example: john.smith@example.com
        phoneNumber:
          type:
          - string
          - 'null'
          description: Phone number
          example: +1-555-0100
        title:
          type:
          - string
          - 'null'
          description: Job title or position
          example: Operations Manager
    CustomerContactPatch:
      type: object
      description: 'Partial contact update. All fields are optional.


        - **Omitted fields**: Not modified (current value preserved)

        - **Provided fields**: Updated to the new value

        - **Null values**: Clear the field (set to null) where applicable


        Note: customerId cannot be updated after creation.

        '
      properties:
        name:
          type: string
          description: Contact person's name (should match contactInfo.name if updating both)
          example: John Smith
        contactInfo:
          anyOf:
          - $ref: '#/components/schemas/ContactInfoPatch'
          - type: 'null'
          description: 'Contact information update. Provide partial or full contact data to update the parent Contact record.

            Cannot be set to null (contact info is required).

            '
        phoneExtension:
          type:
          - string
          - 'null'
          description: Phone extension
          example: '1234'
        isPrimary:
          type: boolean
          description: Whether this is the primary contact
          example: true
        contactTypes:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomerContactType'
          description: Types/roles this contact serves (replaces entire array)
          example:
          - BILLING
          - ACCOUNT_MANAGER
        notifications:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomerContactNotificationType'
          description: Notification types (replaces entire array)
          example:
          - SHIPMENT_PICKED_UP
          - SHIPMENT_DELIVERED
        key:
          type:
          - string
          - 'null'
          maxLength: 512
          description: Client-defined reference identifier
          example: ERP-CONTACT-JOHN-001
    ContactInfoInput:
      type: object
      description: Contact information for creating a new contact record
      required:
      - name
      properties:
        name:
          type: string
          description: Contact person's full name
          example: John Smith
        email:
          type: string
          format: email
          description: Email address
          example: john.smith@example.com
        phoneNumber:
          type: string
          description: Phone number
          example: +1-555-0100
        title:
          type: string
          description: Job title or position
          example: Operations Manager
    BooleanFilter:
      type: object
      description: Filter options for boolean fields
      properties:
        equalTo:
          type: boolean
          description: Exact match
        notEqualTo:
          type: boolean
          description: Not equal to
        isNull:
          type: boolean
          description: Field is null (true) or not null (false)
    Error:
      type: object
      required:
      - error
      - message
      properties:
        error:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
    ClientKeyFilter:
      type: object
      description: Filter options for client key fields (limited operations - exact match only)
      properties:
        equalTo:
          type: string
          description: Exact match
        in:
          type: array
          description: Matches any value in the array
          items:
            type: string
        isNull:
          type: boolean
          description: Field is null (true) or not null (false)
    PaginationInfo:
      type: object
      required:
      - pageSize
      - hasNextPage
      properties:
        pageSize:
          type: integer
          description: Number of items per page
          example: 50
        hasNextPage:
          type: boolean
          description: Whether there are more pages
          example: true
        hasPreviousPage:
          type: boolean
          description: Whether there are previous pages
          example: false
        endCursor:
          type:
          - string
          - 'null'
          description: Cursor for the next page (null if no next page)
          example: eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCJ9
    CustomerContactFilter:
      type: object
      description: Filter criteria for contacts with AND/OR logic support
      properties:
        and:
          type: array
          description: All conditions must match (recursive)
          items:
            $ref: '#/components/schemas/CustomerContactFilter'
        or:
          type: array
          description: At least one condition must match (recursive)
          items:
            $ref: '#/components/schemas/CustomerContactFilter'
        not:
          $ref: '#/components/schemas/CustomerContactFilter'
          description: Negates the filter
        id:
          $ref: '#/components/schemas/IDFilter'
        customerId:
          $ref: '#/components/schemas/UUIDFilter'
        name:
          $ref: '#/components/schemas/StringFilter'
        email:
          $ref: '#/components/schemas/StringFilter'
        phoneNumber:
          $ref: '#/components/schemas/StringFilter'
        phoneExtension:
          $ref: '#/components/schemas/StringFilter'
        isPrimary:
          $ref: '#/components/schemas/BooleanFilter'
        contactTypes:
          $ref: '#/components/schemas/CustomerContactTypeFilter'
        notifications:
          $ref: '#/components/schemas/CustomerContactNotificationTypeFilter'
        invitedUserId:
          $ref: '#/components/schemas/UUIDFilter'
        deletedById:
          $ref: '#/components/schemas/UUIDFilter'
        key:
          $ref: '#/components/schemas/ClientKeyFilter'
        createdAt:
          $ref: '#/components/schemas/DatetimeFilter'
        deletedAt:
          $ref: '#/components/schemas/DatetimeFilter'
    CustomerContactType:
      type: string
      description: Type of customer contact role
      enum:
      - ACCOUNT_MANAGER
      - BILLING
      - DOCK_SHIPPING
      - EMERGENCY
      - LOCATION_MANAGER
      - OWNER
      - PROCUREMENT
      - PURCHASING
      - RATES_PRICING
      - RECEIVING
      - SHIPPING
    UUIDFilter:
      type: object
      description: Filter options for UUID fields (all operations)
      properties:
        equalTo:
          type: string
          format: uuid
          description: Exact match
        notEqualTo:
          type: string
          format: uuid
          description: Not equal to
        in:
          type: array
          items:
            type: string
            format: uuid
          description: Matches any UUID in the array
        notIn:
          type: array
          items:
            type: string
            format: uuid
          description: Does not match any UUID in the array
        isNull:
          type: boolean
          description: Field is null (true) or not null (false)
    CustomerContactFilterRequest:
      type: object
      description: Request body for filtering contacts
      properties:
        filter:
          $ref: '#/components/schemas/CustomerContactFilter'
          description: 'Filter criteria (optional - omit to return all 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:
          - isPrimary:
              equalTo: true
          - contactTypes:
              includes: BILLING
        pageSize: 50
    CustomerReference:
      type: object
      description: 'Enhanced reference to a customer resource (returned in responses).

        Includes full customer details in addition to id/key.


        Note: Does NOT include nested references (paymentTerm, contacts, etc.) to prevent recursion.

        Maximum nesting depth: 1 level.

        '
      required:
      - id
      - name
      - friendlyId
      - status
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
          format: uuid
          description: Customer UUID
          example: 550e8400-e29b-41d4-a716-446655440000
        key:
          type:
          - string
          - 'null'
          maxLength: 512
          description: Client-defined reference ID if set
          example: ERP-CUSTOMER-ACME
        name:
          type: string
          description: Customer company name
          example: Acme Manufacturing Corp
        friendlyId:
          type: string
          description: Human-readable customer identifier
          example: A123456
        status:
          type: string
          description: Customer status
          enum:
          - PROSPECT
          - ACTIVE
          - INACTIVE
          - CHURNED
          example: ACTIVE
        phoneNumber:
          type:
          - string
          - 'null'
          description: Primary phone number
          example: +1-555-123-4567
        website:
          type:
          - string
          - 'null'
          description: Customer website URL
          example: https://acme-manufacturing.com
        createdAt:
          type: string
          format: date-time
          description: When the customer was created
          example: '2025-01-15T10:00:00Z'
        updatedAt:
          type: string
          format: date-time
          description: When the customer was last updated
          example: '2025-01-15T14:30:00Z'
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When the customer was soft deleted (null if active)
          example: null
    ContactInfoPatch:
      type: object
      description: 'Partial contact information update. All fields are optional.


        - **Omitted fields**: Not modified (current value preserved)

        - **Provided fields**: Updated to the new value

        - **Null values**: Clear the field (set to null) where applicable

        '
      properties:
        name:
          type: string
          description: Contact person's full name
          example: John Smith
        email:
          type:
          - string
          - 'null'
          format: email
          description: Email address
          example: john.smith@example.com
        phoneNumber:
          type:
          - string
          - 'null'
          description: Phone number
          example: +1-555-0100
        title:
          type:
          - string
          - 'null'
          description: Job title or position
          example: Operations Manager
    CustomerContactInput:
      type: object
      required:
      - customerId
      - name
      - contactInfo
      properties:
        customerId:
          type: string
          format: uuid
          description: Customer this contact belongs to
          example: 550e8400-e29b-41d4-a716-446655440001
        name:
          type: string
          description: Contact person's name (should match contactInfo.name)
          example: John Smith
        contactInfo:
          $ref: '#/components/schemas/ContactInfoInput'
          description: Contact information details (will create new Contact record)
        phoneExtension:
          type: string
          description: Phone extension specific to this contact role
          example: '1234'
        isPrimary:
          type: boolean
          default: false
          description: Whether this is the primary contact for the customer
          example: true
        contactTypes:
          type: array
          items:
            $ref: '#/components/schemas/CustomerContactType'
          description: Types/roles this contact serves
          example:
          - BILLING
          - ACCOUNT_MANAGER
        notifications:
          type: array
          items:
            $ref: '#/components/schemas/CustomerContactNotificationType'
          description: Shipment notification types to send to this contact
          example:
          - SHIPMENT_PICKED_UP
          - SHIPMENT_DELIVERED
        key:
          type: string
          maxLength: 512
          description: Client-defined reference identifier
          example: ERP-CONTACT-JOHN-001
    UserReference:
      type: object
      description: 'Enhanced reference to a user resource (returned in responses).

        Includes full user details in addition to id/key.


        Note: Does NOT include nested references (teams, etc.) to prevent recursion.

        Maximum nesting depth: 1 level.

        '
      required:
      - id
      - email
      - status
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
          format: uuid
          description: User UUID
          example: 550e8400-e29b-41d4-a716-446655440000
        key:
          type:
          - string
          - 'null'
          maxLength: 512
          description: Client-defined reference ID if set
          example: ERP-USER-12345
        email:
          type: string
          format: email
          description: User's email address
          example: john.doe@example.com
        name:
          type:
          - string
          - 'null'
          description: User's full name
          example: John Doe
        phone:
          type:
          - string
          - 'null'
          description: User's phone number
          example: +1-555-123-4567
        phoneExt:
          type:
          - string
          - 'null'
          description: Phone extension
          example: '123'
        status:
          type: string
          description: User account status
          enum:
          - PENDING
          - ACTIVE
          - INACTIVE
          example: ACTIVE
        avatarId:
          type:
          - string
          - 'null'
          format: uuid
          description: Profile avatar document ID
          example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        createdAt:
          type: string
          format: date-time
          description: When the user was created
          example: '2025-01-15T10:00:00Z'
        updatedAt:
          type: string
          format: date-time
          description: When the user was last updated
          example: '2025-01-15T14:30:00Z'
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: When the user was soft deleted (null if active)
          example: null
    DatetimeFilter:
      type: object
      description: Filter options for datetime fields
      properties:
        equalTo:
          type: string
          format: date-time
          description: Exact match
        notEqualTo:
          type: string
          format: date-time
          description: Not equal to
        lessThan:
          type: string
          format: date-time
          description: Before this datetime
        lessThanOrEqualTo:
          type: string
          format: date-time
          description: On or before this datetime
        greaterThan:
          type: string
          format: date-time
          description: After this datetime
        greaterThanOrEqualTo:
          type: string
          format: date-time
          description: On or after this datetime
        isNull:
          type: boolean
          description: Field is null (true) or not null (false)
    IDFilter:
      type: object
      description: Filter options for ID fields (limited operations - exact match only)
      properties:
        equalTo:
          type: string
          format: uuid
          description: Exact match
        in:
          type: array
          description: Matches any UUID in the array
          items:
            type: string
            format: uuid
    StringFilter:
      type: object
      description: Filter options for string fields
      properties:
        equalTo:
          type: string
          description: Exact match
        notEqualTo:
          type: string
          description: Not equal to
        in:
          type: array
          items:
            type: string
          description: Matches any value in the array
        notIn:
          type: array
          items:
            type: string
          description: Does not match any value in the array
        includes:
          type: string
          description: Contains substring (case-insensitive)
        notIncludes:
          type: string
          description: Does not contain substring (case-insensitive)
        startsWith:
          type: string
          description: Starts with prefix (case-insensitive)
        notStartsWith:
          type: string
          description: Does not start with prefix (case-insensitive)
        endsWith:
          type: string
          description: Ends with suffix (case-insensitive)
        notEndsWith:
          type: string
          description: Does not end with suffix (case-insensitive)
        isNull:
          type: boolean
          description: Field is null (true) or not null (false)
    CustomerContact:
      type: object
      required:
      - id
      - customer
      - name
      - isPrimary
      - contactInfo
      - createdAt
      properties:
        object:
          type: string
          enum:
          - CUSTOMER_CONTACT
          readOnly: true
          description: Object type identifier
          example: CUSTOMER_CONTACT
        id:
          type: string
          format: uuid
          readOnly: true
          description: Unique contact identifier
          example: 550e8400-e29b-41d4-a716-446655440000
        customer:
          $ref: '#/components/schemas/CustomerReference'
          description: Customer this contact belongs to (full customer details)
        name:
          type: string
          description: Contact person's name (denormalized from ContactInfo for convenience)
          example: John Smith
        contactInfo:
          allOf:
          - $ref: '#/components/schemas/ContactInfo'
          description: Contact information details (email, phone, title) - nested from parent Contact record
        phoneExtension:
          type:
          - string
          - 'null'
          description: Phone extension specific to this contact role
          example: '1234'
        isPrimary:
          type: boolean
          description: Whether this is the primary contact for the customer
          example: true
        contactTypes:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomerContactType'
          description: Types/roles this contact serves
          example:
          - BILLING
          - ACCOUNT_MANAGER
        notifications:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomerContactNotificationType'
          description: Shipment notification types to send to this contact
          example:
          - SHIPMENT_PICKED_UP
          - SHIPMENT_DELIVERED
        invitedUser:
          anyOf:
          - $ref: '#/components/schemas/UserReference'
          - type: 'null'
          readOnly: true
          description: User account invited/created for this contact (full user details)
        deletedBy:
          anyOf:
          - $ref: '#/components/schemas/UserReference'
          - type: 'null'
          readOnly: true
          description: User who deleted this contact (full user details)
        key:
          type:
          - string
          - 'null'
          maxLength: 512
          description: Client-defined reference identifier
          example: ERP-CONTACT-JOHN-001
        createdAt:
          type: string
          format: date-time
          readOnly: true
          description: When the contact was created
          example: '2025-01-15T10:00:00Z'
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
          description: When the contact was soft deleted (null if active)
          example: null
    CustomerContactNotificationTypeFilter:
      type: object
      description: Filter for notification type enum array field
      properties:
        includes:
          $ref: '#/components/schemas/CustomerContactNotificationType'
          description: Array contains this notification type
        notIncludes:
          $ref: '#/components/schemas/CustomerContactNotificationType'
          description: Array does not contain this notification type
        isNull:
          type: boolean
          description: Field is null (true) or not null (false)
    CustomerContactTypeFilter:
      type: object
      description: Filter for contact type enum array field
      properties:
        includes:
          $ref: '#/components/schemas/CustomerContactType'
          description: Array contains 

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mvmnt/refs/heads/main/openapi/mvmnt-customer-contacts-api-openapi.yml