> For the complete documentation index, see [llms.txt](https://apidocs.d6plus.co.za/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidocs.d6plus.co.za/reference/settings/clients/change-client-integration-state.md).

# Change Client Integration State

## Change the state of the client integration

<mark style="color:purple;">`PATCH`</mark> `https://integrate.d6plus.co.za/api/v1/settings/clients/{school_login_id}`

Use this endpoint to change the state of the integration for a client who has authorised your integration in their d6+ SAMS instance. This state indicates whether you are actively servicing the client or not.

#### Path Parameters

| Name                                                | Type    | Description                                      |
| --------------------------------------------------- | ------- | ------------------------------------------------ |
| school\_login\_id<mark style="color:red;">\*</mark> | Integer | The login ID of the school to retrieve data from |

#### Headers

| Name                                              | Type   | Description       |
| ------------------------------------------------- | ------ | ----------------- |
| HTTP-X-USERNAME<mark style="color:red;">\*</mark> | String | As provided by d6 |
| HTTP-X-PASSWORD<mark style="color:red;">\*</mark> | String | As provided by d6 |

#### Request Body

| Name                                            | Type    | Description                                            |
| ----------------------------------------------- | ------- | ------------------------------------------------------ |
| state<mark style="color:red;">\*</mark>         | Integer | The state you would like to set the integration to     |
| api\_type\_id<mark style="color:red;">\*</mark> | Integer | The api\_type\_id returned by the Get Clients endpoint |

{% tabs %}
{% tab title="200 The request was successful." %}

```json
[]
```

{% endtab %}

{% tab title="404: Not Found The resource was not found." %}

```json
{
    "error": "Not found",
    "error_description": "No client-authorised integrations found"
}
```

{% endtab %}

{% tab title="401: Unauthorized The server understood the request, but access is not allowed." %}

```json
{
    "error": "Unauthorized",
    "error_description": "Client access not authorised for this API type"
}
```

{% endtab %}

{% tab title="500: Internal Server Error The server experienced an error while attempting to perform the requested action." %}

```json
{
    "error": "Internal Server Error",
    "error_description": "Failed to update the integration state"
}
```

{% endtab %}

{% tab title="400: Bad Request The request was invalid. Normally due to missing or malformed parameters." %}

```json
{
    "error": "Bad Request",
    "error_description": "Invalid integration state provided"
}
```

{% endtab %}

{% tab title="204: No Content The request was understood and processed, but no changes were made." %}

```json
[]
```

{% endtab %}
{% endtabs %}

## Examples

{% tabs %}
{% tab title="PHP" %}

```php
<?php

const BASE_URL = 'https://integrate.d6plus.co.za/api/v1/settings/clients';
const SCHOOL_LOGIN_ID = '1000';
const API_USERNAME = getenv('API_USERNAME'); // Assuming you have these environment variables set
const API_PASSWORD = getenv('API_PASSWORD');

$data = [
    "api_type_id" => 8,
    "state" => 1
]; 
$jsonData = json_encode($data);

$curl = curl_init();

$query = http_build_query(PARAMS);

$options = [
    CURLOPT_URL => BASE_URL . '/' . SCHOOL_LOGIN_ID,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_POSTFIELDS => $jsonData,    
    CURLOPT_HTTPHEADER => [
        "HTTP-X-USERNAME: " . API_USERNAME,
        "HTTP-X-PASSWORD: " . API_PASSWORD,
        "Content-Type: application/json",
        "Content-Length: " . strlen($jsonData)        
    ],
];

curl_setopt_array($curl, $options);

$response = curl_exec($curl);

if (curl_errno($curl)) {
    throw new Exception('Curl error: ' . curl_error($curl));
}

curl_close($curl);

echo $response;
```

{% endtab %}

{% tab title="cURL" %}

<pre class="language-bash"><code class="lang-bash"><strong>curl --location --request PATCH 'https://integrate.d6plus.co.za/api/v1/settings/clients/1000' \
</strong>--header 'HTTP-X-USERNAME: YOUR_API_USERNAME' \
--header 'HTTP-X-PASSWORD: YOUR_API_PASSWORD' \
--header 'Content-Type: application/json' \
--data '{"api_type_id": 8, "state": 1}'
</code></pre>

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://apidocs.d6plus.co.za/reference/settings/clients/change-client-integration-state.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
