> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://catena.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://catena.ferndocs.com/_mcp/server.

# 🧪 Update User

PATCH https://api.catenatelematics.com/v2/telematics/users/{id}
Content-Type: application/json

Update an existing user. The user will be updated asynchronously, and you can check the status of the operation using the returned operation ID.

Reference: https://catena.ferndocs.com/api-reference/telematics/drivers-users/update-user

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `id` (string, required) — The unique identifier of the user

### Query parameters

- `is_sync` (boolean, optional, default: false) — Whether to process the request synchronously. If `true`, Catena will attempt to create or update the resource immediately with the TSP and return the result in the response. When performing synchronous operations, you are responsible for handling any necessary retries in case of transient failures.If `false` (default), Catena will create an asynchronous operation, and you can check the status of the operation using the returned operation ID.

### Body (application/json)

This endpoint expects an UserUpdate.

- `connection_id` (string, required) — Unique identifier of the connection at Catena Telematics which will be used to create this resource. A connection represents a Fleet/TSP pairing.
- `username` (string, optional, nullable) — Unique username/login for the user (source or Catena).
- `is_active` (boolean, optional, nullable) — Indicates whether the user is currently active.
- `status` (enum, optional, nullable) — User/account status label (e.g., 'ACTIVE', 'INACTIVE', 'SUSPENDED').
  - Allowed values: `ACTIVE`, `INACTIVE`
