---
updatedAt: 2026-08-28T20:15:01.000Z
agentTools:
  projectIndex: https://developer.truckstop.com/llms.txt
---

# Bulk add, update, or remove carriers in a broker's network

Performs batched add, update, and remove operations against the authenticated broker's network. Carriers are identified by DOT number only.

The request is an array of operation groups; each group specifies an action and the DOT numbers it applies to. The response mirrors that structure and, for each operation group, reports the DOT numbers that were affected as well as the DOT numbers that were skipped along with a per-item reason and code.

Each operation result reports DOT numbers in three buckets: `affected` (the action was performed exactly as requested), `adjusted` (the action was performed but altered from what was requested - for example, an Add that would exceed the broker's active-network limit is added to the inactive list instead), and `skipped` (the action was not performed; reason explains why).

Semantics:
  * Add - affected are DOT numbers that were not already in the network and
    have been added to the active list when `activate` is true or to the
    inactive list when `activate` is false. Adjusted are DOT numbers that
    were added but placed differently than requested - currently, this
    occurs when adding with `activate` true would exceed the broker's
    active-network limit, in which case the overflow DOTs are added to
    the inactive list and reported here with reason
    `OverLimitAddedInactive`. Skipped are DOT numbers already in the
    network (AddDuplicate), invalid (InvalidDot), or otherwise not added
    (Other). `activate` is required.
  * Update - affected are DOT numbers that were in the network and now
    appear on the active list when `activate` is true or on the inactive
    list when `activate` is false. A carrier already on the target list is
    still considered affected. Skipped are DOT numbers not in the network
    (UpdateNotFound), invalid (InvalidDot), or otherwise not updated
    (Other). `activate` is required.
  * Remove - affected are DOT numbers that were in the network and have
    been removed from it entirely (no longer on either list). Skipped are
    DOT numbers not in the network (RemoveNotFound), invalid (InvalidDot),
    or otherwise not removed (Other). `activate` must be omitted or null;
    supplying a value results in a 400 response.


# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "CarrierHub",
    "description": "Public operations exposed to Truckstop customers",
    "version": "1.6.0",
    "x-serviceName": "CarrierHub External"
  },
  "tags": [
    {
      "name": "Carrier Hub",
      "description": "Public operations exposed to Truckstop customers"
    }
  ],
  "paths": {
    "/mynetwork": {
      "post": {
        "summary": "Bulk add, update, or remove carriers in a broker's network",
        "description": "Performs batched add, update, and remove operations against the authenticated broker's network. Carriers are identified by DOT number only.\n\nThe request is an array of operation groups; each group specifies an action and the DOT numbers it applies to. The response mirrors that structure and, for each operation group, reports the DOT numbers that were affected as well as the DOT numbers that were skipped along with a per-item reason and code.\n\nEach operation result reports DOT numbers in three buckets: `affected` (the action was performed exactly as requested), `adjusted` (the action was performed but altered from what was requested - for example, an Add that would exceed the broker's active-network limit is added to the inactive list instead), and `skipped` (the action was not performed; reason explains why).\n\nSemantics:\n  * Add - affected are DOT numbers that were not already in the network and\n    have been added to the active list when `activate` is true or to the\n    inactive list when `activate` is false. Adjusted are DOT numbers that\n    were added but placed differently than requested - currently, this\n    occurs when adding with `activate` true would exceed the broker's\n    active-network limit, in which case the overflow DOTs are added to\n    the inactive list and reported here with reason\n    `OverLimitAddedInactive`. Skipped are DOT numbers already in the\n    network (AddDuplicate), invalid (InvalidDot), or otherwise not added\n    (Other). `activate` is required.\n  * Update - affected are DOT numbers that were in the network and now\n    appear on the active list when `activate` is true or on the inactive\n    list when `activate` is false. A carrier already on the target list is\n    still considered affected. Skipped are DOT numbers not in the network\n    (UpdateNotFound), invalid (InvalidDot), or otherwise not updated\n    (Other). `activate` is required.\n  * Remove - affected are DOT numbers that were in the network and have\n    been removed from it entirely (no longer on either list). Skipped are\n    DOT numbers not in the network (RemoveNotFound), invalid (InvalidDot),\n    or otherwise not removed (Other). `activate` must be omitted or null;\n    supplying a value results in a 400 response.\n",
        "operationId": "manage-mynetwork",
        "parameters": [
          {
            "name": "relationship_type",
            "in": "query",
            "description": "The relationship type the operations apply to. Must be a relationship type that is tracked at the account level. Defaults to Watched.\n",
            "schema": {
              "$ref": "#/components/schemas/RelationshipType"
            }
          },
          {
            "name": "relationship_type_group",
            "in": "query",
            "description": "The group of relationship types the operations apply to. Must be a group that is tracked at the account level. Defaults to CarrierHubNetwork.\n",
            "schema": {
              "$ref": "#/components/schemas/RelationshipTypeGroup"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "The list of bulk operations to perform.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "items": {
                  "$ref": "#/components/schemas/NetworkCarrierBulkOperation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The bulk operations were processed. The response contains one result per operation group in the request, reporting affected and skipped DOT numbers.\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NetworkCarrierBulkOperationResult"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Standard400"
          },
          "401": {
            "$ref": "#/components/responses/Standard401"
          },
          "403": {
            "$ref": "#/components/responses/Standard403"
          },
          "500": {
            "$ref": "#/components/responses/Standard500"
          }
        },
        "tags": [
          "Carrier Hub"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Provide a bearer token in the Authorization header: `Authorization: Bearer <token>`."
      }
    },
    "schemas": {
      "RelationshipType": {
        "type": "string",
        "title": "Relationship Type",
        "description": "The type of relationship",
        "default": "Favorite",
        "enum": [
          "Favorite",
          "Blocked",
          "Watched"
        ]
      },
      "RelationshipTypeGroup": {
        "type": "string",
        "title": "Relationship Type Group",
        "description": "The group of relationship types",
        "default": "MyCarriers",
        "enum": [
          "MyCarriers",
          "CarrierHubNetwork"
        ]
      },
      "ProblemDetails": {
        "type": "object",
        "title": "Problem Details",
        "description": "Standard problem details object used for error responses.",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "description": "A URI reference that identifies the problem type.",
            "nullable": true,
            "example": "https://tools.ietf.org/html/rfc9110#section-15.5.1"
          },
          "title": {
            "type": "string",
            "description": "A short human-readable summary of the problem type.",
            "nullable": true,
            "example": "Bad Request"
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code for this occurrence of the problem.",
            "nullable": true,
            "example": 400
          },
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "nullable": true,
            "example": "The request body is invalid."
          },
          "instance": {
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "description": "A dictionary of validation errors, keyed by property name.",
            "nullable": true,
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "example": {
          "type": "string",
          "title": "string",
          "status": 0,
          "detail": "string",
          "instance": "string",
          "errors": {
            "additionalProp1": [
              "string"
            ],
            "additionalProp2": [
              "string"
            ],
            "additionalProp3": [
              "string"
            ]
          }
        }
      },
      "NetworkCarrierBulkAction": {
        "type": "string",
        "title": "Network Carrier Bulk Action",
        "description": "The action to perform on the supplied DOT numbers",
        "enum": [
          "Add",
          "Remove",
          "Update"
        ],
        "example": "Add"
      },
      "NetworkCarrierBulkSkipReason": {
        "type": "string",
        "title": "Network Carrier Bulk Skip Reason",
        "description": "The reason a DOT number was not affected by its bulk operation. Additional detail may be conveyed via the accompanying `code` field.\n",
        "enum": [
          "InvalidDot",
          "AddDuplicate",
          "RemoveNotFound",
          "UpdateNotFound",
          "Other"
        ],
        "example": "AddDuplicate"
      },
      "NetworkCarrierBulkAdjustReason": {
        "type": "string",
        "title": "Network Carrier Bulk Adjust Reason",
        "description": "The reason an action on a DOT number was performed but altered from what was requested. Additional detail may be conveyed via the accompanying `code` field.\n",
        "enum": [
          "OverLimitAddedInactive",
          "Other"
        ],
        "example": "OverLimitAddedInactive"
      },
      "NetworkCarrierBulkOperation": {
        "title": "Network Carrier Bulk Operation",
        "description": "A single action to apply to a set of DOT numbers in the broker's network.\n\nConditional requirements on `activate` (enforced by the API, not by this schema):\n  * action = Add - `activate` is required and must not be null. It sets the\n    initial active state of the newly added carriers.\n  * action = Update - `activate` is required and must not be null. It is the\n    target active state applied to the carriers.\n  * action = Remove - `activate` must be omitted or null. Any supplied value\n    is ignored and the request is rejected with a 400.\n",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "dotNumbers"
        ],
        "properties": {
          "action": {
            "$ref": "#/components/schemas/NetworkCarrierBulkAction"
          },
          "dotNumbers": {
            "type": "array",
            "description": "The DOT numbers the action applies to.",
            "minItems": 1,
            "maxItems": 1000,
            "items": {
              "type": "string",
              "maxLength": 25,
              "minLength": 1,
              "example": "1234567"
            }
          },
          "activate": {
            "type": "boolean",
            "nullable": true,
            "description": "The desired active state of the affected carriers. Required and non-null for Add and Update; must be omitted or null for Remove. See the schema description for full conditional rules.\n",
            "example": true
          }
        }
      },
      "NetworkCarrierBulkSkipped": {
        "title": "Network Carrier Bulk Skipped",
        "description": "A DOT number that was not affected by a bulk operation, with a reason",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "dot",
          "reason",
          "code"
        ],
        "properties": {
          "dot": {
            "type": "string",
            "description": "The DOT number that was skipped",
            "example": "1234567"
          },
          "reason": {
            "$ref": "#/components/schemas/NetworkCarrierBulkSkipReason"
          },
          "code": {
            "type": "string",
            "description": "A stable, machine-readable code providing additional detail beyond `reason`. New codes may be introduced without changes to `reason`.\n",
            "example": "ADD_DUPLICATE"
          }
        }
      },
      "NetworkCarrierBulkAdjusted": {
        "title": "Network Carrier Bulk Adjusted",
        "description": "A DOT number whose action was performed but altered from what was requested, with a reason explaining the adjustment.\n",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "dot",
          "reason",
          "code"
        ],
        "properties": {
          "dot": {
            "type": "string",
            "description": "The DOT number whose action was adjusted",
            "example": "1234567"
          },
          "reason": {
            "$ref": "#/components/schemas/NetworkCarrierBulkAdjustReason"
          },
          "code": {
            "type": "string",
            "description": "A stable, machine-readable code providing additional detail beyond `reason`. New codes may be introduced without changes to `reason`.\n",
            "example": "ADDED_TO_INACTIVE_OVER_LIMIT"
          }
        }
      },
      "NetworkCarrierBulkOperationResult": {
        "title": "Network Carrier Bulk Operation Result",
        "description": "The outcome of a single bulk operation against the broker's network",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "action",
          "affected",
          "adjusted",
          "skipped"
        ],
        "properties": {
          "action": {
            "$ref": "#/components/schemas/NetworkCarrierBulkAction"
          },
          "affected": {
            "type": "array",
            "description": "DOT numbers whose action was performed exactly as requested. For Add these are DOT numbers that were newly added to the requested list; for Update, those that were updated to the requested state; for Remove, those that were removed.\n",
            "items": {
              "type": "string",
              "example": "1234567"
            }
          },
          "adjusted": {
            "type": "array",
            "description": "DOT numbers whose action was performed but altered from what was requested, with a reason and code for each. Currently used by Add when the broker's active-network limit is exceeded - the overflow DOTs are added to the inactive list and reported here. May be empty.\n",
            "items": {
              "$ref": "#/components/schemas/NetworkCarrierBulkAdjusted"
            }
          },
          "skipped": {
            "type": "array",
            "description": "DOT numbers that were not affected by the action, with a reason and code for each. For Add these are already present, invalid, or otherwise not added. For Update these are not present, invalid, or otherwise not updated. For Remove these are already absent, invalid, or otherwise not removed.\n",
            "items": {
              "$ref": "#/components/schemas/NetworkCarrierBulkSkipped"
            }
          }
        }
      }
    },
    "responses": {
      "Standard400": {
        "description": "There was a problem with the data provided for this request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ProblemDetails"
            }
          }
        }
      },
      "Standard401": {
        "description": "Authorization was denied for this request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ProblemDetails"
            }
          }
        }
      },
      "Standard403": {
        "description": "Access to the requested resource is forbidden.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ProblemDetails"
            }
          }
        }
      },
      "Standard500": {
        "description": "A server side error occurred.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ProblemDetails"
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "http://api.truckstop.com/carrierhub/v1"
    }
  ],
  "x-readme": {},
  "security": [
    {
      "bearerAuth": []
    }
  ]
}
```