Module: TeamworkApi::API::Projects

Included in:
Client
Defined in:
lib/teamwork_api/api/projects.rb

Overview

Client methods for Projects developer.teamwork.com/projects/projects

Constant Summary collapse

OPTIONAL_GET_ATTRIBUTES =
[
  :status,
  :updated_after_date,
  :order_by,
  :created_after_date,
  :created_after_time,
  :cat_id,
  :include_people,
  :include_project_owner,
  :page,
  :page_size,
  :order_mode,
  :only_starred_projects,
  :company_id,
  :project_owner_ids,
  :search_term,
  :get_deleted,
  :include_tags,
  :user_id,
  :updated_after_date_time
].freeze
OPTIONAL_CREATE_ATTRIBUTES =
[
  :description,
  :start_date,
  :end_date,
  :company_id,
  :new_company,
  :'harvest-timers-enabled',
  :tags,
  :reply_by_email_enabled,
  :privacy_enabled
].freeze
OPTIONAL_UPDATE_ATTRIBUTES =
[
  :name,
  :description,
  :start_date,
  :end_date,
  :company_id,
  :new_company,
  :status,
  :'category-id',
  :'harvest-timers-enabled',
  :tags,
  :reply_by_email_enabled,
  :privacy_enabled,
  :'use-tasks',
  :'use-messages',
  :'use-time',
  :'use-risk-register',
  :'use-billing',
  :'use-milestones',
  :'use-files',
  :'use-notebook',
  :'use-links',
  :default_privacy
].freeze

Instance Method Summary collapse

Instance Method Details

#create_project(args) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/teamwork_api/api/projects.rb', line 65

def create_project(args)
  args =
    API.params(args)
       .required(:name)
       .default('category-id': '0')
       .optional(*OPTIONAL_CREATE_ATTRIBUTES)
       .to_h

  response = post 'projects.json', project: args
  response['id']&.to_i
end

#delete_project(project_id) ⇒ Object



95
96
97
# File 'lib/teamwork_api/api/projects.rb', line 95

def delete_project(project_id)
  delete "/projects/#{project_id}.json"
end

#project(project_id, args = {}) ⇒ Object



83
84
85
86
87
# File 'lib/teamwork_api/api/projects.rb', line 83

def project(project_id, args = {})
  args = { project: args } unless args.empty?
  response = get "/projects/#{project_id}.json", args
  response.body['project']
end

#projects(args = {}) ⇒ Object



89
90
91
92
93
# File 'lib/teamwork_api/api/projects.rb', line 89

def projects(args = {})
  args = API.params(args).optional(*OPTIONAL_GET_ATTRIBUTES).to_h
  response = get '/projects.json', args
  response.body['projects']
end

#update_project(project_id, args) ⇒ Object



77
78
79
80
81
# File 'lib/teamwork_api/api/projects.rb', line 77

def update_project(project_id, args)
  args = API.params(args).optional(*OPTIONAL_UPDATE_ATTRIBUTES).to_h

  put "projects/#{project_id}.json", project: args
end