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

# Update

PATCH https://users/%7Buser_id%7D
Content-Type: multipart/form-data

Reference: https://docs.itspropel.com/propel-biz/02-user/update

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: PropelBiz
  version: 1.0.0
paths:
  /users/%7Buser_id%7D:
    patch:
      operationId: update
      summary: Update
      tags:
        - subpackage_02User
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/02 User_Update_Response_201'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                timezone:
                  type: string
                  description: >-
                    Optional: IANA timezone name (e.g. America/New_York). When
                    set, all datetime fields in API responses to this user are
                    converted from UTC (storage) to this timezone (display).
                    Falls back to location.timezone, then tenant.timezone, then
                    platform default when null. Validates against PHP
                    timezone:all.
                first_name:
                  type: string
                  description: 'Required: First Name'
              required:
                - timezone
                - first_name
servers:
  - url: https:/
components:
  schemas:
    Users7BuserId7DPatchResponsesContentApplicationJsonSchemaDataAttributes:
      type: object
      properties:
        email:
          type: string
          format: email
        last_name:
          type: string
        first_name:
          type: string
      required:
        - email
        - last_name
        - first_name
      title: Users7BuserId7DPatchResponsesContentApplicationJsonSchemaDataAttributes
    Users7BuserId7DPatchResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
        attributes:
          $ref: >-
            #/components/schemas/Users7BuserId7DPatchResponsesContentApplicationJsonSchemaDataAttributes
      required:
        - id
        - type
        - attributes
      title: Users7BuserId7DPatchResponsesContentApplicationJsonSchemaData
    02 User_Update_Response_201:
      type: object
      properties:
        data:
          $ref: >-
            #/components/schemas/Users7BuserId7DPatchResponsesContentApplicationJsonSchemaData
      required:
        - data
      title: 02 User_Update_Response_201

```

## SDK Code Examples

```python 02 User_Update_example
import requests

url = "https://https/users/%7Buser_id%7D"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timezone\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n"
headers = {"Content-Type": "multipart/form-data; boundary=---011000010111000001101001"}

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

print(response.json())
```

```javascript 02 User_Update_example
const url = 'https://https/users/%7Buser_id%7D';
const form = new FormData();
form.append('timezone', 'string');
form.append('first_name', 'string');

const options = {method: 'PATCH'};

options.body = form;

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

```go 02 User_Update_example
package main

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

func main() {

	url := "https://https/users/%7Buser_id%7D"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timezone\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n")

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

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

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

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

}
```

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

url = URI("https://https/users/%7Buser_id%7D")

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

request = Net::HTTP::Patch.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timezone\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n"

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

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

HttpResponse<String> response = Unirest.patch("https://https/users/%7Buser_id%7D")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timezone\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://https/users/%7Buser_id%7D', [
  'multipart' => [
    [
        'name' => 'timezone',
        'contents' => 'string'
    ],
    [
        'name' => 'first_name',
        'contents' => 'string'
    ]
  ]
]);

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

```csharp 02 User_Update_example
using RestSharp;

var client = new RestClient("https://https/users/%7Buser_id%7D");
var request = new RestRequest(Method.PATCH);
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timezone\"\r\n\r\nstring\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nstring\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift 02 User_Update_example
import Foundation
let parameters = [
  [
    "name": "timezone",
    "value": "string"
  ],
  [
    "name": "first_name",
    "value": "string"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://https/users/%7Buser_id%7D")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
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()
```