- `is_driver` (boolean, optional, nullable) — Indicates whether the user is a driver (vs. back-office/admin).
- `user_designation` (string, optional, nullable) — Role/title or TSP designation (e.g., 'DRIVER', 'DISPATCHER', 'ADMIN').
- `user_email` (string, optional, nullable) — Email address for the user.
- `first_name` (string, optional, nullable) — User's given name.
- `password` (string, optional, nullable) — Password associated with the user.
- `last_name` (string, optional, nullable) — User's family/surname.
- `phone_number` (string, optional, nullable) — User's phone number.
- `country_code` (string, optional, nullable) — User's country code (ISO-3166-1 alpha-3, e.g., 'USA', 'CAN').
- `license_country` (string, optional, nullable) — Issuing country for the driver's license (ISO-3166-1 alpha-3, e.g., 'USA', 'CAN').
- `license_region` (string, optional, nullable) — Issuing region/subdivision for the license (state/province code, e.g., 'CA', 'ON').
- `license_number` (string, optional, nullable) — Driver's license number as recorded by the source.
- `license_expiration` (date, optional, nullable) — License expiration date (YYYY-MM-DD, local to issuing authority).
- `employee_number` (string, optional, nullable) — Employer/HR or payroll identifier for the user (if applicable).
- `carrier_number` (string, optional, nullable) — Carrier/company identifier as provided by the TSP (e.g., USDOT/MC or internal).
- `notes` (string, optional, nullable) — Free-text notes about the user (plain text).
- `hos_ruleset_code` (enum, optional, nullable) — Assigned HOS ruleset code for the user (normalized; see ref_hos_ruleset_codes).
  - Allowed values: `US_INT_PROP_60_7`, `US_INT_PROP_60_7_BIG`, `US_INT_PROP_60_7_BIG_SLP`, `US_INT_PROP_60_7_NORST`, `US_INT_PROP_60_7_NORST_SLP`, `US_INT_PROP_60_7_NOBRK`, `US_INT_PROP_60_7_NOBRK_BIG`, `US_INT_PROP_60_7_NOBRK_BIG_SLP`, `US_INT_PROP_60_7_NOBRK_SLP`, `US_INT_PROP_60_7_SH`, `US_INT_PROP_60_7_SH_NORST`, `US_INT_PROP_70_8`, `US_INT_PROP_70_8_BIG`, `US_INT_PROP_70_8_BIG_SLP`, `US_INT_PROP_70_8_NORST`, `US_INT_PROP_70_8_NORST_SLP`, `US_INT_PROP_70_8_NOBRK`, `US_INT_PROP_70_8_NOBRK_BIG`, `US_INT_PROP_70_8_NOBRK_BIG_SLP`, `US_INT_PROP_70_8_NOBRK_SLP`, `US_INT_PROP_70_8_SH`, `US_INT_PROP_70_8_SH_14H`, `US_INT_PROP_70_8_SH_NORST`, `US_INT_PROP_SH_14H`, `US_INT_PAX_60_7`, `US_INT_PAX_60_7_SH`, `US_INT_PAX_70_8`, `US_INT_PAX_70_8_SH`, `US_INT_SALESP`, `US_INT_SALESP_NCDL_SH`, `US_INT_OILTR_60_7`, `US_INT_OILTR_70_8`, `US_INT_OILWL_60_7`, `US_INT_OILWL_70_8`, `US_INT_RAIL_EX`, `US_INT_PROP_SLPVAR`, `US_INT_PROP_60_7_SLPVAR`, `US_INT_PROP_70_8_SLPVAR`, `US_INT_CARRIER_EX`, `US_INT_NOHOS_7`, `US_INT_NOHOS_8`, `US_TX_INTRA_PROP_70_7`, `US_TX_INTRA_SH_70_7`, `US_TX_INTRA_SH_70_8`, `US_CA_INTRA_PROP_80_8`, `US_CA_INTRA_PAX_80_8`, `US_CA_INTRA_FARM_112_8`, `US_CA_INTRA_FARM_BRK`, `US_CA_INTRA_FLAM_80_8`, `US_CA_INTRA_FLAM_BRK`, `US_CA_INTRA_SCH_80_8`, `US_CA_INTRA_SCH_BRK`, `US_AK_INTRA_PROP_70_7`, `US_AK_INTRA_PROP_80_8`, `US_AK_INTRA_PAX_70_7`, `US_AK_INTRA_PAX_80_8`, `US_AK_INTRA_PROP_70_7_SLP`, `US_AK_INTRA_PROP_80_8_SLP`, `US_FL_INTRA_PROP_70_7`, `US_FL_INTRA_PROP_80_8`, `US_FL_INTRA_SH_70_7`, `US_FL_INTRA_SH_80_8`, `US_OR_INTRA_PROP_70_7`, `US_OR_INTRA_PROP_80_8`, `US_MD_INTRA_SH_70_7`, `US_MD_INTRA_SH_80_8`, `US_NE_INTRA_PROP_70_7`, `US_NE_INTRA_PROP_80_8`, `US_NC_INTRA_PROP_70_7`, `US_NC_INTRA_PROP_80_8`, `US_ND_INTRA_PROP_70_7`, `US_ND_INTRA_SH_70_7`, `US_SC_INTRA_PROP_70_7`, `US_SC_INTRA_PROP_80_8`, `US_WA_INTRA_PROP_70_7`, `US_WA_INTRA_PROP_80_8`, `US_WI_INTRA_PROP_70_7`, `US_WI_INTRA_PROP_80_8`, `CA_FED_C1_70_7`, `CA_FED_C2_120_14`, `CA_FED_C1_TEAM`, `CA_FED_C2_TEAM`, `CA_FED_NOHOS`, `CA_N60_C1_80_7`, `CA_N60_C2_120_14`, `CA_N60_C1_TEAM`, `CA_N60_C2_TEAM`, `CA_N60_NOHOS`, `CA_N60_OIL`, `CA_N60_OIL_TEAM`, `CA_AB_PROV_PROP_70_7`, `CA_SK_PROV_PROP_70_7`, `CA_SK_PROV_FERT_EX`, `CA_BC_PROV_LOG`, `CA_S60_OIL`, `CA_OIL_TEAM`, `US_INT_OILTR_60_7_BIG`, `US_INT_OILTR_60_7_BIG_SLP`, `US_INT_OILTR_60_7_SLP`, `US_INT_OILTR_70_8_BIG`, `US_INT_OILTR_70_8_BIG_SLP`, `US_INT_OILTR_70_8_SLP`, `US_CA_INTRA_OILTR_80_8`, `US_CA_INTRA_OILTR_PROP`, `US_INT_OILTR_60_7_NOBRK`, `US_INT_OILTR_60_7_NOBRK_BIG`, `US_INT_OILTR_60_7_NOBRK_BIG_SLP`, `US_INT_OILTR_60_7_NOBRK_SLP`, `US_INT_OILTR_70_8_NOBRK`, `US_INT_OILTR_70_8_NOBRK_BIG`, `US_INT_OILTR_70_8_NOBRK_BIG_SLP`, `US_INT_OILTR_70_8_NOBRK_SLP`, `US_INT_OILTR_SH_12H`, `US_INT_OILTR_SH_14H`, `US_INT_OILTR_70_8_SH_12H`, `US_INT_OILTR_70_8_SH_14H`, `US_TX_INTRA_OILTR_70_7`, `US_INT_OILWL_60_7_BIG`, `US_INT_OILWL_60_7_BIG_SLP`, `US_INT_OILWL_60_7_SLP`, `US_INT_OILWL_70_8_BIG`, `US_INT_OILWL_70_8_BIG_SLP`, `US_INT_OILWL_70_8_SLP`, `US_CA_INTRA_OILWL_80_8`, `US_CA_INTRA_OILWL_PROP`, `US_INT_OILWL_60_7_NOBRK`, `US_INT_OILWL_60_7_NOBRK_BIG`, `US_INT_OILWL_60_7_NOBRK_BIG_SLP`, `US_INT_OILWL_60_7_NOBRK_SLP`, `US_INT_OILWL_70_8_NOBRK`, `US_INT_OILWL_70_8_NOBRK_BIG`, `US_INT_OILWL_70_8_NOBRK_BIG_SLP`, `US_INT_OILWL_70_8_NOBRK_SLP`, `US_TX_INTRA_OILWL_70_7`
