> This page is for version v2.0 (default).
> For other versions, use one of these documentation indexes:
> - v2.0 (default): https://docs.cable.tech/v-2-0/llms.txt
> - v1.0: https://docs.cable.tech/v-1-0/llms.txt

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

# Update customer SAR in batch

PUT https://api.cable.tech/v2/customer_sar
Content-Type: application/json

Reference: https://docs.cable.tech/api-documentation/api-reference/customer-sar/update-customer-sa-rs

## Authentication

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

## Request

### Body (application/json)

This endpoint expects a list of CustomerSAR.

- `list of CustomerSAR`

## Response

### 200

Batch processing result

- `success` (boolean, required) — Indicates if the write operation was successful.
- `write_count` (integer, required) — The number of records written to the database.
- `message` (string, required) — Provides additional information about the operation result.
- `organization_id` (string, required) — The organization ID for which the operation was performed.

## Errors

### 400 Bad Request Error

Invalid customer SAR data in batch

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 401 Unauthorized Error

Unauthorized request

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 404 Not Found Error

Customer SAR not found in batch

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 429 Too Many Requests Error

Rate limit exceeded

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

### 500 Internal Server Error

Server error

- `code` (integer, required)
- `message` (string, required)
- `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields.

## Types

### CustomerSAR

Request body for adding SAR (Suspicious Activity Report) information for a person or company

- `sar_id` (string, required) — Unique identifier for a suspicious activity report belonging to a customer suspicious activity report. This is the primary key for a customer suspicious activity report and should be unique across all customer suspicious activity reports. Updates to a customer suspicious activity report should be made using this identifier.
- `timestamp` (datetime, required) — When this SAR was filed or updated in your system, in ISO 8601 format.
- `status` (enum, required) — The status of the Suspicious Activity Report (SAR). FILED means that it has been officially filed with the appropriate regulatory agency. PENDING means that it is in the process of being filed. CANCELLED means that it is not going to be filed.
  - Allowed values: `PENDING`, `FILED`, `CANCELLED`
- `sar_reason` (string, optional) — The reason for filing up a SAR for this person or company
- `related_company_id` (string, optional) — Unique identifier of the related company entity (used for business contexts). At least one of related_company_id and related_person_id should be specified.
- `related_person_id` (string, optional) — Unique identifier of the related person entity (used for retail contexts or when a person is the subject). At least only one of related_person_id and related_company_id should be specified.

### GeneralErrorErrorsItems

- `field` (string, optional)
- `message` (string, optional)

## Examples

**Request**

```json
[
  {
    "sar_id": "sar-9f8b7c6d5e4a3b2c1d0e",
    "timestamp": "2024-01-15T09:30:00Z",
    "status": "PENDING"
  }
]
```

**Response**

```json
{
  "success": true,
  "write_count": 1,
  "message": "Successfully updated 1 customer SAR record.",
  "organization_id": "org-1234567890abcdef"
}
```

**SDK Code**

```python
import requests

url = "https://api.cable.tech/v2/customer_sar"

payload = [
    {
        "sar_id": "sar-9f8b7c6d5e4a3b2c1d0e",
        "timestamp": "2024-01-15T09:30:00Z",
        "status": "PENDING"
    }
]
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript
const url = 'https://api.cable.tech/v2/customer_sar';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '[{"sar_id":"sar-9f8b7c6d5e4a3b2c1d0e","timestamp":"2024-01-15T09:30:00Z","status":"PENDING"}]'
};

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.cable.tech/v2/customer_sar"

	payload := strings.NewReader("[\n  {\n    \"sar_id\": \"sar-9f8b7c6d5e4a3b2c1d0e\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"status\": \"PENDING\"\n  }\n]")

	req, _ := http.NewRequest("PUT", 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.cable.tech/v2/customer_sar")

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"sar_id\": \"sar-9f8b7c6d5e4a3b2c1d0e\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"status\": \"PENDING\"\n  }\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.put("https://api.cable.tech/v2/customer_sar")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"sar_id\": \"sar-9f8b7c6d5e4a3b2c1d0e\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"status\": \"PENDING\"\n  }\n]")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.cable.tech/v2/customer_sar', [
  'body' => '[
  {
    "sar_id": "sar-9f8b7c6d5e4a3b2c1d0e",
    "timestamp": "2024-01-15T09:30:00Z",
    "status": "PENDING"
  }
]',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.cable.tech/v2/customer_sar");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"sar_id\": \"sar-9f8b7c6d5e4a3b2c1d0e\",\n    \"timestamp\": \"2024-01-15T09:30:00Z\",\n    \"status\": \"PENDING\"\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  [
    "sar_id": "sar-9f8b7c6d5e4a3b2c1d0e",
    "timestamp": "2024-01-15T09:30:00Z",
    "status": "PENDING"
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cable.tech/v2/customer_sar")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
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()
```