# Update a support ticket

Updates a support ticket.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts/{accountID}/tickets.write` scope.

If you're updating the ticket on behalf of another account, then you'll need to specify the `/accounts/{partnerAccountID}/tickets.write` and `/accounts/{accountID}/profile.read` scopes.

## PATCH

/accounts/{accountID}/tickets/{ticketID}

### Ask

```shell
curl -X PATCH "https://api.moov.io/accounts/{accountID}/tickets/{ticketID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"
```

### Ask

```go
mc, _ := moov.NewClient()

var accountID string // customer
var ticketID string

mc.UpdateTicket(ctx, accountID, ticketID, moov.UpdateTicket{
  Status: moov.UpdateTicketStatusClosed,
})
```

### Ask

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.support.updateTicket({
    accountID: "7cce2b85-37c2-4c76-954c-03dcec2b12f0",
    ticketID: "1d621d17-8e7d-4ac0-9f7d-6e9fcebe8eef",
    updateTicket: {},
  });

console.log(result);
}

run();
```

### Ask

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$updateTicket = new Components\UpdateTicket();

$response = $sdk->support->updateTicket(
    accountID: '7cce2b85-37c2-4c76-954c-03dcec2b12f0',
    ticketID: '1d621d17-8e7d-4ac0-9f7d-6e9fcebe8eef',
    updateTicket: $updateTicket
);

if ($response->ticket !== null) {
    // handle response
}
```

### Ask

```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.components.UpdateTicket;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.errors.UpdateTicketError;
import io.moov.sdk.models.operations.UpdateTicketResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws GenericError, UpdateTicketError, Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

UpdateTicketResponse res = sdk.support().updateTicket()
                .accountID("7cce2b85-37c2-4c76-954c-03dcec2b12f0")
                .ticketID("1d621d17-8e7d-4ac0-9f7d-6e9fcebe8eef")
                .updateTicket(UpdateTicket.builder()
                    .build())
                .call();

if (res.ticket().isPresent()) {
            System.out.println(res.ticket().get());
        }
    }
}
```

### Ask

```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.support.update_ticket(account_id="7cce2b85-37c2-4c76-954c-03dcec2b12f0", ticket_id="1d621d17-8e7d-4ac0-9f7d-6e9fcebe8eef")

# Handle response
    print(res)
```

### Ask

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.support.update_ticket(account_id: '7cce2b85-37c2-4c76-954c-03dcec2b12f0', ticket_id: '1d621d17-8e7d-4ac0-9f7d-6e9fcebe8eef', update_ticket: Models::Components::UpdateTicket.new)

unless res.ticket.nil?
  # handle response
end
```

### Ask

```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

var res = await sdk.Support.UpdateTicketAsync(
    accountID: "7cce2b85-37c2-4c76-954c-03dcec2b12f0",
    ticketID: "1d621d17-8e7d-4ac0-9f7d-6e9fcebe8eef",
    body: new UpdateTicket() {}
);

// handle response
```

## Example

```json
{
  "ticketID": "string",
  "number": 0,
  "title": "string",
  "contact": {
    "email": "string",
    "name": "string"
  },
  "status": "new",
  "createdOn": "2019-08-24T14:15:22Z",
  "updatedOn": "2019-08-24T14:15:22Z",
  "latestMessageOn": "2019-08-24T14:15:22Z",
  "closedOn": "2019-08-24T14:15:22Z",
  "foreignID": "string"
}
```

### Response errors

- **Invalid Syntax**: The server could not understand the request due to invalid syntax.

```json
{
  "error": "string"
}
```

- **Missing Authentication**: The request contained missing or expired authentication.

- **Unauthorized Access**: The user is not authorized to make the request.

- **Resource Not Found**: The requested resource was not found.

- **Conflict**: The request conflicted with the current state of the target resource.

```json
{
  "error": "string"
}
```

- **Validation Failures**: The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields.

```json
{
  "status": "string"
}
```

- **Rate Limiting**: Request was refused due to rate limiting.

- **Unexpected Error**: The request failed due to an unexpected error.

- **Downstream Service Failure**: The request failed because a downstream service failed to respond.

## Versioning

Set this header to v2026.07.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, which may not match the behavior documented here.