- `hos_ruleset_name` (string, optional, nullable) — Human-readable name of the HOS ruleset assigned to the user (e.g., 'US Property (60/7)').
- `allow_yard_move` (boolean, optional, nullable) — Indicates whether the user is allowed to use Yard Move (YM).
- `allow_personal_conveyance` (boolean, optional, nullable) — Indicates whether the user is allowed to use Personal Conveyance (PC).
- `allow_adverse_driving` (boolean, optional, nullable) — Indicates whether the user can apply the Adverse Driving exemption.
- `default_time_zone` (enum, optional, nullable) — IANA time zone ID (e.g., 'America/Chicago'); used as the user's default for UI/log normalization.
  - Allowed values: `UTC`, `Pacific/Honolulu`, `America/Adak`, `America/Anchorage`, `America/Juneau`, `America/Metlakatla`, `America/Nome`, `America/Sitka`, `America/Yakutat`, `America/Los_Angeles`, `America/Vancouver`, `America/Boise`, `America/Cambridge_Bay`, `America/Creston`, `America/Dawson`, `America/Dawson_Creek`, `America/Denver`, `America/Edmonton`, `America/Fort_Nelson`, `America/Inuvik`, `America/Phoenix`, `America/Whitehorse`, `America/Yellowknife`, `America/Chicago`, `America/Menominee`, `America/North_Dakota/Beulah`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/Rainy_River`, `America/Rankin_Inlet`, `America/Regina`, `America/Resolute`, `America/Swift_Current`, `America/Winnipeg`, `America/Indiana/Knox`, `America/Indiana/Tell_City`, `America/Detroit`, `America/Iqaluit`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/New_York`, `America/Nipigon`, `America/Pangnirtung`, `America/Thunder_Bay`, `America/Toronto`, `America/Indiana/Indianapolis`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Vevay`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Atikokan`, `America/Blanc-Sablon`, `America/Glace_Bay`, `America/Goose_Bay`, `America/Halifax`, `America/Moncton`, `America/St_Johns`, `America/Mexico_City`, `America/Cancun`, `America/Merida`, `America/Monterrey`, `America/Mazatlan`, `America/Chihuahua`, `America/Hermosillo`, `America/Tijuana`, `America/Matamoros`, `America/Ojinaga`, `America/Ciudad_Juarez`, `America/Guatemala`, `America/Belize`, `America/Tegucigalpa`, `America/Managua`, `America/Costa_Rica`, `America/Panama`, `America/Bogota`, `America/Lima`, `America/Santiago`, `America/Argentina/Buenos_Aires`, `America/Sao_Paulo`, `America/Montevideo`, `America/Puerto_Rico`, `Atlantic/Azores`, `Atlantic/Madeira`, `Atlantic/Canary`, `Atlantic/Faroe`, `Atlantic/Reykjavik`, `Europe/London`, `Europe/Dublin`, `Europe/Lisbon`, `Europe/Madrid`, `Europe/Gibraltar`, `Europe/Malta`, `Europe/Paris`, `Europe/Brussels`, `Europe/Amsterdam`, `Europe/Luxembourg`, `Europe/Berlin`, `Europe/Zurich`, `Europe/Vienna`, `Europe/Rome`, `Europe/Copenhagen`, `Europe/Stockholm`, `Europe/Oslo`, `Europe/Prague`, `Europe/Budapest`, `Europe/Warsaw`, `Europe/Bratislava`, `Europe/Helsinki`, `Europe/Tallinn`, `Europe/Riga`, `Europe/Vilnius`, `Europe/Belgrade`, `Europe/Tirane`, `Europe/Sofia`, `Europe/Athens`, `Europe/Bucharest`, `Europe/Zagreb`, `Europe/Ljubljana`, `Europe/Sarajevo`, `Europe/Skopje`, `Europe/Podgorica`, `Europe/Kyiv`, `Europe/Chisinau`, `Europe/Minsk`, `Europe/Istanbul`, `Europe/Kaliningrad`, `Europe/Moscow`, `Europe/Samara`, `Africa/Casablanca`, `Africa/Algiers`, `Africa/Tunis`, `Africa/Cairo`, `Africa/Tripoli`, `Africa/Lagos`, `Africa/Accra`, `Africa/Dakar`, `Africa/Abidjan`, `Africa/Nairobi`, `Africa/Dar_es_Salaam`, `Africa/Kampala`, `Africa/Johannesburg`, `Africa/Maputo`, `Africa/Windhoek`, `Asia/Dubai`, `Asia/Riyadh`, `Asia/Qatar`, `Asia/Kuwait`, `Asia/Bahrain`, `Asia/Muscat`, `Asia/Baghdad`, `Asia/Amman`, `Asia/Beirut`, `Asia/Jerusalem`, `Asia/Baku`, `Asia/Tbilisi`, `Asia/Yerevan`, `Asia/Almaty`, `Asia/Tashkent`, `Asia/Karachi`, `Asia/Kolkata`, `Asia/Dhaka`, `Asia/Colombo`, `Asia/Kathmandu`, `Asia/Bangkok`, `Asia/Ho_Chi_Minh`, `Asia/Singapore`, `Asia/Kuala_Lumpur`, `Asia/Jakarta`, `Asia/Manila`, `Asia/Shanghai`, `Asia/Hong_Kong`, `Asia/Taipei`, `Asia/Seoul`, `Asia/Tokyo`, `Australia/Sydney`, `Australia/Melbourne`, `Australia/Brisbane`, `Australia/Adelaide`, `Australia/Perth`, `Australia/Darwin`, `Australia/Hobart`, `Pacific/Auckland`
