podio 0.8.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +9 -2
- data/README.md +1 -4
- data/examples/oauth_web_flow/Gemfile +4 -0
- data/examples/{sinatra.rb → oauth_web_flow/sinatra.rb} +7 -6
- data/lib/podio.rb +18 -3
- data/lib/podio/active_podio/base.rb +107 -62
- data/lib/podio/client.rb +30 -5
- data/lib/podio/error.rb +22 -10
- data/lib/podio/middleware/error_response.rb +23 -16
- data/lib/podio/middleware/json_response.rb +1 -1
- data/lib/podio/middleware/logger.rb +3 -0
- data/lib/podio/middleware/oauth2.rb +3 -0
- data/lib/podio/models/account_provider.rb +1 -0
- data/lib/podio/models/action.rb +19 -2
- data/lib/podio/models/activation_status.rb +8 -2
- data/lib/podio/models/app_store_category.rb +4 -1
- data/lib/podio/models/app_store_share.rb +29 -16
- data/lib/podio/models/application.rb +57 -2
- data/lib/podio/models/application_email.rb +5 -2
- data/lib/podio/models/application_field.rb +5 -2
- data/lib/podio/models/batch.rb +8 -0
- data/lib/podio/models/by_line.rb +2 -1
- data/lib/podio/models/calendar_event.rb +63 -3
- data/lib/podio/models/calendar_mute.rb +6 -1
- data/lib/podio/models/category.rb +1 -0
- data/lib/podio/models/comment.rb +29 -8
- data/lib/podio/models/condition.rb +8 -0
- data/lib/podio/models/condition_set.rb +40 -0
- data/lib/podio/models/contact.rb +13 -2
- data/lib/podio/models/contract.rb +85 -1
- data/lib/podio/models/contract_event.rb +17 -0
- data/lib/podio/models/contract_price.rb +3 -7
- data/lib/podio/models/contract_price_v2.rb +31 -0
- data/lib/podio/models/contract_user.rb +4 -0
- data/lib/podio/models/conversation.rb +114 -13
- data/lib/podio/models/conversation_event.rb +51 -0
- data/lib/podio/models/conversation_message.rb +2 -1
- data/lib/podio/models/conversation_participant.rb +3 -2
- data/lib/podio/models/date_election.rb +35 -0
- data/lib/podio/models/email_contact.rb +46 -0
- data/lib/podio/models/email_subscription_setting.rb +4 -23
- data/lib/podio/models/embed.rb +4 -4
- data/lib/podio/models/experiment.rb +71 -0
- data/lib/podio/models/external_file.rb +7 -2
- data/lib/podio/models/file_attachment.rb +23 -0
- data/lib/podio/models/form.rb +7 -0
- data/lib/podio/models/friend.rb +12 -0
- data/lib/podio/models/grant.rb +73 -0
- data/lib/podio/models/hook.rb +13 -6
- data/lib/podio/models/importer.rb +3 -0
- data/lib/podio/models/integration.rb +17 -6
- data/lib/podio/models/invoice.rb +30 -0
- data/lib/podio/models/item.rb +81 -14
- data/lib/podio/models/item_diff.rb +9 -5
- data/lib/podio/models/item_field.rb +11 -2
- data/lib/podio/models/item_revision.rb +5 -2
- data/lib/podio/models/linked_account.rb +1 -0
- data/lib/podio/models/live.rb +61 -0
- data/lib/podio/models/net_promoter_score.rb +28 -0
- data/lib/podio/models/notification.rb +9 -4
- data/lib/podio/models/notification_group.rb +5 -2
- data/lib/podio/models/o_auth.rb +4 -2
- data/lib/podio/models/o_auth_client.rb +1 -2
- data/lib/podio/models/organization.rb +22 -10
- data/lib/podio/models/organization_contact.rb +2 -1
- data/lib/podio/models/organization_member.rb +17 -3
- data/lib/podio/models/organization_profile.rb +8 -2
- data/lib/podio/models/pin.rb +27 -0
- data/lib/podio/models/profile.rb +19 -50
- data/lib/podio/models/promotion.rb +91 -0
- data/lib/podio/models/rating.rb +23 -5
- data/lib/podio/models/recurrence.rb +6 -3
- data/lib/podio/models/reference.rb +17 -1
- data/lib/podio/models/reminder.rb +8 -3
- data/lib/podio/models/search.rb +7 -1
- data/lib/podio/models/space.rb +41 -2
- data/lib/podio/models/space_contact.rb +1 -2
- data/lib/podio/models/space_invitation.rb +4 -5
- data/lib/podio/models/space_member.rb +37 -4
- data/lib/podio/models/status.rb +20 -8
- data/lib/podio/models/stream_activity_group.rb +40 -0
- data/lib/podio/models/stream_mute.rb +7 -8
- data/lib/podio/models/stream_object.rb +19 -11
- data/lib/podio/models/subscription.rb +7 -1
- data/lib/podio/models/tag.rb +6 -1
- data/lib/podio/models/tag_search.rb +2 -1
- data/lib/podio/models/task.rb +74 -18
- data/lib/podio/models/task_label.rb +10 -2
- data/lib/podio/models/user.rb +50 -6
- data/lib/podio/models/user_mail.rb +4 -0
- data/lib/podio/models/user_status.rb +7 -0
- data/lib/podio/models/view.rb +27 -7
- data/lib/podio/models/widget.rb +25 -3
- data/lib/podio/version.rb +1 -1
- data/podio.gemspec +13 -10
- data/script/config.example.rb +6 -0
- data/script/referenceGenerator.rb +87 -0
- data/test/active_podio_test.rb +44 -34
- data/test/client_test.rb +13 -2
- metadata +89 -36
- data/lib/podio/middleware/date_conversion.rb +0 -37
- data/lib/podio/models/bulletin.rb +0 -60
- data/lib/podio/models/connection.rb +0 -53
- data/lib/podio/models/news.rb +0 -85
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
# @see https://developers.podio.com/doc/notifications
|
|
1
2
|
class Podio::Notification < ActivePodio::Base
|
|
2
3
|
property :notification_id, :integer
|
|
3
|
-
property :user, :hash
|
|
4
4
|
property :type, :string
|
|
5
5
|
property :viewed_on, :datetime
|
|
6
6
|
property :subscription_id, :integer
|
|
7
7
|
property :created_on, :datetime
|
|
8
8
|
property :data, :hash
|
|
9
9
|
property :starred, :boolean
|
|
10
|
+
property :text, :string
|
|
11
|
+
property :text_short, :string
|
|
10
12
|
|
|
11
13
|
# Only available when getting a single notification
|
|
12
14
|
property :space, :hash
|
|
@@ -18,28 +20,31 @@ class Podio::Notification < ActivePodio::Base
|
|
|
18
20
|
|
|
19
21
|
has_one :created_by, :class => 'ByLine'
|
|
20
22
|
has_one :created_via, :class => 'Via'
|
|
21
|
-
has_one :user, :class => 'User'
|
|
22
23
|
|
|
23
24
|
alias_method :id, :notification_id
|
|
24
25
|
delegate_to_hash :data, :field, :value, :role, :message
|
|
25
|
-
|
|
26
|
+
|
|
26
27
|
class << self
|
|
27
28
|
def find(id)
|
|
28
29
|
member Podio.connection.get("/notification/#{id}").body
|
|
29
30
|
end
|
|
30
31
|
|
|
32
|
+
# @see https://developers.podio.com/doc/notifications/mark-notification-as-viewed-22436
|
|
31
33
|
def mark_as_viewed(id)
|
|
32
34
|
Podio.connection.post("/notification/#{id}/viewed").status
|
|
33
35
|
end
|
|
34
36
|
|
|
37
|
+
# @see https://developers.podio.com/doc/notifications/mark-all-notifications-as-viewed-58099
|
|
35
38
|
def mark_all_as_viewed
|
|
36
39
|
Podio.connection.post("/notification/viewed").status
|
|
37
40
|
end
|
|
38
|
-
|
|
41
|
+
|
|
42
|
+
# @see https://developers.podio.com/doc/notifications/star-notification-295910
|
|
39
43
|
def star(id)
|
|
40
44
|
Podio.connection.post("/notification/#{id}/star").status
|
|
41
45
|
end
|
|
42
46
|
|
|
47
|
+
# @see https://developers.podio.com/doc/notifications/un-star-notification-295911
|
|
43
48
|
def unstar(id)
|
|
44
49
|
Podio.connection.delete("/notification/#{id}/star").status
|
|
45
50
|
end
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
# This class wraps the response from the Get Notifications API call
|
|
2
|
+
# @see https://developers.podio.com/doc/notifications
|
|
2
3
|
class Podio::NotificationGroup < ActivePodio::Base
|
|
3
4
|
property :context, :hash
|
|
4
5
|
property :notifications, :hash
|
|
5
|
-
delegate_to_hash :context, :ref, :data, :comment_count, :link, :space
|
|
6
|
+
delegate_to_hash :context, :ref, :data, :comment_count, :link, :space, :rights
|
|
6
7
|
|
|
7
8
|
class << self
|
|
9
|
+
# @see https://developers.podio.com/doc/notifications/get-notifications-290777
|
|
8
10
|
def find_all(options={})
|
|
9
11
|
list Podio.connection.get { |req|
|
|
10
12
|
req.url('/notification/', options)
|
|
11
13
|
}.body
|
|
12
14
|
end
|
|
13
15
|
|
|
16
|
+
# @see https://developers.podio.com/doc/notifications/get-notification-v2-2973737
|
|
14
17
|
def find(id)
|
|
15
18
|
member Podio.connection.get("/notification/#{id}/v2").body
|
|
16
19
|
end
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
# @see https://developers.podio.com/doc/notifications/mark-notifications-as-viewed-by-ref-553653
|
|
19
22
|
def mark_as_viewed_by_ref(ref_type, ref_id)
|
|
20
23
|
Podio.connection.post("/notification/#{ref_type}/#{ref_id}/viewed").status
|
|
21
24
|
end
|
data/lib/podio/models/o_auth.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
# @see https://developers.podio.com/doc/oauth-authorization
|
|
1
2
|
class Podio::OAuth < ActivePodio::Base
|
|
2
|
-
|
|
3
|
+
|
|
3
4
|
class << self
|
|
4
5
|
def authorize(attributes)
|
|
5
6
|
response = Podio.connection.post do |req|
|
|
@@ -19,6 +20,7 @@ class Podio::OAuth < ActivePodio::Base
|
|
|
19
20
|
response.body
|
|
20
21
|
end
|
|
21
22
|
|
|
23
|
+
# @see https://developers.podio.com/doc/oauth-authorization/get-access-token-22359
|
|
22
24
|
def get_access_token(attributes)
|
|
23
25
|
response = Podio.connection.post do |req|
|
|
24
26
|
req.url "/oauth/token"
|
|
@@ -28,5 +30,5 @@ class Podio::OAuth < ActivePodio::Base
|
|
|
28
30
|
response.body
|
|
29
31
|
end
|
|
30
32
|
end
|
|
31
|
-
|
|
33
|
+
|
|
32
34
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# @see https://developers.podio.com/doc/oauth-authorization
|
|
1
2
|
class Podio::OAuthClient < ActivePodio::Base
|
|
2
3
|
include ActivePodio::Updatable
|
|
3
4
|
|
|
@@ -18,8 +19,6 @@ class Podio::OAuthClient < ActivePodio::Base
|
|
|
18
19
|
self.class.update(self.auth_client_id, attributes)
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
handle_api_errors_for :create, :update # Call must be made after the methods to handle have been defined
|
|
22
|
-
|
|
23
22
|
class << self
|
|
24
23
|
def create(attributes)
|
|
25
24
|
response = Podio.connection.post do |req|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# @see https://developers.podio.com/doc/organizations
|
|
1
2
|
class Podio::Organization < ActivePodio::Base
|
|
2
3
|
include ActivePodio::Updatable
|
|
3
4
|
|
|
@@ -25,11 +26,14 @@ class Podio::Organization < ActivePodio::Base
|
|
|
25
26
|
property :type, :string
|
|
26
27
|
property :segment, :string
|
|
27
28
|
property :segment_size, :integer
|
|
29
|
+
property :grants_count, :integer
|
|
30
|
+
property :allow_add_space, :boolean
|
|
28
31
|
|
|
29
32
|
has_one :created_by, :class => 'ByLine'
|
|
30
33
|
|
|
31
34
|
alias_method :id, :org_id
|
|
32
35
|
|
|
36
|
+
# @see https://developers.podio.com/doc/organizations/add-new-organization-22385
|
|
33
37
|
def create
|
|
34
38
|
attributes = Organization.create(:name => name, :logo => logo, :segment_size => segment_size)
|
|
35
39
|
self.org_id = attributes['org_id']
|
|
@@ -37,13 +41,13 @@ class Podio::Organization < ActivePodio::Base
|
|
|
37
41
|
self.url_label = attributes['url_label']
|
|
38
42
|
end
|
|
39
43
|
|
|
44
|
+
# @see https://developers.podio.com/doc/organizations/update-organization-22386
|
|
40
45
|
def update
|
|
41
46
|
Organization.update(id, {:name => name, :logo => logo, :url_label => url_label, :billing_interval => billing_interval, :segment_size => segment_size})
|
|
42
47
|
end
|
|
43
48
|
|
|
44
|
-
handle_api_errors_for :create, :update # Call must be made after the methods to handle have been defined
|
|
45
|
-
|
|
46
49
|
class << self
|
|
50
|
+
# @see https://developers.podio.com/doc/organizations/update-organization-22386
|
|
47
51
|
def update(id, attributes)
|
|
48
52
|
response = Podio.connection.put do |req|
|
|
49
53
|
req.url "/org/#{id}"
|
|
@@ -56,6 +60,7 @@ class Podio::Organization < ActivePodio::Base
|
|
|
56
60
|
Podio.connection.delete("/org/#{id}").status
|
|
57
61
|
end
|
|
58
62
|
|
|
63
|
+
# @see https://developers.podio.com/doc/organizations/add-new-organization-22385
|
|
59
64
|
def create(attributes)
|
|
60
65
|
response = Podio.connection.post do |req|
|
|
61
66
|
req.url '/org/'
|
|
@@ -65,14 +70,20 @@ class Podio::Organization < ActivePodio::Base
|
|
|
65
70
|
response.body
|
|
66
71
|
end
|
|
67
72
|
|
|
73
|
+
# @see https://developers.podio.com/doc/organizations/get-organization-22383
|
|
68
74
|
def find(id)
|
|
69
75
|
member Podio.connection.get("/org/#{id}").body
|
|
70
76
|
end
|
|
71
77
|
|
|
78
|
+
# @see https://developers.podio.com/doc/organizations/get-organization-by-url-22384
|
|
72
79
|
def find_by_url(url)
|
|
73
80
|
member Podio.connection.get("/org/url?url=#{url}").body
|
|
74
81
|
end
|
|
75
82
|
|
|
83
|
+
def find_by_url_slug(org_slug)
|
|
84
|
+
member Podio.connection.get('/org/url', :org_slug => org_slug).body
|
|
85
|
+
end
|
|
86
|
+
|
|
76
87
|
def validate_url_label(url_label)
|
|
77
88
|
Podio.connection.post { |req|
|
|
78
89
|
req.url '/org/url/validate'
|
|
@@ -80,18 +91,11 @@ class Podio::Organization < ActivePodio::Base
|
|
|
80
91
|
}.body
|
|
81
92
|
end
|
|
82
93
|
|
|
94
|
+
# @see https://developers.podio.com/doc/organizations/get-organizations-22344
|
|
83
95
|
def find_all
|
|
84
96
|
list Podio.connection.get("/org/").body
|
|
85
97
|
end
|
|
86
98
|
|
|
87
|
-
def get_statistics(id)
|
|
88
|
-
Podio.connection.get("/org/#{id}/statistics").body
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def get_member_count(id)
|
|
92
|
-
Podio.connection.get("/org/#{id}/member/count").body
|
|
93
|
-
end
|
|
94
|
-
|
|
95
99
|
def get_login_report(id, options = {})
|
|
96
100
|
Podio.connection.get { |req|
|
|
97
101
|
req.url("/org/#{id}/report/login/", options)
|
|
@@ -114,5 +118,13 @@ class Podio::Organization < ActivePodio::Base
|
|
|
114
118
|
list Podio.connection.get("/app_store/org/").body
|
|
115
119
|
end
|
|
116
120
|
|
|
121
|
+
def get_statistics(id)
|
|
122
|
+
Podio.connection.get("/org/#{id}/statistics/v2").body
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def find_for_user(user_id)
|
|
126
|
+
list Podio.connection.get("/org/user/#{user_id}/").body
|
|
127
|
+
end
|
|
128
|
+
|
|
117
129
|
end
|
|
118
130
|
end
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# Encapsulates a primary contact for an organization, primarily used for billing purposes
|
|
2
|
+
# @see https://developers.podio.com/doc/contacts
|
|
2
3
|
class Podio::OrganizationContact < Podio::Profile
|
|
3
4
|
include ActivePodio::Updatable
|
|
4
5
|
|
|
5
6
|
property :org_id, :integer
|
|
6
7
|
property :attention, :string # The name of the primary organization contact
|
|
7
|
-
|
|
8
|
+
|
|
8
9
|
alias_method :id, :org_id
|
|
9
10
|
|
|
10
11
|
def save
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Encapsulates a user's indirect membership (through spaces) of an organization.
|
|
2
|
+
# @see https://developers.podio.com/doc/organizations
|
|
2
3
|
class Podio::OrganizationMember < ActivePodio::Base
|
|
3
4
|
property :profile, :hash
|
|
4
5
|
property :admin, :boolean
|
|
@@ -9,9 +10,10 @@ class Podio::OrganizationMember < ActivePodio::Base
|
|
|
9
10
|
has_one :contact, :class => 'Contact', :property => :profile
|
|
10
11
|
|
|
11
12
|
delegate :user_id, :mail, :to => :user
|
|
12
|
-
delegate :name, :avatar, :link, :title, :organization, :title_and_org, :default_title, :
|
|
13
|
+
delegate :name, :avatar, :link, :title, :organization, :title_and_org, :default_title, :last_seen_on, :to => :contact
|
|
13
14
|
|
|
14
15
|
class << self
|
|
16
|
+
# @see https://developers.podio.com/doc/organizations/get-organization-members-50661
|
|
15
17
|
def find_all_for_org(org_id, options = {})
|
|
16
18
|
list Podio.connection.get { |req|
|
|
17
19
|
req.url("/org/#{org_id}/member/", options)
|
|
@@ -25,19 +27,30 @@ class Podio::OrganizationMember < ActivePodio::Base
|
|
|
25
27
|
}.body
|
|
26
28
|
end
|
|
27
29
|
|
|
30
|
+
# @see https://developers.podio.com/doc/organizations/get-organization-member-50908
|
|
28
31
|
def find(org_id, user_id)
|
|
29
32
|
member Podio.connection.get("/org/#{org_id}/member/#{user_id}").body
|
|
30
33
|
end
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
# @see https://developers.podio.com/doc/organizations/end-organization-membership-50689
|
|
33
36
|
def delete(org_id, user_id)
|
|
34
37
|
Podio.connection.delete("/org/#{org_id}/member/#{user_id}").status
|
|
35
38
|
end
|
|
36
39
|
|
|
40
|
+
# @see https://developers.podio.com/doc/organizations/end-organization-membership-19410652
|
|
41
|
+
def leave(org_id)
|
|
42
|
+
Podio.connection.post("/org/#{org_id}/leave").status
|
|
43
|
+
end
|
|
44
|
+
|
|
37
45
|
def delete_info(org_id, user_id)
|
|
38
|
-
Podio.connection.get("/org/#{org_id}/member/#{user_id}/end_member_info").body
|
|
46
|
+
result = Podio.connection.get("/org/#{org_id}/member/#{user_id}/end_member_info").body
|
|
47
|
+
%w{ to_promote to_remove to_delete }.each do |type|
|
|
48
|
+
result[type].collect! { |member| self.klass_from_string('SpaceMember').new(member) } if result[type].present?
|
|
49
|
+
end
|
|
50
|
+
result
|
|
39
51
|
end
|
|
40
52
|
|
|
53
|
+
# @see https://developers.podio.com/doc/organizations/add-organization-admin-50854
|
|
41
54
|
def make_admin(org_id, user_id)
|
|
42
55
|
response = Podio.connection.post do |req|
|
|
43
56
|
req.url "/org/#{org_id}/admin/"
|
|
@@ -46,6 +59,7 @@ class Podio::OrganizationMember < ActivePodio::Base
|
|
|
46
59
|
response.status
|
|
47
60
|
end
|
|
48
61
|
|
|
62
|
+
# @see https://developers.podio.com/doc/organizations/remove-organization-admin-50855
|
|
49
63
|
def remove_admin(org_id, user_id)
|
|
50
64
|
Podio.connection.delete("/org/#{org_id}/admin/#{user_id}").status
|
|
51
65
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Encapsulates an organization profile, primarily used for in app store
|
|
2
|
+
# @see https://developers.podio.com/doc/organizations
|
|
2
3
|
class Podio::OrganizationProfile < ActivePodio::Base
|
|
3
4
|
include ActivePodio::Updatable
|
|
4
5
|
|
|
@@ -18,21 +19,23 @@ class Podio::OrganizationProfile < ActivePodio::Base
|
|
|
18
19
|
alias_method :logo, :avatar
|
|
19
20
|
alias_method :logo=, :avatar=
|
|
20
21
|
|
|
22
|
+
# @see https://developers.podio.com/doc/organizations/create-organization-app-store-profile-87819
|
|
21
23
|
def create
|
|
22
24
|
self.class.create(self.org_id, self.attributes)
|
|
23
25
|
end
|
|
24
26
|
|
|
27
|
+
# @see https://developers.podio.com/doc/organizations/update-organization-app-store-profile-87805
|
|
25
28
|
def update
|
|
26
29
|
self.class.update(self.org_id, self.attributes)
|
|
27
30
|
end
|
|
28
31
|
|
|
32
|
+
# @see https://developers.podio.com/doc/organizations/delete-organization-app-store-profile-87808
|
|
29
33
|
def destroy
|
|
30
34
|
self.class.delete(self.org_id)
|
|
31
35
|
end
|
|
32
36
|
|
|
33
|
-
handle_api_errors_for :create, :update # Call must be made after the methods to handle have been defined
|
|
34
|
-
|
|
35
37
|
class << self
|
|
38
|
+
# @see https://developers.podio.com/doc/organizations/get-organization-app-store-profile-87799
|
|
36
39
|
def find(org_id)
|
|
37
40
|
member Podio.connection.get("/org/#{org_id}/appstore").body
|
|
38
41
|
end
|
|
@@ -41,6 +44,7 @@ class Podio::OrganizationProfile < ActivePodio::Base
|
|
|
41
44
|
member Podio.connection.get("/app_store/org/#{url_label}/profile").body
|
|
42
45
|
end
|
|
43
46
|
|
|
47
|
+
# @see https://developers.podio.com/doc/organizations/create-organization-app-store-profile-87819
|
|
44
48
|
def create(org_id, attributes)
|
|
45
49
|
response = Podio.connection.post do |req|
|
|
46
50
|
req.url "/org/#{org_id}/appstore"
|
|
@@ -50,6 +54,7 @@ class Podio::OrganizationProfile < ActivePodio::Base
|
|
|
50
54
|
response.body
|
|
51
55
|
end
|
|
52
56
|
|
|
57
|
+
# @see https://developers.podio.com/doc/organizations/update-organization-app-store-profile-87805
|
|
53
58
|
def update(org_id, attributes)
|
|
54
59
|
response = Podio.connection.put do |req|
|
|
55
60
|
req.url "/org/#{org_id}/appstore"
|
|
@@ -58,6 +63,7 @@ class Podio::OrganizationProfile < ActivePodio::Base
|
|
|
58
63
|
response.status
|
|
59
64
|
end
|
|
60
65
|
|
|
66
|
+
# @see https://developers.podio.com/doc/organizations/delete-organization-app-store-profile-87808
|
|
61
67
|
def delete(org_id)
|
|
62
68
|
Podio.connection.delete("/org/#{org_id}/appstore").status
|
|
63
69
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class Podio::Pin < ActivePodio::Base
|
|
2
|
+
property :title, :string
|
|
3
|
+
property :type, :string
|
|
4
|
+
property :id, :integer
|
|
5
|
+
property :link, :string
|
|
6
|
+
|
|
7
|
+
alias :ref_id :id
|
|
8
|
+
alias :ref_type :type
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
def find_all(query = {})
|
|
12
|
+
Podio.connection.get("/pin/?#{query.to_param}").body.map(&method(:new))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def create(ref_type, ref_id)
|
|
16
|
+
new(Podio.connection.post("/pin/#{ref_type}/#{ref_id}").body)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def reorder(ref_type, ref_id, priority)
|
|
20
|
+
Podio.connection.post("/pin/#{ref_type}/#{ref_id}/reorder", priority)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def delete(ref_type, ref_id)
|
|
24
|
+
Podio.connection.delete("/pin/#{ref_type}/#{ref_id}")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/podio/models/profile.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Serves as the base for Contacts and Organization Contacts
|
|
2
|
+
# @see https://developers.podio.com/doc/contacts
|
|
2
3
|
class Podio::Profile < ActivePodio::Base
|
|
3
4
|
property :profile_id, :integer
|
|
4
5
|
property :name, :string
|
|
@@ -44,30 +45,6 @@ class Podio::Profile < ActivePodio::Base
|
|
|
44
45
|
}.body
|
|
45
46
|
end
|
|
46
47
|
|
|
47
|
-
def top(options={})
|
|
48
|
-
list Podio.connection.get { |req|
|
|
49
|
-
req.url("/contact/top/", options)
|
|
50
|
-
}.body
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def top_for_space(space_id, options={})
|
|
54
|
-
list Podio.connection.get { |req|
|
|
55
|
-
req.url("/contact/space/#{space_id}/top/", options)
|
|
56
|
-
}.body
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def top_for_org(org_id, options={})
|
|
60
|
-
list Podio.connection.get { |req|
|
|
61
|
-
req.url("/contact/org/#{org_id}/top/", options)
|
|
62
|
-
}.body
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def top_for_personal(options={})
|
|
66
|
-
list Podio.connection.get { |req|
|
|
67
|
-
req.url("/contact/personal/top/", options)
|
|
68
|
-
}.body
|
|
69
|
-
end
|
|
70
|
-
|
|
71
48
|
def find(profile_id, options = {})
|
|
72
49
|
result = Podio.connection.get do |req|
|
|
73
50
|
req.url("/contact/#{profile_id}/v2", options)
|
|
@@ -80,8 +57,9 @@ class Podio::Profile < ActivePodio::Base
|
|
|
80
57
|
end
|
|
81
58
|
end
|
|
82
59
|
|
|
60
|
+
# @see https://developers.podio.com/doc/contacts/get-organization-contacts-22401
|
|
83
61
|
def find_all_for_org(org_id, options={})
|
|
84
|
-
options[:
|
|
62
|
+
options[:view] ||= 'full'
|
|
85
63
|
options[:exclude_self] = (options[:exclude_self] == false ? "0" : "1" )
|
|
86
64
|
|
|
87
65
|
list Podio.connection.get { |req|
|
|
@@ -89,8 +67,9 @@ class Podio::Profile < ActivePodio::Base
|
|
|
89
67
|
}.body
|
|
90
68
|
end
|
|
91
69
|
|
|
70
|
+
# @see https://developers.podio.com/doc/contacts/get-space-contacts-22414
|
|
92
71
|
def find_all_for_space(space_id, options={})
|
|
93
|
-
options[:
|
|
72
|
+
options[:view] ||= 'full'
|
|
94
73
|
options[:exclude_self] = (options[:exclude_self] == false ? "0" : "1" )
|
|
95
74
|
|
|
96
75
|
list Podio.connection.get { |req|
|
|
@@ -98,22 +77,7 @@ class Podio::Profile < ActivePodio::Base
|
|
|
98
77
|
}.body
|
|
99
78
|
end
|
|
100
79
|
|
|
101
|
-
|
|
102
|
-
options[:type] ||= 'full'
|
|
103
|
-
|
|
104
|
-
list Podio.connection.get { |req|
|
|
105
|
-
req.url("/contact/connection/#{connection_id}", options)
|
|
106
|
-
}.body
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def find_all_for_connection_type(connection_type, options={})
|
|
110
|
-
options[:type] ||= 'full'
|
|
111
|
-
|
|
112
|
-
list Podio.connection.get { |req|
|
|
113
|
-
req.url("/contact/connection/#{connection_type}", options)
|
|
114
|
-
}.body
|
|
115
|
-
end
|
|
116
|
-
|
|
80
|
+
# @see https://developers.podio.com/doc/contacts/get-linked-account-contacts-6214688
|
|
117
81
|
def find_all_for_linked_account(id, options={})
|
|
118
82
|
list Podio.connection.get { |req|
|
|
119
83
|
req.url("/contact/linked_account/#{id}", options)
|
|
@@ -124,10 +88,17 @@ class Podio::Profile < ActivePodio::Base
|
|
|
124
88
|
member Podio.connection.get("/org/#{org_id}/billing").body
|
|
125
89
|
end
|
|
126
90
|
|
|
91
|
+
# @see https://developers.podio.com/doc/contacts/get-user-contact-60514
|
|
127
92
|
def find_for_user(user_id)
|
|
128
93
|
member Podio.connection.get("/contact/user/#{user_id}").body
|
|
129
94
|
end
|
|
130
95
|
|
|
96
|
+
# @see https://developers.podio.com/doc/contacts/get-user-contact-60514
|
|
97
|
+
def find_all_for_users(user_ids)
|
|
98
|
+
list Podio.connection.get("/contact/user/#{user_ids}").body
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# @see https://developers.podio.com/doc/contacts/get-vcard-213496
|
|
131
102
|
def vcard(profile_id)
|
|
132
103
|
Podio.connection.get("/contact/#{profile_id}/vcard").body
|
|
133
104
|
end
|
|
@@ -136,28 +107,24 @@ class Podio::Profile < ActivePodio::Base
|
|
|
136
107
|
Podio.connection.get("/contact/totals/").body
|
|
137
108
|
end
|
|
138
109
|
|
|
110
|
+
# @see https://developers.podio.com/doc/contacts/get-space-contact-totals-67508
|
|
139
111
|
def totals_by_space_v2(space_id)
|
|
140
112
|
Podio.connection.get("/contact/space/#{space_id}/totals/space").body
|
|
141
113
|
end
|
|
142
114
|
|
|
115
|
+
# @see https://developers.podio.com/doc/contacts/get-contact-totals-60467
|
|
143
116
|
def totals_by_org_and_space
|
|
144
117
|
Podio.connection.get("/contact/totals/v2/").body
|
|
145
118
|
end
|
|
146
119
|
|
|
120
|
+
# @see https://developers.podio.com/doc/contacts/get-skills-1346872
|
|
147
121
|
def skills(options)
|
|
148
122
|
Podio.connection.get { |req|
|
|
149
123
|
req.url("/contact/skill/", options)
|
|
150
124
|
}.body
|
|
151
125
|
end
|
|
152
126
|
|
|
153
|
-
|
|
154
|
-
options[:exclude_self] = (options[:exclude_self] == false ? "0" : "1" )
|
|
155
|
-
|
|
156
|
-
Podio.connection.get { |req|
|
|
157
|
-
req.url("/contact/space/#{space_id}/totals/", options)
|
|
158
|
-
}.body
|
|
159
|
-
end
|
|
160
|
-
|
|
127
|
+
# @see https://developers.podio.com/doc/contacts/create-space-contact-65590
|
|
161
128
|
def create_space_contact(space_id, attributes)
|
|
162
129
|
response = Podio.connection.post do |req|
|
|
163
130
|
req.url "/contact/space/#{space_id}/"
|
|
@@ -167,10 +134,12 @@ class Podio::Profile < ActivePodio::Base
|
|
|
167
134
|
response.body
|
|
168
135
|
end
|
|
169
136
|
|
|
137
|
+
# @see https://developers.podio.com/doc/contacts/delete-contact-s-60560
|
|
170
138
|
def delete_contact(profile_id)
|
|
171
139
|
Podio.connection.delete("/contact/#{profile_id}").body
|
|
172
140
|
end
|
|
173
141
|
|
|
142
|
+
# @see https://developers.podio.com/doc/contacts/update-contact-60556
|
|
174
143
|
def update_contact(profile_id, attributes)
|
|
175
144
|
response = Podio.connection.put do |req|
|
|
176
145
|
req.url "/contact/#{profile_id}"
|