Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,7 @@ AFFILIATION_OPTIONS = ['affiliate', 'alum', 'employee', 'faculty', 'member', 'st

### <a name="emailaddress"></a>[EmailAddress API](https://spaces.at.internet2.edu/display/COmanage/EmailAddress+API) (COmanage v3.3.0+)

- `email_addresses_add() -> dict`
- `### NOT IMPLEMENTED ###`
- `email_addresses_add(email_address: str, person_type: str, person_id: int) -> dict`
- Add a new EmailAddress.
- `email_addresses_delete() -> bool`
- `### NOT IMPLEMENTED ###`
Expand Down
4 changes: 2 additions & 2 deletions comanage_api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ def cous_view_one(self, cou_id: int):
return cous_view_one(self, cou_id=cou_id)

# EmailAddress API
def email_addresses_add(self):
return email_addresses_add(self)
def email_addresses_add(self, email_address: str, person_type: str, person_id: int):
return email_addresses_add(self, email_address=email_address, person_type=person_type, person_id=person_id)

def email_addresses_delete(self):
return email_addresses_delete(self)
Expand Down
75 changes: 67 additions & 8 deletions comanage_api/_emailaddresses.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@

Methods
-------
email_addresses_add() -> dict
### NOT IMPLEMENTED ###
email_addresses_add(email_address: str, person_type: str, person_id: int) -> dict
Add a new EmailAddress.
email_addresses_delete() -> bool
### NOT IMPLEMENTED ###
Expand All @@ -25,18 +24,78 @@
import json


def email_addresses_add(self) -> dict:
def email_addresses_add(self, email_address: str, person_type: str, person_id: int) -> dict:
"""
### NOT IMPLEMENTED ###
Add a new EmailAddress.

:param self:
:param email_address:
:param person_type:
:param person_id:
:return
501 Server Error: Not Implemented for url: mock://not_implemented_501.local:
{
"RequestType":"EmailAddresses",
"Version":"1.0",
"EmailAddresses":
[
{
"Version":"1.0",
"Mail":"<Mail>",
"Type":"<Type>",
"Description":"<Description>",
"Verified":true|false,
"Person":
{
"Type":("CO"|"Dept"|"Org"|"Organization"),
"Id":"<ID>"
}
}
]
}:

Response Format
HTTP Status Response Body Description
201 Added NewObjectResponse EmailAddress added
400 Bad Request EmailAddress Request not
provided in POST body
400 Invalid Fields ErrorResponse An error in one or more provided fields
401 Unauthorized Authentication required
403 No Person Specified Either a CO Person or an Org Identity
must be specified to attach the
Email Address to
403 Person Does Not Exist The specified CO Department, CO Person,
or Org Identity does not exist
500 Other Error Unknown error
"""
url = self._MOCK_501_URL
resp = self._mock_session.get(
url=url
post_body = {
"RequestType":"EmailAddresses",
"Version":"1.0",
"EmailAddresses":
[
{
"Version":"1.0",
"Mail":"<Mail>",
"Type":"official",
"Description":"",
"Verified": False,
"Person":
{
"Type":"<Type>",
"Id":"<ID>"
}
}
]
}

post_body['EmailAddresses'][0]['Mail'] = email_address
post_body['EmailAddresses'][0]['Person']['Type'] = person_type
post_body['EmailAddresses'][0]['Person']['Id'] = person_id

post_body = json.dumps(post_body)
url = self._CO_API_URL + '/email_addresses.json'
resp = self._s.post(
url=url,
data=post_body
)
if resp.status_code == 201:
return json.loads(resp.text)
Expand Down
8 changes: 6 additions & 2 deletions examples/email_addresses_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,14 @@
# must be set ahead of time and be valid within the CO
CO_PERSON_ID = 163

# email_addresses_add() -> dict
# email_addresses_add(email_address: str, person_type: str, person_id: int) -> dict
print('### email_addresses_add')
try:
new_email_address = api.email_addresses_add()
new_email_address = api.email_addresses_add(
email_address='test@domain.com',
person_type='copersonid',
person_id=CO_PERSON_ID
)
print(json.dumps(new_email_address, indent=4))
except HTTPError as err:
print('[ERROR] Exception caught')
Expand Down