- `dot_id` (string, optional, nullable) — DOT identifier associated with the user/carrier.
- `phone_country_code` (string, optional, nullable) — Phone country code in '+\<digits>' format, e.g., '+1'.
- `hos_tracking_mode` (HosTrackingMode, optional, nullable) — Normalized HOS tracking configuration.
- `hos_compliance_type` (enum, optional, nullable) — Driver HOS compliance classification: exempt or non-exempt.
  - Allowed values: `exempt`, `non_exempt`
- `hos_tracking_method` (enum, optional, nullable) — How HOS is tracked for non-exempt drivers when the source distinguishes tracking method (manual or automatic).
  - Allowed values: `manual`, `automatic`

## Response

### 200

The user was updated successfully.

- `partner_id` (string, required) — The ID of the partner that created the operation.
- `connection_id` (string, required) — The ID of the connection
- `resource` (enum, required) — The type of resource to operate on (e.g., vehicle, driver).
  - Allowed values: `asset`, `document`, `driver_association`, `driver_vehicle_association`, `driver_event_log`, `driver_safety_event`, `dvir_log`, `dvir_log_defect`, `engine_log`, `engine_status`, `fuel_transaction`, `fuel_card`, `fleet_info`, `hos_availability`, `hos_daily_log`, `hos_daily_snapshot`, `hos_event`, `hos_event_annotation`, `hos_event_attachment`, `hos_violation`, `ifta_summary`, `location_segment`, `message`, `group_message`, `user`, `vehicle`, `vehicle_location`, `vehicle_sensor`, `vehicle_region_segment`, `trailer`, `trailer_association`, `trailer_vehicle_association`, `trailer_location`, `trailer_status`, `workflow`
