# Staff User

This endpoint is designed for listing and updating staff users, with updates restricted to the `is_superuser` field. Superusers have access to view all divisions and quotations, while non-superuser staff users are limited to viewing only their associated divisions and quotations.

Note that only superusers are authorized to use this endpoint.

## List Staff User

Retrieve a list of staff users.

**Example Request**

```
curl --location '{B2B_Backend_URL}/api/v1/staff-users/' \
--header 'Authorization: Token {token}'
```

**Example Response (200 OK)**

```json
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
	{
  	"id": 859,
  	"email": "example@example.com",
  	"first_name": "John",
  	"last_name": "Doe",
  	"phone_number": "",
  	"division": null,
  	"is_active": true,
  	"is_staff": true,
  	"is_superuser": true,
  	"shop_token": "",
  	"remote_id": null,
  	"date_joined": "2024-12-12T12:57:07.517766Z",
  	"last_login": null
	}
  ]
}
```

## Get Staff User Detail

Retrieve details of a specific staff user.

**Example Request**

```
curl --location '{B2B_Backend_URL}/api/v1/staff-users/{user_id}' \
--header 'Authorization: Token {token}'
```

**Example Response (200 OK)**

```json
{
  "id": 859,
  "email": "example@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "phone_number": "",
  "division": null,
  "is_active": true,
  "is_staff": true,
  "is_superuser": true,
  "shop_token": "",
  "remote_id": null,
  "date_joined": "2024-12-12T12:57:07.517766Z",
  "last_login": null
}
```

## Update Staff User

Update the `is_superuser` status of a staff user.

**Example Request**

```
curl --location --request PATCH '{B2B_Backend_URL}/api/v1/staff-users/{user_id}' \
--header 'Authorization: Token {token}\
--header 'Content-Type: application/json' \
--data '{
	"is_superuser": false
}'
```

**Example Response (200 OK)**

```json
{
  "is_superuser": false
}
```

## Export Staff User

Export staff user data in the specified fields and format. Returns a cache key to track the export status.

**Request Parameters**

<table><thead><tr><th width="202.16796875">Parameter</th><th>Description</th></tr></thead><tbody><tr><td>fields</td><td>Specifies the fields to be included in the export file. Available fields: <strong>id, email, first_name, last_name, phone_number, division, is_active, shop_token, remote_id, date_joined, language, last_login, division__name, division__id, division__division_type</strong></td></tr><tr><td>format</td><td>Specifies the file format for the export. Acceptable values are <code>csv</code> and <code>xls</code>. The default is <code>xls</code>.</td></tr><tr><td>status_cache_key</td><td>A query parameter to track the status of the file export using the cache key returned from the initial request.</td></tr></tbody></table>

**Example Request**

```
curl --location --request GET '{B2B_Backend_URL}/api/v1/staff-users/?fields=first_name&fields=division__name \
--header 'Authorization: Token {token} \
--header 'Content-Type: application/json'
```

**Example Response (200 OK)**

```json
{
"cache_key": "beacaa8ba65571e3840e28a11f17481e"
}
```

## Export File Status

Checks the status of an export file using the cache key obtained from the export request. Provides information on whether the file is ready for download.

**Example Request**

```
curl --location '{B2B_Backend_URL}/api/v1/staff-users/?status_cache_key=beacaa8ba65571e3840e28a11f17481e' \
--header 'Authorization: Token {token}'
```

**Example Response**

```json
{
  "is_ready": true,
  "url": "{url}/export_file/beacaa8ba65571e3840e28a11f17481e.xls",
  "status": "completed"
}
```

**Response Parameters**

<table><thead><tr><th width="154.6875">Field</th><th>Description</th></tr></thead><tbody><tr><td>is_ready</td><td>Indicates whether the file is ready for download (<code>true</code> or <code>false</code>).</td></tr><tr><td>url</td><td>The URL to download the exported file once it is ready.</td></tr><tr><td>status</td><td>Provides the current status of the export process (e.g., <code>waiting</code>, <code>completed</code>).</td></tr></tbody></table>


---

# Agent Instructions: 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:

```
GET https://apidocs.akinon.com/b2b/staff-user.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
