# Disable a product

Disable a product by ID.

The product will no longer be available, but will remain in the system for historical and reporting purposes.

## Request Method

DELETE

## Endpoint

/accounts/{accountID}/products/{productID}

## Example Requests

### Shell

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

### TypeScript

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

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

async function run() {
  const result = await moov.products.disable({
    accountID: "9fbe72c0-abba-4bb7-b1d0-d15ee702fe62",
    productID: "1e11a7dc-4e86-41ed-b256-55c22f3bfd38",
  });

console.log(result);
}

run();
```

### PHP

```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();

$response = $sdk->products->disable(
    accountID: '9fbe72c0-abba-4bb7-b1d0-d15ee702fe62',
    productID: '1e11a7dc-4e86-41ed-b256-55c22f3bfd38'
);

if ($response->statusCode === 200) {
    // handle response
}
```

### Java

```java
package hello.world;

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

public class Application {

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

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

DisableProductResponse res = sdk.products().disable()
                .accountID("9fbe72c0-abba-4bb7-b1d0-d15ee702fe62")
                .productID("1e11a7dc-4e86-41ed-b256-55c22f3bfd38")
                .call();

// handle response
    }
}
```

### Python

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

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

res = moov.products.disable(account_id="9fbe72c0-abba-4bb7-b1d0-d15ee702fe62",
                                product_id="1e11a7dc-4e86-41ed-b256-55c22f3bfd38")

# Handle response
    print(res)
```

### Ruby

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.products.disable(account_id: '9fbe72c0-abba-4bb7-b1d0-d15ee702fe62', product_id: '1e11a7dc-4e86-41ed-b256-55c22f3bfd38')

if res.status_code == 200
  # handle response
end
```

### C#

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

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

var res = await sdk.Products.DisableAsync(
    accountID: "9fbe72c0-abba-4bb7-b1d0-d15ee702fe62",
    productID: "1e11a7dc-4e86-41ed-b256-55c22f3bfd38"
);

// handle response
```

## Possible Responses

### Successful Request

The request completed successfully, but there is no content to return.

#### Response Headers
- A unique identifier used to trace requests.

### Invalid Syntax

The server could not understand the request due to invalid syntax.

### Missing Authentication

The request contained missing or expired authentication.

### Unauthorized Request

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.

### Rate Limiting

Request was refused due to rate limiting.

### Unexpected Error

The request failed due to an unexpected error.

### Downstream Failure

The request failed because a downstream service failed to respond.

## API 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.

### Possible Values

`v2026.07.00`