- `operation_type` (enum, required) — The type of operation to perform (e.g., create, update).
  - Allowed values: `create`, `update`
- `payload` (map from string to any, required) — The payload of the operation, containing the resource attributes to be created or updated.
- `id` (string, optional) — Unique identifier for the resource operation.
- `created_at` (datetime, optional) — Immutable: The datetime the record was created in Catena Telematics.
- `updated_at` (datetime, optional) — The datetime the record was last modified in Catena Telematics.
- `deleted_at` (datetime, optional, nullable) — The datetime the record was logically deleted from Catena Telematics.
- `resource_id` (string, optional, nullable) — Unique identifier of the record. Can be `null` for create operations where the source does not exist yet.
- `source_id` (string, optional, nullable) — The unique identifier of the resource in the source system. Required for update operations.
- `status` (enum, optional) — The status of the operation
  - Allowed values: `pending`, `success`, `failed`
- `logs` (list of ResourceOperationLog, optional) — Log entries for each attempt to execute this operation.

### 202

The request to update the user has been accepted and is being processed.

- `partner_id` (string, required) — The ID of the partner that created the operation.
- `connection_id` (string, required) — The ID of the connection
- `resource` (enum, required) — The type of resource to operate on (e.g., vehicle, driver).
  - Allowed values: `asset`, `document`, `driver_association`, `driver_vehicle_association`, `driver_event_log`, `driver_safety_event`, `dvir_log`, `dvir_log_defect`, `engine_log`, `engine_status`, `fuel_transaction`, `fuel_card`, `fleet_info`, `hos_availability`, `hos_daily_log`, `hos_daily_snapshot`, `hos_event`, `hos_event_annotation`, `hos_event_attachment`, `hos_violation`, `ifta_summary`, `location_segment`, `message`, `group_message`, `user`, `vehicle`, `vehicle_location`, `vehicle_sensor`, `vehicle_region_segment`, `trailer`, `trailer_association`, `trailer_vehicle_association`, `trailer_location`, `trailer_status`, `workflow`
- `operation_type` (enum, required) — The type of operation to perform (e.g., create, update).
  - Allowed values: `create`, `update`
- `payload` (map from string to any, required) — The payload of the operation, containing the resource attributes to be created or updated.
- `id` (string, optional) — Unique identifier for the resource operation.
- `created_at` (datetime, optional) — Immutable: The datetime the record was created in Catena Telematics.
- `updated_at` (datetime, optional) — The datetime the record was last modified in Catena Telematics.
- `deleted_at` (datetime, optional, nullable) — The datetime the record was logically deleted from Catena Telematics.
- `resource_id` (string, optional, nullable) — Unique identifier of the record. Can be `null` for create operations where the source does not exist yet.
- `source_id` (string, optional, nullable) — The unique identifier of the resource in the source system. Required for update operations.
- `status` (enum, optional) — The status of the operation
  - Allowed values: `pending`, `success`, `failed`
- `logs` (list of ResourceOperationLog, optional) — Log entries for each attempt to execute this operation.

## Errors

### 400 Bad Request Error

Bad Request

- `code` (integer, optional, default: 400)
- `message` (string, optional, default: Bad Request)
- `detail` (string, optional, nullable)

### 401 Unauthorized Error

Unauthorized

