diff --git a/teamsnap/teamsnap/api.py b/teamsnap/teamsnap/api.py index bbade83..bdcb816 100644 --- a/teamsnap/teamsnap/api.py +++ b/teamsnap/teamsnap/api.py @@ -1,9 +1,10 @@ __all__ = ['TeamSnap', 'Team', 'Event', 'Availability', 'Member', 'Location', 'Me'] from apiclient import APIClient, HeaderAuthentication, JsonResponseHandler - class ApiObject(): rel = None + version = None + template = None def __init__(self, client, rel=rel, data={}): self.client = client @@ -22,38 +23,534 @@ class ApiObject(): class Me (ApiObject): rel = "me" + version = "3.866.0" + template = { + "data": [ + { + "name": "first_name" + }, + { + "name": "last_name" + }, + { + "name": "password" + }, + { + "name": "birthday" + }, + { + "name": "email" + }, + { + "name": "facebook_id", + "deprecated": True, + "prompt": "facebook_id is deprecated and has been removed. Continued use of facebook_id is not recommended it will no longer be stored." + }, + { + "name": "facebook_access_token", + "deprecated": True, + "prompt": "facebook_access_token is deprecated and has been removed. Continued use of facebook_access_token is not recommended it will no longer be stored." + }, + { + "name": "type", + "value": "user" + }, + { + "name": "is_lab_rat" + }, + { + "name": "receives_newsletter" + } + ] + } def __init__(self, client): super().__init__(client=client, rel=self.rel, data=client.get(client.link(self.rel))) class User (ApiObject): rel = "users" + version = "3.866.0" + template = { + "data": [ + { + "name": "first_name" + }, + { + "name": "last_name" + }, + { + "name": "password" + }, + { + "name": "birthday" + }, + { + "name": "email" + }, + { + "name": "facebook_id", + "deprecated": True, + "prompt": "facebook_id is deprecated and has been removed. Continued use of facebook_id is not recommended it will no longer be stored." + }, + { + "name": "facebook_access_token", + "deprecated": True, + "prompt": "facebook_access_token is deprecated and has been removed. Continued use of facebook_access_token is not recommended it will no longer be stored." + }, + { + "name": "type", + "value": "user" + }, + { + "name": "is_lab_rat" + }, + { + "name": "receives_newsletter" + } + ] + } class Event (ApiObject): rel = "events" + version = "3.866.0" + template = { + "data": [ + { + "name": "type", + "value": "event" + }, + { + "name": "additional_location_details" + }, + { + "name": "browser_time_zone" + }, + { + "name": "division_location_id" + }, + { + "name": "doesnt_count_towards_record" + }, + { + "name": "duration_in_minutes" + }, + { + "name": "game_type_code" + }, + { + "name": "icon_color" + }, + { + "name": "is_canceled" + }, + { + "name": "is_game" + }, + { + "name": "is_overtime" + }, + { + "name": "is_shootout" + }, + { + "name": "is_tbd" + }, + { + "name": "label" + }, + { + "name": "location_id" + }, + { + "name": "minutes_to_arrive_early" + }, + { + "name": "name" + }, + { + "name": "notes" + }, + { + "name": "notify_opponent" + }, + { + "name": "notify_opponent_contacts_email" + }, + { + "name": "notify_opponent_contacts_name" + }, + { + "name": "notify_opponent_notes" + }, + { + "name": "notify_team" + }, + { + "name": "notify_team_as_member_id" + }, + { + "name": "opponent_id" + }, + { + "name": "points_for_opponent" + }, + { + "name": "points_for_team" + }, + { + "name": "repeating_include", + "prompt": "When updating a repeating event, this is a required field. Values are: \"all\" - updates all events in this series, \"future\" - updates this event and all that occur after, \"none\" - only updates a single event." + }, + { + "name": "repeating_type_code", + "prompt": "A code for the frequency of the repeated event, this is required with the \"repeating_include\" attribute when creating a repeating event. Valid values are: \"1\" - repeat an event daily, \"2\" - repeat an event weekly." + }, + { + "name": "repeating_until", + "prompt": "A date when the repeating event should end, this is inclusive so an event will be created on this day if it falls before the next event specified by \"repeating_type_code\". This attribute is required with \"repeating_type_code\" when creating a repeating event." + }, + { + "name": "results" + }, + { + "name": "results_url" + }, + { + "name": "shootout_points_for_opponent" + }, + { + "name": "shootout_points_for_team" + }, + { + "name": "start_date" + }, + { + "name": "team_id" + }, + { + "name": "time_zone" + }, + { + "name": "tracks_availability" + }, + { + "name": "uniform" + } + ]} class Team (ApiObject): rel = "teams" - pass + version = "3.866.0" + template = { + "data": [ + { + "name": "name" + }, + { + "name": "location_country" + }, + { + "name": "location_postal_code" + }, + { + "name": "time_zone", + "prompt": "The time_zone parameter is required when creating a team, but for changing a team's time_zone, use the update_time_zone command" + }, + { + "name": "sport_id" + }, + { + "name": "division_id" + }, + { + "name": "division_name" + }, + { + "name": "season_name" + }, + { + "name": "league_name" + }, + { + "name": "league_url" + }, + { + "name": "owner_first_name" + }, + { + "name": "owner_last_name" + }, + { + "name": "owner_email" + }, + { + "name": "is_ownership_pending" + }, + { + "name": "ad_unit_hero_id" + }, + { + "name": "ad_unit_hero_template_id" + }, + { + "name": "ad_unit_inline_id" + }, + { + "name": "type", + "value": "team" + } + ] + } class Availability (ApiObject): rel = "availabilities" - pass + version = "3.866.0" + template = { + "data": [ + { + "name": "status_code" + }, + { + "name": "notes" + }, + { + "name": "event_id" + }, + { + "name": "member_id" + }, + { + "name": "notes_author_member_id" + }, + { + "name": "source" + }, + { + "name": "type", + "value": "availability" + } + ] + } class Member (ApiObject): rel = "members" + version = "3.866.0" + template = { + "data": [ + { + "name": "first_name" + }, + { + "name": "last_name" + }, + { + "name": "gender" + }, + { + "name": "position" + }, + { + "name": "is_manager" + }, + { + "name": "birthday" + }, + { + "name": "hide_age", + "deprecated": True, + "prompt": "hide_age is deprecated and will be removed in a future version, use is_age_hidden instead." + }, + { + "name": "is_age_hidden" + }, + { + "name": "hide_address", + "deprecated": True, + "prompt": "hide_address is deprecated and will be removed in a future version, use is_address_hidden instead." + }, + { + "name": "is_address_hidden" + }, + { + "name": "is_non_player" + }, + { + "name": "address_street1" + }, + { + "name": "address_street2" + }, + { + "name": "address_city" + }, + { + "name": "address_state" + }, + { + "name": "address_zip" + }, + { + "name": "jersey_number" + }, + { + "name": "team_id" + }, + { + "name": "is_ownership_pending" + }, + { + "name": "source_action" + }, + { + "name": "type", + "value": "member" + } + ] + }, class Location (ApiObject): rel = "locations" + version = "3.866.0" + template = { + "data": [ + { + "name": "name" + }, + { + "name": "url" + }, + { + "name": "phone" + }, + { + "name": "notes" + }, + { + "name": "address" + }, + { + "name": "latitude" + }, + { + "name": "longitude" + }, + { + "name": "team_id" + }, + { + "name": "is_retired" + }, + { + "name": "type", + "value": "location" + } + ] + } class Opponent (ApiObject): rel = "opponents" + version = "3.866.0" + template = { + "data": [ + { + "name": "name" + }, + { + "name": "contacts_name" + }, + { + "name": "contacts_phone" + }, + { + "name": "contacts_email" + }, + { + "name": "notes" + }, + { + "name": "team_id" + }, + { + "name": "type", + "value": "opponent" + } + ] + } class EventLineupEntry (ApiObject): rel = "event_lineup_entries" + version = "3.866.0" + template = { + "data": [ + { + "name": "event_lineup_id" + }, + { + "name": "member_id" + }, + { + "name": "sequence" + }, + { + "name": "label" + }, + { + "name": "type", + "value": "event_lineup_entry" + } + ] + } class Statistics (ApiObject): rel = "statistics" + version = "3.866.0" + template = { + "data": [ + { + "name": "acronym" + }, + { + "name": "always_display_decimals" + }, + { + "name": "formula" + }, + { + "name": "is_in_descending_order" + }, + { + "name": "display_zero_totals" + }, + { + "name": "is_percentage" + }, + { + "name": "is_private" + }, + { + "name": "is_team_statistic" + }, + { + "name": "is_top_statistic" + }, + { + "name": "name" + }, + { + "name": "precision" + }, + { + "name": "statistic_group_id" + }, + { + "name": "team_id" + }, + { + "name": "type", + "value": "statistic" + } + ] + } class MemberStatistics (ApiObject): rel = "member_statistics"