MVMNT Teams API

Team management operations

OpenAPI Specification

mvmnt-teams-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MVMNT Bill Payments Teams 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: Teams
  description: Team management operations
paths:
  /teams/filter:
    post:
      summary: Filter teams
      description: '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 }).

        '
      operationId: filterTeams
      tags:
      - Teams
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeamFilterRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Team'
                  pagination:
                    $ref: '#/components/schemas/PaginationInfo'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
      x-parsed-md-description:
        result:
        - $$mdtype: Node
          errors: []
          lines:
          - 0
          - 3
          inline: false
          attributes: {}
          children:
          - $$mdtype: Node
            errors: []
            lines:
            - 0
            - 3
            inline: false
            attributes: {}
            children:
            - $$mdtype: Node
              errors: []
              lines:
              - 0
              - 3
              inline: true
              attributes:
                content: Filter teams using comprehensive query criteria with AND/OR logic and multiple operators.
              children: []
              type: text
              annotations: []
              slots: {}
            - $$mdtype: Node
              errors: []
              lines:
              - 0
              - 3
              inline: true
              attributes: {}
              children: []
              type: softbreak
              annotations: []
              slots: {}
            - $$mdtype: Node
              errors: []
              lines:
              - 0
              - 3
              inline: true
              attributes:
                content: Supports complex filtering similar to GraphQL capabilities.
              children: []
              type: text
              annotations: []
              slots: {}
            - $$mdtype: Node
              errors: []
              lines:
              - 0
              - 3
              inline: true
              attributes: {}
              children: []
              type: softbreak
              annotations: []
              slots: {}
            - $$mdtype: Node
              errors: []
              lines:
              - 0
              - 3
              inline: true
              attributes:
                content: 'Note: Soft-deleted teams are excluded by default (deletedAt defaults to { isNull: true }).'
              children: []
              type: text
              annotations: []
              slots: {}
            type: inline
            annotations: []
            slots: {}
          type: paragraph
          annotations: []
          slots: {}
  /teams:
    post:
      summary: Create team
      description: Create a new team in your organization
      operationId: createTeam
      tags:
      - Teams
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeamInput'
      responses:
        '201':
          description: Team created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
  /teams/{id}:
    get:
      summary: Get team
      description: Retrieve a team by ID or client key
      operationId: getTeam
      tags:
      - Teams
      parameters:
      - $ref: '#/components/parameters/IdOrClientKey'
      - $ref: '#/components/parameters/LookupBy'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
    patch:
      summary: Update team
      description: Partially update a team. Only provided fields will be updated.
      operationId: updateTeam
      tags:
      - Teams
      parameters:
      - $ref: '#/components/parameters/IdOrClientKey'
      - $ref: '#/components/parameters/LookupBy'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeamPatch'
      responses:
        '200':
          description: Team updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
    delete:
      summary: Delete team
      description: Soft delete a team (sets deletedAt timestamp)
      operationId: deleteTeam
      tags:
      - Teams
      parameters:
      - $ref: '#/components/parameters/IdOrClientKey'
      - $ref: '#/components/parameters/LookupBy'
      responses:
        '204':
          description: Team deleted successfully
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
components:
  schemas:
    UserStatus:
      type: string
      enum:
      - PENDING
      - ACTIVE
      - INACTIVE
      description: 'User account status:

        - `PENDING`: User invited but has not completed onboarding

        - `ACTIVE`: User account is active and can access the system

        - `INACTIVE`: User account is deactivated

        '
      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: 'User account status:'
              children: []
              type: text
              annotations: []
              slots: {}
            type: inline
            annotations: []
            slots: {}
          type: paragraph
          annotations: []
          slots: {}
        - $$mdtype: Node
          errors: []
          lines:
          - 1
          - 4
          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: PENDING
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 1
                - 2
                inline: true
                attributes:
                  content: ': User invited but has not completed onboarding'
                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: ACTIVE
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 2
                - 3
                inline: true
                attributes:
                  content: ': User account is active and can access the system'
                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: INACTIVE
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 3
                - 4
                inline: true
                attributes:
                  content: ': User account is deactivated'
                children: []
                type: text
                annotations: []
                slots: {}
              type: inline
              annotations: []
              slots: {}
            type: item
            annotations: []
            slots: {}
          type: list
          annotations: []
          slots: {}
    ValidationError:
      type: object
      required:
      - error
      - message
      - details
      properties:
        error:
          type: string
          description: Error code
          example: validation_error
        message:
          type: string
          description: Human-readable error message
        details:
          type: array
          description: Validation error details
          items:
            type: object
            required:
            - field
            - message
            properties:
              field:
                type: string
                description: Field name that failed validation
              message:
                type: string
                description: Validation error message
    UserRole:
      type: string
      enum:
      - CUSTOMER_REP
      - CARRIER_REP
      - AR_AP
      - COMPLIANCE
      - ADMIN
      description: 'User role within the organization:

        - `CUSTOMER_REP`: Customer service representative

        - `CARRIER_REP`: Carrier service representative

        - `AR_AP`: Accounts receivable/payable

        - `COMPLIANCE`: Compliance officer

        - `ADMIN`: System administrator

        '
      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: 'User role within the organization:'
              children: []
              type: text
              annotations: []
              slots: {}
            type: inline
            annotations: []
            slots: {}
          type: paragraph
          annotations: []
          slots: {}
        - $$mdtype: Node
          errors: []
          lines:
          - 1
          - 6
          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: CUSTOMER_REP
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 1
                - 2
                inline: true
                attributes:
                  content: ': Customer service representative'
                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: CARRIER_REP
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 2
                - 3
                inline: true
                attributes:
                  content: ': Carrier service representative'
                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: AR_AP
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 3
                - 4
                inline: true
                attributes:
                  content: ': Accounts receivable/payable'
                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: COMPLIANCE
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 4
                - 5
                inline: true
                attributes:
                  content: ': Compliance officer'
                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: ADMIN
                children: []
                type: code
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 5
                - 6
                inline: true
                attributes:
                  content: ': System administrator'
                children: []
                type: text
                annotations: []
                slots: {}
              type: inline
              annotations: []
              slots: {}
            type: item
            annotations: []
            slots: {}
          type: list
          annotations: []
          slots: {}
    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)
    TeamFilter:
      type: object
      description: Filter criteria for teams with AND/OR logic support
      properties:
        and:
          type: array
          description: All conditions must match (recursive)
          items:
            $ref: '#/components/schemas/TeamFilter'
        or:
          type: array
          description: At least one condition must match (recursive)
          items:
            $ref: '#/components/schemas/TeamFilter'
        not:
          $ref: '#/components/schemas/TeamFilter'
          description: Negates the filter
        id:
          $ref: '#/components/schemas/IDFilter'
        name:
          $ref: '#/components/schemas/StringFilter'
        key:
          $ref: '#/components/schemas/ClientKeyFilter'
        createdAt:
          $ref: '#/components/schemas/DatetimeFilter'
        updatedAt:
          $ref: '#/components/schemas/DatetimeFilter'
        deletedAt:
          $ref: '#/components/schemas/DatetimeFilter'
    TeamPatch:
      type: object
      description: 'Partial team 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: Team name
          example: Sales Team - West Coast
        key:
          type:
          - string
          - 'null'
          maxLength: 512
          description: Client-defined reference identifier
          example: ERP-TEAM-WEST
        users:
          type: array
          description: Team members (replaces all existing memberships)
          items:
            $ref: '#/components/schemas/ResourceReferenceInput'
          example:
          - id: 550e8400-e29b-41d4-a716-446655440000
          - key: ERP-USER-12345
      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: Partial team update. All fields are optional.
              children: []
              type: text
              annotations: []
              slots: {}
            type: inline
            annotations: []
            slots: {}
          type: paragraph
          annotations: []
          slots: {}
        - $$mdtype: Node
          errors: []
          lines:
          - 1
          - 4
          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:
                  marker: '**'
                children:
                - $$mdtype: Node
                  errors: []
                  lines:
                  - 1
                  - 2
                  inline: true
                  attributes:
                    content: Omitted fields
                  children: []
                  type: text
                  annotations: []
                  slots: {}
                type: strong
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 1
                - 2
                inline: true
                attributes:
                  content: ': Not modified (current value preserved)'
                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:
                  marker: '**'
                children:
                - $$mdtype: Node
                  errors: []
                  lines:
                  - 2
                  - 3
                  inline: true
                  attributes:
                    content: Provided fields
                  children: []
                  type: text
                  annotations: []
                  slots: {}
                type: strong
                annotations: []
                slots: {}
              - $$mdtype: Node
                errors: []
                lines:
                - 2
                - 3
                inline: true
                attributes:
                  content: ': Updated to the new value'
                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:
                  marker: '**'
                children:
                - $$mdtype: Node
                  errors: []
                  lines:
       

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