- `code` (integer, optional, default: 401)
- `message` (string, optional, default: Unauthorized)
- `detail` (string, optional, nullable)

### 403 Forbidden Error

Forbidden

- `code` (integer, optional, default: 403)
- `message` (string, optional, default: Forbidden)
- `detail` (string, optional, nullable)

### 404 Not Found Error

Not Found

- `code` (integer, optional, default: 404)
- `message` (string, optional, default: Not Found)
- `detail` (string, optional, nullable)

### 405 Method Not Allowed Error

Method Not Allowed

- `code` (integer, optional, default: 405)
- `message` (string, optional, default: Method Not Allowed)
- `detail` (string, optional, nullable)

### 409 Conflict Error

Conflict

- `code` (integer, optional, default: 409)
- `message` (string, optional, default: Conflict)
- `detail` (string, optional, nullable)

### 422 Unprocessable Entity Error

Unprocessable Entity

- `code` (integer, optional, default: 422)
- `message` (string, optional, default: Invalid Request Body)
- `detail` (list of ValidationErrorDetail, optional, nullable)

### 429 Too Many Requests Error

Too Many Requests

- `code` (integer, optional, default: 429)
- `message` (string, optional, default: Too Many Requests)
- `detail` (RetryAfterDetail, optional, nullable)

### 500 Internal Server Error

Internal Server Error

- `message` (string, optional, default: Internal Server Error)

### 501 Not Implemented Error

Not Implemented

- `code` (integer, optional, default: 501)
- `message` (string, optional, default: Not Implemented)
- `detail` (string, optional, nullable)

### 502 Bad Gateway Error

The request to update the user could not be processed at this time. Please see the response for more details.

- `partner_id` (string, required) — The ID of the partner that created the operation.
- `connection_id` (string, required) — The ID of the connection
- `resource` (enum, required) — The type of resource to operate on (e.g., vehicle, driver).
  - Allowed values: `asset`, `document`, `driver_association`, `driver_vehicle_association`, `driver_event_log`, `driver_safety_event`, `dvir_log`, `dvir_log_defect`, `engine_log`, `engine_status`, `fuel_transaction`, `fuel_card`, `fleet_info`, `hos_availability`, `hos_daily_log`, `hos_daily_snapshot`, `hos_event`, `hos_event_annotation`, `hos_event_attachment`, `hos_violation`, `ifta_summary`, `location_segment`, `message`, `group_message`, `user`, `vehicle`, `vehicle_location`, `vehicle_sensor`, `vehicle_region_segment`, `trailer`, `trailer_association`, `trailer_vehicle_association`, `trailer_location`, `trailer_status`, `workflow`
- `operation_type` (enum, required) — The type of operation to perform (e.g., create, update).
  - Allowed values: `create`, `update`
- `payload` (map from string to any, required) — The payload of the operation, containing the resource attributes to be created or updated.
- `id` (string, optional) — Unique identifier for the resource operation.
- `created_at` (datetime, optional) — Immutable: The datetime the record was created in Catena Telematics.
- `updated_at` (datetime, optional) — The datetime the record was last modified in Catena Telematics.
- `deleted_at` (datetime, optional, nullable) — The datetime the record was logically deleted from Catena Telematics.
- `resource_id` (string, optional, nullable) — Unique identifier of the record. Can be `null` for create operations where the source does not exist yet.
- `source_id` (string, optional, nullable) — The unique identifier of the resource in the source system. Required for update operations.
- `status` (enum, optional) — The status of the operation
  - Allowed values: `pending`, `success`, `failed`
- `logs` (list of ResourceOperationLog, optional) — Log entries for each attempt to execute this operation.

## Types

### HosTrackingMode

Normalized HOS tracking configuration.

- `compliance_type` (enum, required) — Driver HOS Compliance type
  - Allowed values: `exempt`, `non_exempt`
- `tracking_method` (enum, optional, nullable) — How HOS is tracked when applicable
  - Allowed values: `manual`, `automatic`

### ResourceOperationLog

API response model for a resource operation log entry.

