Skip to content

Commit bd2ee2c

Browse files
committed
v0.1.0
1 parent 802c339 commit bd2ee2c

File tree

5 files changed

+130
-1
lines changed

5 files changed

+130
-1
lines changed

README.md

+21-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1-
# python-sdk
1+
# Arva Python SDK
2+
3+
This repository contains the source code for the Arva Python SDK.
4+
5+
To install it, run:
6+
7+
```SH
8+
pip install arva-sdk
9+
```
10+
11+
To get started, create a client with:
12+
13+
```Python
14+
from arva import Arva
15+
16+
client = Arva(
17+
api_key='<YOUR_API_KEY>',
18+
)
19+
```
20+
21+
Full docs [here](https://platform.arva-ai.com/docs).

pyproject.toml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
[build-system]
2+
requires = ["setuptools>=45", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "arva-sdk"
7+
version = "0.1.0"
8+
description = "A Python SDK for the Arva API"
9+
readme = "README.md"
10+
authors = [{name = "Oli Wales"}]
11+
license = {file = "LICENSE"}
12+
classifiers = [
13+
"Development Status :: 3 - Alpha",
14+
"Intended Audience :: Developers",
15+
"License :: OSI Approved :: MIT License",
16+
"Operating System :: OS Independent",
17+
"Programming Language :: Python :: 3",
18+
"Programming Language :: Python :: 3.7",
19+
"Programming Language :: Python :: 3.8",
20+
"Programming Language :: Python :: 3.9",
21+
]
22+
keywords = ["arva", "sdk", "api"]
23+
dependencies = [
24+
"requests",
25+
"requests-toolbelt",
26+
]
27+
requires-python = ">=3.7"
28+
29+
[project.urls]
30+
Homepage = "https://github.com/Arva-AI/python-sdk"

requirements.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
requests
2+
requests-toolbelt

src/arva/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .arva import Arva

src/arva/arva.py

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
from typing import List, Dict, Any, Optional, IO
2+
import requests
3+
import json
4+
import os
5+
from requests_toolbelt import MultipartEncoder
6+
7+
class Arva:
8+
def __init__(self, api_key: str, base_url: str = 'http://platform.arva-ai.com/api/v0') -> None:
9+
self.api_key = api_key
10+
self.base_url = base_url
11+
self.customers = self.Customers(self)
12+
13+
class Customers:
14+
def __init__(self, arva_instance: 'Arva') -> None:
15+
self.arva_instance = arva_instance
16+
17+
def create(self, agent_id: str, registered_name: str, state: str) -> Dict[str, Any]:
18+
url = f"{self.arva_instance.base_url}/customer/create"
19+
headers = {'Authorization': f'Bearer {self.arva_instance.api_key}'}
20+
payload = {
21+
'registeredName': registered_name,
22+
'state': state,
23+
'agentId': agent_id
24+
}
25+
26+
response = requests.post(url, headers=headers, json=payload)
27+
response.raise_for_status()
28+
return response.json()
29+
30+
def update(self, id: str, user_info_patch: Dict[str, Any], websites: Optional[List[str]] = None, files: Optional[List[IO[bytes]]] = None) -> Dict[str, Any]:
31+
url = f"{self.arva_instance.base_url}/customer/update"
32+
headers = {'Authorization': f'Bearer {self.arva_instance.api_key}'}
33+
34+
if websites is None:
35+
websites = []
36+
if files is None:
37+
files = []
38+
39+
file_tuples = [
40+
('file', (os.path.basename(os.path.abspath(f.name)), f, 'application/pdf')) for f in files
41+
]
42+
43+
fields = [
44+
('customerId', id),
45+
('userInfoPatch', json.dumps(user_info_patch)),
46+
('websites', json.dumps(websites)),
47+
] + file_tuples
48+
49+
mp_encoder: MultipartEncoder = MultipartEncoder(fields=fields)
50+
headers['Content-Type'] = mp_encoder.content_type
51+
52+
response = requests.post(url, headers=headers, data=mp_encoder)
53+
response.raise_for_status()
54+
return response.json()
55+
56+
def getById(self, id: str) -> Dict[str, Any]:
57+
url = f"{self.arva_instance.base_url}/customer/getById?id={id}"
58+
headers = {'Authorization': f'Bearer {self.arva_instance.api_key}'}
59+
60+
response = requests.get(url, headers=headers)
61+
response.raise_for_status()
62+
return response.json()
63+
64+
def review(self, id: str, verdict: str, reason: str, rfi: Optional[str] = None) -> Dict[str, Any]:
65+
url = f"{self.arva_instance.base_url}/customer/review"
66+
headers = {'Authorization': f'Bearer {self.arva_instance.api_key}'}
67+
payload = {
68+
'customerId': id,
69+
'verdict': verdict,
70+
'reason': reason,
71+
'rfi': rfi
72+
}
73+
74+
response = requests.post(url, headers=headers, json=payload)
75+
response.raise_for_status()
76+
return response.json()

0 commit comments

Comments
 (0)