diff --git a/README.md b/README.md index 07b9446..7b96b7a 100644 --- a/README.md +++ b/README.md @@ -223,8 +223,7 @@ AFFILIATION_OPTIONS = ['affiliate', 'alum', 'employee', 'faculty', 'member', 'st ### [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 ###` diff --git a/comanage_api/__init__.py b/comanage_api/__init__.py index 39118f1..052cfc6 100644 --- a/comanage_api/__init__.py +++ b/comanage_api/__init__.py @@ -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) diff --git a/comanage_api/_emailaddresses.py b/comanage_api/_emailaddresses.py index 0e4788f..c2cf307 100644 --- a/comanage_api/_emailaddresses.py +++ b/comanage_api/_emailaddresses.py @@ -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 ### @@ -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":"", + "Type":"", + "Description":"", + "Verified":true|false, + "Person": + { + "Type":("CO"|"Dept"|"Org"|"Organization"), + "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":"", + "Type":"official", + "Description":"", + "Verified": False, + "Person": + { + "Type":"", + "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) diff --git a/examples/email_addresses_example.py b/examples/email_addresses_example.py index c200805..4a96537 100644 --- a/examples/email_addresses_example.py +++ b/examples/email_addresses_example.py @@ -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')