claude3-account-creator/addy_api.py
2024-03-16 13:38:40 +01:00

181 lines
6.0 KiB
Python

import requests
from typing import Union, Dict, Any, List
def create_alias(api_token: str, alias_domain: str, alias_description: str, recipient_ids: List[str] | None) -> Union[Dict[str, Any], str]:
"""
Creates a new alias using the provided API token, domain and description.
:param api_token: The API token used for authentication
:type api_token: str
:param alias_domain: The domain for which the alias is to be created
:type alias_domain: str
:param alias_description: A description for the alias.
:type alias_description: str
:return: The API response in case of success, or error string in case of failure.
:rtype: Dict[str, Any] or str
if successful, grab the ['data']['email'] key, and you're golden.
store the ['data']['id'] key to delete the alias later
"""
headers = {
'Authorization': f'Bearer {api_token}',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
api_url = 'https://app.addy.io/api/v1/aliases'
payload = {
'domain': alias_domain,
'description': alias_description,
}
if recipient_ids:
payload['recipient_ids'] = recipient_ids
response = requests.post(api_url, headers=headers, json=payload)
if response.status_code == 201:
# Alias created successfully
return response.json()
else:
return f'Failed to create alias: {response.status_code} {response.text}'
def delete_alias(api_token: str, alias_id: str) -> str:
"""
Deletes an alias using the provided API token and alias ID.
:param api_token: The API token used for authentication
:type api_token: str
:param alias_id: The ID of the alias to be deleted
:type alias_id: str
:return: Success message if the alias is deleted successfully, or an error message otherwise.
:rtype: str
"""
api_url = f'https://app.addy.io/api/v1/aliases/{alias_id}'
headers = {
'Authorization': f'Bearer {api_token}',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
response = requests.delete(api_url, headers=headers)
if response.status_code == 200:
return 'Alias deleted successfully.'
else:
return f'Failed to delete alias: {response.status_code} - {response.text}'
def create_recipient(api_token: str, recipient_email: str) -> Union[Dict[str, Any], str]:
"""
Creates a new recipient using the provided API token and recipient email.
grab the ['data']['id'] for setting recipients on aliases, or deleting them
:param api_token: The API token used for authentication.
:type api_token: str
:param recipient_email: The email of the recipient to be created.
:type recipient_email: str
:return: The API response in case of success, or error string in case of failure.
:rtype: Dict[str, Any] or str
"""
headers = {
'Authorization': f'Bearer {api_token}',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
api_url = 'https://app.addy.io/api/v1/recipients'
payload = {
'email': recipient_email
}
response = requests.post(api_url, headers=headers, json=payload)
if response.status_code == 201:
# Recipient created successfully
return response.json()
else:
return f'Failed to create recipient: {response.status_code} {response.text}'
def delete_recipient(api_token: str, recipient_id: str) -> str:
"""
Deletes a specific recipient using the provided API token and recipient ID.
:param api_token: The API token used for authentication.
:type api_token: str
:param recipient_id: The ID of the recipient to be deleted.
:type recipient_id: str
:return: Success message if the recipient is deleted successfully, or an error message otherwise.
:rtype: str
"""
api_url = f'https://app.addy.io/api/v1/recipients/{recipient_id}'
headers = {
'Authorization': f'Bearer {api_token}',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
response = requests.delete(api_url, headers=headers)
if response.status_code == 204:
return 'Recipient deleted successfully.'
else:
return f'Failed to delete recipient: {response.status_code} - {response.text}'
def get_all_recipients(api_token: str, verified: bool = None) -> Union[Dict[str, Any], str]:
"""
Retrieves all recipients, optionally filtering by verification status.
:param api_token: The API token used for authentication.
:type api_token: str
:param verified: Optional; if specified, filters recipients by their verification status.
:type verified: bool
:return: The API response in case of success, or error string in case of failure.
:rtype: Dict[str, Any] or str
"""
headers = {
'Authorization': f'Bearer {api_token}',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
api_url = 'https://app.addy.io/api/v1/recipients'
# Add query parameters if 'verified' is not None
params = {}
if verified is not None:
params['filter[verified]'] = str(verified).lower()
response = requests.get(api_url, headers=headers, params=params)
if response.status_code == 200:
# Recipients retrieved successfully
return response.json()
else:
return f'Failed to retrieve recipients: {response.status_code} {response.text}'
# Example usage
if __name__ == "__main__":
api_token = 'insert_api_key'
recipient_id = '46eebc50-f7f8-46d7-beb9-c37f04c29a84' # Example recipient ID
response = delete_recipient(api_token, recipient_id)
print(response)
api_token = 'insert_api_key'
recipient_email = 'me@example.com'
response = create_recipient(api_token, recipient_email)
print(response)
api_token = 'insert_api_key'
alias_domain = 'addy.io' # Generates random alias
alias_description = 'Randomly generated alias'
response = create_alias(api_token, alias_domain, alias_description)
print(response)