- `id` (string, required) — Unique identifier for the log entry.
- `created_at` (datetime, required) — Timestamp when the log entry was created.
- `updated_at` (datetime, required) — Timestamp when the log entry was last updated.
- `resource_operation_id` (string, required) — The ID of the resource operation this log entry belongs to.
- `status` (enum, required) — The status of the operation attempt.
  - Allowed values: `success`, `failed`
- `error_type` (enum, optional, nullable) — The type of error that occurred, if any.
  - Allowed values: `auth`, `validation`, `network`, `tsp`
- `error_details` (string, optional, nullable) — Detailed information about the error, if any.
- `response_status_code` (integer, optional, nullable) — HTTP status code returned by the TSP, if available.
- `response_headers` (map from string to string, optional, nullable) — HTTP response headers from the TSP (e.g. rate limit state).

### ValidationErrorDetail

- `path` (string, required)
- `input` (string, required)
- `message` (string, required)
- `error_type` (string, required)

### RetryAfterDetail

- `retry_after_seconds` (integer, required)
- `message` (string, required)

## Examples

### Example 1

**Request**

```json
{
  "connection_id": "string"
}
```

**Response**

```json
{
  "partner_id": "string",
  "connection_id": "string",
  "resource": "asset",
  "operation_type": "create",
  "payload": {},
  "id": "string",
  "created_at": "2024-01-15T09:30:00Z",
  "updated_at": "2024-01-15T09:30:00Z",
  "deleted_at": "2024-01-15T09:30:00Z",
  "resource_id": "string",
  "source_id": "string",
  "status": "pending",
  "logs": [
    {
      "id": "string",
      "created_at": "2024-01-15T09:30:00Z",
      "updated_at": "2024-01-15T09:30:00Z",
      "resource_operation_id": "string",
      "status": "success",
      "error_type": "auth",
      "error_details": "string",
      "response_status_code": 1,
      "response_headers": {}
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.catenatelematics.com/v2/telematics/users/id"

payload = { "connection_id": "string" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.catenatelematics.com/v2/telematics/users/id';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"connection_id":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.catenatelematics.com/v2/telematics/users/id"

	payload := strings.NewReader("{\n  \"connection_id\": \"string\"\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.catenatelematics.com/v2/telematics/users/id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"connection_id\": \"string\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.catenatelematics.com/v2/telematics/users/id")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"connection_id\": \"string\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.catenatelematics.com/v2/telematics/users/id', [
  'body' => '{
  "connection_id": "string"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.catenatelematics.com/v2/telematics/users/id");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"connection_id\": \"string\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["connection_id": "string"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.catenatelematics.com/v2/telematics/users/id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example 2

**Request**

```json
{
  "connection_id": "string"
}
```

**Response**

```json
{
  "partner_id": "string",
  "connection_id": "string",
  "resource": "asset",
  "operation_type": "create",
  "payload": {},
  "id": "string",
  "created_at": "2024-01-15T09:30:00Z",
  "updated_at": "2024-01-15T09:30:00Z",
  "deleted_at": "2024-01-15T09:30:00Z",
  "resource_id": "string",
  "source_id": "string",
  "status": "pending",
  "logs": [
    {
      "id": "string",
      "created_at": "2024-01-15T09:30:00Z",
      "updated_at": "2024-01-15T09:30:00Z",
      "resource_operation_id": "string",
      "status": "success",
      "error_type": "auth",
      "error_details": "string",
      "response_status_code": 1,
      "response_headers": {}
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.catenatelematics.com/v2/telematics/users/id"

payload = { "connection_id": "string" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.catenatelematics.com/v2/telematics/users/id';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"connection_id":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.catenatelematics.com/v2/telematics/users/id"

	payload := strings.NewReader("{\n  \"connection_id\": \"string\"\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.catenatelematics.com/v2/telematics/users/id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"connection_id\": \"string\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.catenatelematics.com/v2/telematics/users/id")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"connection_id\": \"string\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.catenatelematics.com/v2/telematics/users/id', [
  'body' => '{
  "connection_id": "string"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.catenatelematics.com/v2/telematics/users/id");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"connection_id\": \"string\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["connection_id": "string"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.catenatelematics.com/v2/telematics/users/id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```