Metadata-Version: 2.1
Name: dixa
Version: 0.1.0
Summary: Dixa Developer Kit for Python
Home-page: https://github.com/humanforest/dixa-python
Author: José Duarte
Author-email: jose.duarte@humanforest.co.uk
License: UNKNOWN
Keywords: dixa
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: pydantic
Requires-Dist: pandas
Requires-Dist: requests
Requires-Dist: phonenumbers
Requires-Dist: pydantic[email]

# Python Dixa SDK

A Python implementation of the Dixa API.

## Installation

Install the package with pip

```bash
pip install dixa
```

## Usage/Examples

### Initialization
```python
from dixa import DixaClient

client = DixaClient(api_key="<DIXA_API_KEY>")
```

### Getting user data
```python
# Get users by id, email or phone
user_by_id = client.get_end_users(user_id="abcd1234")
user_by_email = client.get_end_users(email="john.doe@example.com")
user_by_phone = client.get_end_users(phone_number="+447357000000")

# Get all users
all_users = client.get_all_end_users()
```

### Upload bulk user data
```python
from dixa import User, UserList

user1 = {
    "displayName": "John Doe",
    "email": "john.doe@example.com",
    "middleNames": ["Bob", "Patrick"]
}

user2 = {
    "givenName": "Juan",
    "familyName": "Perez",
    "displayName": "Juan Perez",
    "phoneNumber": "+447777000000"
}

users = UserList(
    data=[
        User(**user1),
        User(**user2)
    ]
)

client.post_end_users_bulk(user_list=users)
```

### Create a Team
```python
from dixa import Team

client.post_team(team=Team(name="New Team"))
```

## Features

- Get users and agents by id, email or phone.
- Upload, patch and modify users and agents.
- Bulk upload of users.
- Get agents' presence.
- Activate and deactivate tags.


## Ported Endpoints

### Agents

- [x] `GET /v1/agents/presence`
- [x] `GET /v1/agents/{agent_id}/teams`
- [x] `GET /v1/agents/{agent_id}/presence`
- [x] `POST /v1/agents/bulk`
- [x] `GET /v1/agents`
- [ ] `PUT /v1/agents`
- [ ] `POST /v1/agents`
- [ ] `PATCH /v1/agents`
- [x] `GET /v1/agents/{agent_id}`
- [ ] `PUT /v1/agents/{agent_id}`
- [ ] `POST /v1/agents/{agent_id}`
- [ ] `PATCH /v1/agents/{agent_id}`

### End Users

- [x] `POST /v1/endusers/bulk`
- [x] `GET /v1/endusers/{user_id}`
- [x] `PATCH /v1/endusers/{user_id}`
- [x] `GET /v1/endusers`
- [x] `PUT /v1/endusers`
- [x] `POST /v1/endusers`
- [x] `PATCH /v1/endusers`
- [x] `PUT /v1/endusers/{enduser_id}`

### Teams
- [x] `GET /v1/teams`
- [x] `POST /v1/teams`
- [x] `GET /v1/teams/{teamId}/agents`
- [x] `GET /v1/teams/{teamId}/presence`
- [x] `GET /v1/teams/{team_id}`
- [x] `DELETE /v1/teams/{team_id}`
- [ ] `DELETE /v1/teams/{team_id}/agents`
- [ ] `PATCH /v1/teams/{team_id}/agents`

### Conversations
- [ ] `PUT /v1/conversations/{conversationId}/close`
- [ ] `PUT /v1/conversations/{conversationId}/reopen`
- [ ] `PUT /v1/conversations/{conversationId}/transfer/queue`
- [ ] `POST /v1/conversations/{conversationId}/notes/bulk`
- [ ] `POST /v1/conversations/{conversationId}/notes`
- [ ] `GET /v1/conversations/{csid}/rating`
- [ ] `PUT /v1/conversations/{conversationId}/tags/{tagId}`
- [ ] `DELETE /v1/conversations/{conversationId}/tags/{tagId}`
- [ ] `GET /v1/conversations/{csid}/tags`
- [ ] `POST /v1/conversations/{conversationId}/messages`
- [ ] `POST /v1/conversations`
- [ ] `PUT /v1/conversations/{conversationId}/claim`
- [ ] `GET /v1/conversations/{csid}`
- [ ] `GET /v1/conversations/{csid}/activitylog`
- [ ] `GET /v1/conversations/activitylog`

### Queues
- [ ] `GET /v1/queues/{queue_id}/members`
- [ ] `DELETE /v1/queues/{queueId}/members`
- [ ] `PATCH /v1/queues/{queueId}/members`
- [ ] `GET /v1/queues`
- [ ] `POST /v1/queues`
- [ ] `GET /v1/queues/{queue_id}`

### Tags
- [x] `GET /v1/tags/{tagId}`
- [x] `GET /v1/tags`
- [ ] `POST /v1/tags`
- [x] `PATCH/v1/tags/{tagId}/deactivate`
- [x] `PATCH /v1/tags/{tagId}/activate`


## Reference
[REST API Reference](https://docs.dixa.io/reference/)


# History

## v0.1.0
### Added
- Dixa Client.
- Models: `User`, `UserList`, `Tag`, `TagList`, `Team`, `TeamList`, `Presence`, `PresenceList`.
- Methods:
  - `get_end_users`
  - `get_all_end_users`
  - `post_end_user`
  - `post_end_users_bulk`
  - `put_end_user`
  - `patch_end_user`
  - `get_agents`
  - `get_all_agents`
  - `get_agents_presence`
  - `get_agent_teams`
  - `get_tags`
  - `patch_tag`
  - `get_teams`
  - `get_team_agents`
  - `get_team_presence`
  - `post_team`
  - `delete_team`


