56 lines
1.0 KiB
Python
56 lines
1.0 KiB
Python
from typing import NotRequired, TypedDict
|
|
|
|
import requests
|
|
|
|
from config import DOCUSEAL_API, DOCUSEAL_KEY
|
|
|
|
headers = {
|
|
'X-Auth-Token': DOCUSEAL_KEY,
|
|
}
|
|
|
|
Submitter = TypedDict(
|
|
'Submitter',
|
|
{
|
|
'role': str,
|
|
'name': str,
|
|
'email': str,
|
|
'external_id': NotRequired[str],
|
|
},
|
|
)
|
|
EmailMessage = TypedDict(
|
|
'EmailMessage',
|
|
{
|
|
'subject': str,
|
|
'body': str,
|
|
},
|
|
)
|
|
|
|
|
|
def create_submission_from_pdf(
|
|
filename: str,
|
|
file: str,
|
|
submitters: list[Submitter],
|
|
email_message: EmailMessage,
|
|
**kwargs,
|
|
) -> dict:
|
|
r = requests.post(
|
|
url=f'{DOCUSEAL_API}/api/submissions/pdf',
|
|
json={
|
|
'name': filename,
|
|
'documents': [
|
|
{
|
|
'name': filename,
|
|
'file': file,
|
|
}
|
|
],
|
|
'message': email_message,
|
|
'submitters': submitters,
|
|
**kwargs,
|
|
},
|
|
headers=headers,
|
|
timeout=6,
|
|
)
|
|
r.raise_for_status()
|
|
|
|
return r.json()
|