class Person(Instantiated, PivotalResource): name = fields.StringField(required=True) email = fields.StringField(required=True) initials = fields.StringField() username = fields.StringField() kind = fields.StringField()
class MembershipSummary(Instantiated, PivotalResource): project_id = fields.IntField() project_name = fields.StringField() project_color = fields.StringField() role = fields.StringField( validators=OneOf('owner', 'member', 'viewer', 'inactive')) last_viewed_at = fields.DateTimeField()
class Me(Instantiated, PivotalResource): name = fields.StringField() initials = fields.StringField() username = fields.StringField() time_zone = fields.EmbeddedField(TimeZone) api_token = fields.StringField() has_google_identity = fields.BoolField() projects = fields.ListField(MembershipSummary) workspace_ids = fields.ListField() email = fields.StringField() receives_in_app_notifications = fields.BoolField()
class Epic(Instantiated, PivotalResource): project_id = fields.IntField() name = fields.StringField(validators=PostValidators(RequiredOnPost())) label_id = fields.IntField() label = fields.EmbeddedField(Label) description = fields.StringField() comment_ids = fields.ListField() follower_ids = fields.ListField() created_at = fields.DateTimeField() updated_at = fields.DateTimeField() after_id = fields.IntField() before_id = fields.IntField() past_done_story_estimates = fields.FloatField() past_done_stories_count = fields.IntField() past_done_stories_no_point_count = fields.IntField() url = fields.StringField()
class Error(PivotalResource): kind = fields.StringField() code = fields.StringField() error = fields.StringField() requirement = fields.StringField() general_problem = fields.StringField() possible_fix = fields.StringField() validation_errors = fields.ListField(PivotalValidationError) def __str__(self): return "{}".format(self.general_problem or self.error)
class Project(Instantiated, PivotalResource): name = fields.StringField(validators=PostValidators(RequiredOnPost())) version = fields.IntField() iteration_length = fields.IntField() week_start_day = fields.StringField( validators=OneOf('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')) point_scale = fields.StringField() point_scale_is_custom = fields.BoolField() bugs_and_chores_are_estimatable = fields.BoolField() automatic_planning = fields.BoolField() enable_following = fields.BoolField() enable_tasks = fields.BoolField() start_date = fields.DateField() time_zone = fields.EmbeddedField(TimeZone) velocity_averaged_over = fields.IntField() shown_iterations_start_time = fields.DateTimeField() start_time = fields.DateTimeField() number_of_done_iterations_to_show = fields.IntField() has_google_domain = fields.BoolField() description = fields.StringField() profile_content = fields.StringField() enable_incoming_emails = fields.BoolField() initial_velocity = fields.IntField() public = fields.BoolField() atom_enabled = fields.BoolField() current_iteration_number = fields.IntField() current_velocity = fields.IntField() current_volatility = fields.FloatField() account_id = fields.IntField() accounting_type = fields.StringField( validators=OneOf('unbillable', 'billable', 'overhead')) featured = fields.BoolField() story_ids = fields.ListField() epic_ids = fields.ListField() membership_ids = fields.ListField() label_ids = fields.ListField() integration_ids = fields.ListField() iteration_override_numbers = fields.ListField()
class Story(Instantiated, PivotalResource): name = fields.StringField() description = fields.StringField( validators=PostValidators(RequiredOnPost())) story_type = fields.StringField( validators=OneOf('feature', 'bug', 'chore', 'release')) current_state = fields.StringField( validators=OneOf('accepted', 'delivered', 'finished', 'started', 'rejected', 'planned', 'unstarted', 'unscheduled')) estimate = fields.FloatField() accepted_at = fields.DateTimeField() deadline = fields.DateTimeField() requested_by_id = fields.IntField() owner_ids = fields.ListField(int) label_ids = fields.ListField(int) task_ids = fields.ListField(int) follower_ids = fields.ListField(int) comment_ids = fields.ListField(int) before_id = fields.IntField() after_id = fields.IntField() integration_id = fields.IntField() external_id = fields.StringField() url = fields.StringField()
class Task(Instantiated, PivotalResource): story_id = fields.IntField() description = fields.StringField( validators=PostValidators(RequiredOnPost())) complete = fields.BoolField() position = fields.IntField()
class PivotalValidationError(PivotalResource): field = fields.StringField() problem = fields.StringField()
class Label(Instantiated, PivotalResource): project_id = fields.IntField() name = fields.StringField(required=True)
class TimeZone(PivotalResource): olson_name = fields.StringField() offset = fields.StringField() kind = fields.StringField()