calendlyr 0.6.0 → 0.7.1

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.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +7 -8
  3. data/CHANGELOG.md +7 -2
  4. data/README.md +59 -140
  5. data/calendlyr.gemspec +0 -1
  6. data/docs/resources/activity_log/list_activity_log_entries.md +34 -0
  7. data/docs/resources/availabilities/availability_rule.md +5 -0
  8. data/docs/resources/availabilities/user_availability_schedule.md +50 -0
  9. data/docs/resources/availabilities/user_busy_time.md +28 -0
  10. data/docs/resources/data_compliance.md +19 -0
  11. data/docs/resources/event_types/available_time.md +21 -0
  12. data/docs/resources/event_types/event_type.md +55 -0
  13. data/docs/resources/event_types/membership.md +29 -0
  14. data/docs/resources/event_types/profile.md +13 -0
  15. data/docs/resources/events/cancellation.md +18 -0
  16. data/docs/resources/events/event.md +62 -0
  17. data/docs/resources/events/guest.md +5 -0
  18. data/docs/resources/events/invitee.md +28 -0
  19. data/docs/resources/events/invitee_no_show.md +49 -0
  20. data/docs/resources/groups/group.md +56 -0
  21. data/docs/resources/groups/relationship.md +54 -0
  22. data/docs/resources/organizations/invitation.md +65 -0
  23. data/docs/resources/organizations/membership.md +58 -0
  24. data/docs/resources/organizations/organization.md +149 -0
  25. data/docs/resources/pagination.md +21 -0
  26. data/docs/resources/routing_forms/routing_form.md +48 -0
  27. data/docs/resources/routing_forms/submission.md +40 -0
  28. data/docs/resources/scheduling_link.md +26 -0
  29. data/docs/resources/share.md +28 -0
  30. data/docs/resources/user.md +111 -0
  31. data/docs/resources/webhooks/invitee_payload.md +42 -0
  32. data/docs/resources/webhooks/payload.md +5 -0
  33. data/docs/resources/webhooks/subscription.md +96 -0
  34. data/lib/calendlyr/client.rb +18 -2
  35. data/lib/calendlyr/collection.rb +2 -2
  36. data/lib/calendlyr/error.rb +37 -1
  37. data/lib/calendlyr/object.rb +6 -2
  38. data/lib/calendlyr/objects/activity_log.rb +11 -0
  39. data/lib/calendlyr/objects/availabilities/rule.rb +4 -0
  40. data/lib/calendlyr/objects/availabilities/user_busy_time.rb +7 -0
  41. data/lib/calendlyr/objects/availabilities/user_schedule.rb +13 -0
  42. data/lib/calendlyr/objects/event.rb +11 -0
  43. data/lib/calendlyr/objects/event_type.rb +15 -0
  44. data/lib/calendlyr/objects/event_types/available_time.rb +4 -0
  45. data/lib/calendlyr/objects/event_types/membership.rb +11 -0
  46. data/lib/calendlyr/objects/event_types/profile.rb +7 -0
  47. data/lib/calendlyr/objects/events/cancellation.rb +4 -0
  48. data/lib/calendlyr/objects/events/guest.rb +4 -0
  49. data/lib/calendlyr/objects/events/invitee.rb +11 -0
  50. data/lib/calendlyr/objects/events/invitee_no_show.rb +7 -0
  51. data/lib/calendlyr/objects/group.rb +15 -0
  52. data/lib/calendlyr/objects/groups/relationship.rb +15 -0
  53. data/lib/calendlyr/objects/organization.rb +67 -0
  54. data/lib/calendlyr/objects/organizations/invitation.rb +15 -0
  55. data/lib/calendlyr/objects/organizations/membership.rb +15 -0
  56. data/lib/calendlyr/objects/routing_form.rb +11 -0
  57. data/lib/calendlyr/objects/routing_forms/submission.rb +7 -0
  58. data/lib/calendlyr/objects/scheduling_link.rb +9 -0
  59. data/lib/calendlyr/objects/share.rb +9 -0
  60. data/lib/calendlyr/objects/user.rb +31 -0
  61. data/lib/calendlyr/objects/webhooks/invitee_payload.rb +15 -0
  62. data/lib/calendlyr/objects/webhooks/payload.rb +4 -0
  63. data/lib/calendlyr/objects/webhooks/subscription.rb +23 -0
  64. data/lib/calendlyr/resource.rb +2 -2
  65. data/lib/calendlyr/resources/availability.rb +19 -0
  66. data/lib/calendlyr/resources/data_compliance.rb +4 -0
  67. data/lib/calendlyr/resources/event.rb +40 -0
  68. data/lib/calendlyr/resources/event_type.rb +28 -0
  69. data/lib/calendlyr/resources/group.rb +22 -0
  70. data/lib/calendlyr/resources/organization.rb +40 -0
  71. data/lib/calendlyr/resources/outgoing_communication.rb +8 -0
  72. data/lib/calendlyr/resources/routing_form.rb +22 -0
  73. data/lib/calendlyr/resources/{scheduling_links.rb → scheduling_link.rb} +2 -2
  74. data/lib/calendlyr/resources/share.rb +8 -0
  75. data/lib/calendlyr/resources/user.rb +11 -0
  76. data/lib/calendlyr/resources/webhook.rb +25 -0
  77. data/lib/calendlyr/version.rb +1 -1
  78. data/lib/calendlyr.rb +70 -18
  79. data/test/calendlyr/objects/activity_log_test.rb +26 -0
  80. data/test/calendlyr/objects/availabilities/rule_test.rb +24 -0
  81. data/test/calendlyr/objects/availabilities/user_busy_time_test.rb +21 -0
  82. data/test/calendlyr/objects/availabilities/user_schedule_test.rb +26 -0
  83. data/test/calendlyr/objects/event_test.rb +32 -0
  84. data/test/calendlyr/objects/event_type_test.rb +43 -0
  85. data/test/calendlyr/objects/event_types/available_time_test.rb +20 -0
  86. data/test/calendlyr/objects/event_types/membership_test.rb +32 -0
  87. data/test/calendlyr/objects/event_types/profile_test.rb +23 -0
  88. data/test/calendlyr/objects/events/cancellation_test.rb +16 -0
  89. data/test/calendlyr/objects/events/guest_test.rb +16 -0
  90. data/test/calendlyr/objects/events/invitee_no_show_test.rb +23 -0
  91. data/test/calendlyr/objects/events/invitee_test.rb +35 -0
  92. data/test/calendlyr/objects/group_test.rb +40 -0
  93. data/test/calendlyr/objects/groups/relationship_test.rb +43 -0
  94. data/test/calendlyr/objects/organization_test.rb +157 -0
  95. data/test/calendlyr/objects/organizations/invitation_test.rb +34 -0
  96. data/test/calendlyr/objects/organizations/membership_test.rb +38 -0
  97. data/test/calendlyr/objects/routing_form_test.rb +26 -0
  98. data/test/calendlyr/objects/routing_forms/submission_test.rb +22 -0
  99. data/test/calendlyr/objects/scheduling_link_test.rb +17 -0
  100. data/test/calendlyr/objects/share_test.rb +19 -0
  101. data/test/calendlyr/objects/user_test.rb +81 -0
  102. data/test/calendlyr/objects/webhooks/invite_payload_test.rb +42 -0
  103. data/test/calendlyr/objects/webhooks/payload_test.rb +16 -0
  104. data/test/calendlyr/objects/webhooks/subscription_test.rb +42 -0
  105. data/test/calendlyr/resource_test.rb +12 -3
  106. data/test/calendlyr/resources/availabilities/user_busy_times_test.rb +31 -0
  107. data/test/calendlyr/resources/availabilities/user_schedules_test.rb +37 -0
  108. data/test/calendlyr/resources/data_compliance_test.rb +11 -0
  109. data/test/calendlyr/resources/event_types/membership_test.rb +22 -0
  110. data/test/calendlyr/resources/event_types_test.rb +55 -10
  111. data/test/calendlyr/resources/events/invitee_test.rb +31 -0
  112. data/test/calendlyr/resources/events_test.rb +22 -10
  113. data/test/calendlyr/resources/groups_test.rb +26 -0
  114. data/test/calendlyr/resources/organizations_test.rb +36 -100
  115. data/test/calendlyr/resources/outgoing_communications_test.rb +16 -0
  116. data/test/calendlyr/resources/scheduling_links_test.rb +1 -1
  117. data/test/calendlyr/resources/users_test.rb +9 -33
  118. data/test/calendlyr/resources/webhooks_test.rb +22 -13
  119. data/test/fixtures/activity_log/list.json +38 -0
  120. data/test/fixtures/availabilities/user_busy_times_list.json +39 -0
  121. data/test/fixtures/availabilities/user_schedules_list.json +93 -0
  122. data/test/fixtures/availabilities/user_schedules_retrieve.json +22 -0
  123. data/test/fixtures/data_compliance/delete_scheduled_event_data.json +1 -0
  124. data/test/fixtures/event_invitees/list.json +6 -6
  125. data/test/fixtures/event_invitees/retrieve.json +3 -3
  126. data/test/fixtures/event_type_available_times/list.json +22 -0
  127. data/test/fixtures/event_type_hosts/list.json +76 -0
  128. data/test/fixtures/event_types/create_one_off.json +45 -0
  129. data/test/fixtures/event_types/list.json +18 -4
  130. data/test/fixtures/event_types/retrieve.json +13 -2
  131. data/test/fixtures/events/cancel_invitee.json +8 -0
  132. data/test/fixtures/events/create_invitee_no_show.json +7 -0
  133. data/test/fixtures/events/delete_invitee_no_show.json +1 -0
  134. data/test/fixtures/events/retrieve_invitee_no_show.json +7 -0
  135. data/test/fixtures/group_relationships/list.json +83 -0
  136. data/test/fixtures/group_relationships/retrieve.json +29 -0
  137. data/test/fixtures/groups/list.json +19 -0
  138. data/test/fixtures/groups/retrieve.json +9 -0
  139. data/test/fixtures/objects/activity_log.json +24 -0
  140. data/test/fixtures/objects/availabilities/rule.json +10 -0
  141. data/test/fixtures/objects/availabilities/user_busy_time.json +10 -0
  142. data/test/fixtures/objects/availabilities/user_schedule.json +69 -0
  143. data/test/fixtures/objects/availability_rule.json +10 -0
  144. data/test/fixtures/objects/event.json +36 -0
  145. data/test/fixtures/objects/event_type.json +91 -0
  146. data/test/fixtures/objects/event_type_host.json +65 -0
  147. data/test/fixtures/objects/event_types/available_time.json +6 -0
  148. data/test/fixtures/objects/event_types/membership.json +65 -0
  149. data/test/fixtures/objects/event_types/profile.json +5 -0
  150. data/test/fixtures/objects/events/cancellation.json +6 -0
  151. data/test/fixtures/objects/events/guest.json +5 -0
  152. data/test/fixtures/objects/events/invitee.json +46 -0
  153. data/test/fixtures/objects/events/invitee_no_show.json +5 -0
  154. data/test/fixtures/objects/group.json +7 -0
  155. data/test/fixtures/objects/groups/relationship.json +27 -0
  156. data/test/fixtures/objects/organization.json +8 -0
  157. data/test/fixtures/objects/organizations/invitation.json +10 -0
  158. data/test/fixtures/objects/organizations/membership.json +18 -0
  159. data/test/fixtures/objects/routing_form.json +28 -0
  160. data/test/fixtures/objects/routing_forms/submission.json +27 -0
  161. data/test/fixtures/objects/scheduling_links/event_type.json +5 -0
  162. data/test/fixtures/objects/share.json +43 -0
  163. data/test/fixtures/objects/user.json +13 -0
  164. data/test/fixtures/objects/webhooks/invite_payload.json +83 -0
  165. data/test/fixtures/objects/webhooks/payload.json +66 -0
  166. data/test/fixtures/objects/webhooks/subscription.json +15 -0
  167. data/test/fixtures/organization_memberships/list.json +29 -0
  168. data/test/fixtures/organization_memberships/retrieve.json +20 -0
  169. data/test/fixtures/organizations/list_invitations.json +4 -4
  170. data/test/fixtures/organizations/list_memberships.json +12 -9
  171. data/test/fixtures/organizations/retrieve_invitation.json +3 -3
  172. data/test/fixtures/organizations/retrieve_membership.json +3 -3
  173. data/test/fixtures/outgoing_communications/list.json +26 -0
  174. data/test/fixtures/resources/401.json +2 -2
  175. data/test/fixtures/resources/403.json +1 -1
  176. data/test/fixtures/resources/403_payment_required.json +4 -0
  177. data/test/fixtures/resources/424.json +4 -0
  178. data/test/fixtures/routing_forms/list.json +39 -0
  179. data/test/fixtures/routing_forms/list_routing_form_submission.json +38 -0
  180. data/test/fixtures/routing_forms/retrieve.json +30 -0
  181. data/test/fixtures/routing_forms/retrieve_routing_form_submission.json +29 -0
  182. data/test/fixtures/shares/create.json +45 -0
  183. data/test/fixtures/user_availability_schedules/list.json +93 -0
  184. data/test/fixtures/user_availability_schedules/retrieve.json +22 -0
  185. data/test/fixtures/user_busy_times/list.json +39 -0
  186. data/test/fixtures/users/reload.json +5 -4
  187. data/test/fixtures/users/retrieve.json +5 -4
  188. data/test/fixtures/webhooks/create.json +4 -4
  189. data/test/fixtures/webhooks/list.json +4 -4
  190. data/test/fixtures/webhooks/retrieve.json +4 -4
  191. data/test/fixtures/webhooks/sample.json +105 -0
  192. metadata +159 -62
  193. data/lib/calendlyr/objects/event_invitees.rb +0 -4
  194. data/lib/calendlyr/objects/event_types.rb +0 -4
  195. data/lib/calendlyr/objects/events.rb +0 -4
  196. data/lib/calendlyr/objects/invitations.rb +0 -11
  197. data/lib/calendlyr/objects/memberships.rb +0 -7
  198. data/lib/calendlyr/objects/organizations.rb +0 -35
  199. data/lib/calendlyr/objects/scheduling_links.rb +0 -4
  200. data/lib/calendlyr/objects/users.rb +0 -19
  201. data/lib/calendlyr/objects/webhooks.rb +0 -11
  202. data/lib/calendlyr/resources/event_invitees.rb +0 -12
  203. data/lib/calendlyr/resources/event_types.rb +0 -12
  204. data/lib/calendlyr/resources/events.rb +0 -12
  205. data/lib/calendlyr/resources/organizations.rb +0 -33
  206. data/lib/calendlyr/resources/users.rb +0 -11
  207. data/lib/calendlyr/resources/webhooks.rb +0 -21
  208. data/test/calendlyr/resources/event_invitees_test.rb +0 -29
  209. data/test/fixtures/resources/409.json +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4dba013e04be70a3fdefdae9d2457b5f14b22d8cfd253b6b9247237b1a33aec6
4
- data.tar.gz: 9900aa135496d99c7e6e1a13071e2b7366153f9d47db00d5265ac96b61a029dc
3
+ metadata.gz: 4e919a79ee8a607c497ff0e9b7a3dbf8e035d31c2c1687303806c5fd80de1f55
4
+ data.tar.gz: adf1ff59d69fdcf9c6e34804b7d352d27e499a62765d488ee9acf9418ed997e3
5
5
  SHA512:
6
- metadata.gz: 165450520bdd93a7e6f30566035db95ff2bd99b764bd86c1ea44e52e90cdf398636791e49f7829dbbd238ef966cf6e09562f4b2fed0149985152cc11cc81b13b
7
- data.tar.gz: 3885225e6feaea75a074f868ae3ad321c33a4c6413455ee9c10a16ba186e7144972391a20a125804f623ba9de92d69164560701fed6815e9fea9d9b1ce8f7f7c
6
+ metadata.gz: 7dbea6a806ad7cc8ce2e661d1af464d184d54cfbba44dae35c33d3e7a07e67c58a7f7fd8c6c33fc08b0663cef10d35fc69f442bc964b7eb0d28f6541137cbb49
7
+ data.tar.gz: 12a946f4b07d17598560d3307e2c18acabc39714484b934af3aa46a764ea40e5a2cf7f8ec4cbc3ff291ab5f04264f82b873b24dec11390213d17f24e1169d93a
@@ -1,21 +1,20 @@
1
1
  name: Tests
2
2
 
3
3
  on:
4
- pull_request:
5
- branches:
6
- - "*"
7
4
  push:
8
- branches:
9
- - master
5
+ branches: [master]
6
+ pull_request:
7
+ branches: "*"
8
+
10
9
  jobs:
11
10
  tests:
12
11
  runs-on: ubuntu-latest
13
12
  strategy:
14
13
  matrix:
15
- ruby: ["2.5", "2.6", "2.7", "3.0"]
14
+ ruby: ["2.5", "2.6", "2.7", "3.0", "3.2"]
16
15
 
17
16
  steps:
18
- - uses: actions/checkout@master
17
+ - uses: actions/checkout@v4
19
18
 
20
19
  - name: Set up Ruby
21
20
  uses: ruby/setup-ruby@v1
@@ -31,4 +30,4 @@ jobs:
31
30
  run: |
32
31
  bundle exec rake test
33
32
  env:
34
- CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
33
+ CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
data/CHANGELOG.md CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [0.6.0]
5
+ ## [0.7.1]
6
+ * Adding support for 429 responses from Calendly API
7
+
8
+ [0.7.1]: https://github.com/araluce/calendlyr/compare/v0.7.0...v0.7.1
9
+
10
+ ## [0.7.0]
6
11
  * First real usable release :tada:
7
12
 
8
- [0.6.0]: https://github.com/araluce/calendlyr/compare/v0.1.0...v0.6.0
13
+ [0.7.0]: https://github.com/araluce/calendlyr/compare/v0.1.0...v0.7.0
data/README.md CHANGED
@@ -1,28 +1,30 @@
1
1
  [![](https://img.shields.io/github/license/araluce/calendlyr)](https://github.com/araluce/calendlyr/blob/master/LICENSE.txt)
2
2
  [![](https://github.com/araluce/calendlyr/actions/workflows/ci.yml/badge.svg)](https://github.com/araluce/calendlyr/actions)
3
3
  [![codecov](https://codecov.io/gh/araluce/calendlyr/branch/master/graph/badge.svg?token=YSUU4PHM6Y)](https://codecov.io/gh/araluce/calendlyr)
4
+ ![example workflow](https://github.com/araluce/calendlyr/actions/workflows/ci.yml/badge.svg)
4
5
  [![Gem Version](https://badge.fury.io/rb/calendlyr.svg)](https://badge.fury.io/rb/calendlyr)
6
+ ![Gem Downloads (for specified version)](https://img.shields.io/gem/dv/calendlyr/0.7.0)
5
7
 
6
- # Calendly API Rubygem LITE version
8
+ # Calendly API Rubygem
7
9
 
8
- Easy and complete rubygem for [Calendly](https://calendly.com/). Currently supports [API v2](https://calendly.stoplight.io/docs/api-docs).
10
+ Easy and comprehensive rubygem for [Calendly](https://calendly.com/). Currently supports [API v2](https://calendly.stoplight.io/docs/api-docs).
9
11
 
10
- Just needed a Personal Access Token.
11
-
12
- > If you need a Oauth authentication maybe you need [calendly-api-ruby-client](https://github.com/koshilife/calendly-api-ruby-client)
12
+ You just need a Personal Access Token.
13
13
 
14
14
  ## Dependencies
15
15
 
16
16
  No dependencies :tada:
17
17
 
18
- We know about the importance of not add dependencies that you don't want.
18
+ We understand the importance of not adding unwanted dependencies.
19
+
20
+ ## 📚 Docs
19
21
 
20
- ## Installation
22
+ ### Installation
21
23
 
22
24
  Add this line to your application's Gemfile:
23
25
 
24
26
  ```ruby
25
- gem 'calendlyr'
27
+ gem 'calendlyr', '0.7.1'
26
28
  ```
27
29
 
28
30
  And then execute:
@@ -33,141 +35,58 @@ Or install it yourself as:
33
35
 
34
36
  $ gem install calendlyr
35
37
 
36
- ## Usage
38
+ ### Usage
37
39
 
38
- To access the API, you'll need to create a `Calendlyr::Client` and pass in your token. You can generate your Personal Access Token at [https://calendly.com/integrations/api_webhooks](https://calendly.com/integrations/api_webhooks)
40
+ To access the API, you'll need to create a `Calendlyr::Client` and provide your token. You can generate your Personal Access Token at [https://calendly.com/integrations/api_webhooks](https://calendly.com/integrations/api_webhooks)
39
41
 
40
42
  ```ruby
41
43
  client = Calendlyr::Client.new(token: ENV["CALENDLY_TOKEN"])
42
44
  ```
43
45
 
44
- The client then gives you access to each of the resources.
45
-
46
- ## Resources
47
-
48
- The gem maps as closely as we can to the Calendly API so you can easily convert API examples to gem code.
49
-
50
- Responses are created as objects like `Calendlyr::Event`. Having types like `Calendlyr::User` is handy for understanding what type of object you're working with. They're built using OpenStruct so you can easily access data in a Ruby-ish way.
51
-
52
- ##### Pagination
53
-
54
- `collection` endpoints return pages of results. The result object will have a `data` key to access the results, as well as pagination like `next_page` for retrieving the next pages. You may also specify the
55
-
56
- ```ruby
57
- results = client.me.events(count: 5)
58
- #=> Calendlyr::Collection
59
-
60
- results.count
61
- #=> 5
62
-
63
- results.data
64
- #=> [#<Calendlyr::Event>, #<Calendlyr::Event>]
65
-
66
- results.next_page_token
67
- #=> "KfKBetd7bS0wsFINjYky9mp8ZJXv76aL"
68
-
69
- # Retrieve the next page
70
- client.me.events(count: 5, next_page_token: results.next_page_token)
71
- #=> Calendlyr::Collection
72
- ```
73
-
74
- ### Users
75
- ```ruby
76
- client.me
77
- client.users.me
78
- client.retrieve(user_uuid: "uuid")
79
-
80
- client.organization
81
- #=> #<Calendlyr::Organization>
82
-
83
- client.me.event_types
84
- #=> Calendlyr::Collection @data=[#<Calendlyr::EventType>, #<Calendlyr::EventType>]
85
-
86
- client.me.events
87
- #=> Calendlyr::Collection @data=[#<Calendlyr::Event>, #<Calendlyr::Event>]
88
-
89
- client.me.memberships
90
- #=> Calendlyr::Collection @data=[#<Calendlyr::MemberShip>, #<Calendlyr::MemberShip>]
91
- ```
92
-
93
- #### Me (Cached)
94
-
95
- Probably you need to make many calls through `client.me`, so we decided to not make calls for every `client.me` reference by caching it the first time. However, if you need to reload the content of `me` you can `force_relaod` to force a new call.
96
-
97
- ```ruby
98
- client.me # makes a call and caches the response
99
- client.me # no call, value cached
100
- client.me(force_reload: true) # makes a new call and update cache value
101
- ```
102
-
103
-
104
- ### Event Types
105
- ````ruby
106
- client.event_types.list user_uri: "user_uri", organization_uri: "organization_uri"
107
- client.event_types.retrieve event_type_uuid: "id"
108
- ````
109
-
110
- ### Events
111
- ````ruby
112
- client.events.list user_uri: "user_uri", organization_uri: "organization_uri"
113
- client.events.retrieve event_uuid: "event_uuid"
114
- ````
115
-
116
- ### Event Invitees
117
- ````ruby
118
- client.event_invitees.list event_uuid: "event_uuid"
119
- client.event_invitees.retrieve event_uuid: "event_uuid", invitee_uuid: "invitee_uuid"
120
- ````
121
-
122
- ### Scheduling Links
123
- ````ruby
124
- client.scheduling_links.create owner_uri: "owner_uri", max_event_count: 1, owner_type: "EventType"
125
- ````
126
-
127
- ### Organizations
128
- ````ruby
129
- # Create invitation
130
- client.organizations.invite(organization_uuid: "organization_uuid", email: "test@test.com")
131
- client.organization.invite(email: "test@test.com")
132
- # List invitations
133
- client.organizations.list_invitations(organization_uuid: "organization_uuid")
134
- client.organization.list_invitations
135
- # Get invitation
136
- client.organizations.retrieve_invitation(organization_uuid: "organization_uuid", invitation_uuid: "invitation_uuid")
137
- client.organization.invitation(invitation_uuid: "invitation_uuid")
138
- # Revoke invitation
139
- client.organizations.revoke_invitation(organization_uuid: "organization_uuid", invitation_uuid: "organization_uuid")
140
- client.organization.revoke_invitation(invitation_uuid: "organization_uuid")
141
- invitation = client.organization.invitation(invitation_uuid: "invitation_uuid")
142
- invitation.revoke
143
-
144
- # List memberships
145
- client.organizations.list_memberships
146
- client.organization.memberships
147
- # Get membership
148
- client.organizations.retrieve_membership(membership_uuid: "membership_uuid")
149
- # Remove membership
150
- client.organizations.remove_user(membership_uuid: "membership_uuid")
151
-
152
- client.organization.events
153
-
154
- # List/Creaete webhooks
155
- client.organization.list_webhooks(scope: "scope")
156
- client.organization.create_webhook(url: "post_callback_url", events: ["invitee.canceled", "invitee.created"], scope: "scope")
157
- ````
158
-
159
- ### Webhooks
160
- ```ruby
161
- client.webhooks.list(organization_uri: "organization_uri", scope: "scope")
162
- client.webhooks.create(url: "post_callback_url", events: ["invitee.canceled", "invitee.created"], organization_uri: "organization_uri", scope: "scope")
163
- client.webhooks.retrieve(webhook_uuid: "webhook_uuid")
164
- client.webhooks.delete(webhook_uuid: "webhook_uuid")
165
- ```
166
-
167
- ### Data Compliance
168
- ```ruby
169
- client.data_compliance.delete_invitee_data
170
- ```
46
+ The client then provides access to all of the resources.
47
+
48
+ ### Resources
49
+
50
+ The gem is designed to closely mirror the Calendly API, making it easy to convert API examples into gem code
51
+
52
+ Responses are created as objects, like `Calendlyr::Event`. Having types like `Calendlyr::User` is useful for understanding the type of object you're working with. These objects are built using `OpenStruct`, allowing you to access data in a Ruby-like way.
53
+
54
+ * [Pagination](docs/resources/pagination.md)
55
+ * **Activity Log**
56
+ * [Calendlyr::ActivityLog](docs/resources/activity_log/list_activity_log_entries.md)
57
+ * **Availabilities**
58
+ * [Calendlyr::Availabilities::Rule](docs/resources/availabilities/availability_rule.md)
59
+ * [Calendlyr::Availabilities::UserSchedule](docs/resources/availabilities/user_availability_schedule.md)
60
+ * [Calendlyr::Availabilities::UserBusyTime](docs/resources/availabilities/user_busy_time.md)
61
+ * [Data Compliance](docs/resources/data_compliance.md)
62
+ * **Event Types**
63
+ * [Calendlyr::EventType](docs/resources/event_types/event_type.md)
64
+ * [Calendlyr::EventTypes::AvailableTime](docs/resources/event_types/available_time.md)
65
+ * [Calendlyr::EventTypes::Membership](docs/resources/event_types/membership.md)
66
+ * [Calendlyr::EventTypes::Profile](docs/resources/event_types/profile.md)
67
+ * **Groups**
68
+ * [Calendlyr::Group](docs/resources/groups/group.md)
69
+ * [Calendlyr::Groups::Relationship](docs/resources/groups/relationship.md)
70
+ * **Organizations**
71
+ * [Calendlyr::Organization](docs/resources/organizations/organization.md)
72
+ * [Calendlyr::Organizations::Invitation](docs/resources/organizations/invitation.md)
73
+ * [Calendlyr::Organizations::Membership](docs/resources/organizations/membership.md)
74
+ * **Routing Forms**
75
+ * [Calendlyr::RoutingForm](docs/resources/routing_forms/routing_form.md)
76
+ * [Calendlyr::RoutingForms::Submission](docs/resources/routing_forms/submission.md)
77
+ * **Schedule Events**
78
+ * [Calendlyr::Event](docs/resources/events/event.md)
79
+ * [Calendlyr::Events::Cancellation](docs/resources/events/cancellation.md)
80
+ * [Calendlyr::Events::Guest](docs/resources/events/guest.md)
81
+ * [Calendlyr::Events::Invitee](docs/resources/events/invitee.md)
82
+ * [Calendlyr::Events::InviteeNoShow](docs/resources/events/invitee_no_show.md)
83
+ * [Scheduled Links](docs/resources/scheduling_link.md)
84
+ * [Shares](docs/resources/share.md)
85
+ * [Users](docs/resources/user.md)
86
+ * **Webhooks**
87
+ * [Calendlyr::Webhooks::Subscription](docs/resources/webhooks/subscription.md)
88
+ * [Calendlyr::Webhooks::Payload](docs/resources/webhooks/payload.md)
89
+ * [Calendlyr::Webhooks::InviteePayload](docs/resources/webhooks/invitee_payload.md)
171
90
 
172
91
  ## Contributing
173
92
 
@@ -177,10 +96,10 @@ client.data_compliance.delete_invitee_data
177
96
  4. Push to the branch (`git push origin my-new-feature`)
178
97
  5. Create a new Pull Request
179
98
 
180
- When adding resources, add to the list of resources in lib/calendlyr. Additionally, write a spec and add it to the list in the README.
99
+ When adding resources, update the list of resources in `lib/calendlyr`. Additionally, write a spec and include it in the list in the README
181
100
 
182
101
  ## Thanks
183
102
 
184
- Many thanks [@markets](https://github.com/markets) (our contributor in the shadows) for all comments, details and tips for this rubygem project and for made me grow professionally in my day by day :raised_hands:
103
+ Many thanks to[@markets](https://github.com/markets) (our behind-the-scenes contributor) for all the comments, insights, and tips on this Ruby gem project, and for helping me grow professionally day by day :raised_hands:
185
104
 
186
- Thanks [@excid3](https://github.com/excid3) and his [Vultr.rb](https://github.com/excid3/vultr.rb) rubygem project.
105
+ Thanks also to [@excid3](https://github.com/excid3) and his [Vultr.rb](https://github.com/excid3/vultr.rb) rubygem project.
data/calendlyr.gemspec CHANGED
@@ -15,7 +15,6 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
18
  spec.require_paths = ["lib"]
20
19
 
21
20
  spec.add_development_dependency "rake", "~> 12.0"
@@ -0,0 +1,34 @@
1
+ # List Activity Log Entries Calendlyr::ActivityLog
2
+
3
+ This endpoint requires an Enterprise subscription.
4
+
5
+ ## Client requests
6
+
7
+ ### List
8
+
9
+ Returns a list of activity log entries
10
+
11
+ Visit official [API Doc](https://developer.calendly.com/api-docs/d37c7f031f339-list-activity-log-entries)
12
+
13
+ For the example bellow we will use only required parameters, but you can use any other parameter as well.
14
+
15
+ ```ruby
16
+ client.organizations.activity_log(organization: `organization_uri`)
17
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::ActivityLog, ...], @client=#<Calendlyr::Client>>
18
+ ```
19
+
20
+ ## Object methods
21
+
22
+ ### Associated Organization
23
+
24
+ ```ruby
25
+ user_busy_time.associated_organization
26
+ #=> #<Calendlyr::Organization>
27
+ ```
28
+
29
+ ### Associated Actor
30
+
31
+ ```ruby
32
+ user_busy_time.associated_actor
33
+ #=> #<Calendlyr::User>
34
+ ```
@@ -0,0 +1,5 @@
1
+ # Availability Rule Calendlyr::Availabilities::Rule
2
+
3
+ The rules for an availability schedule.
4
+
5
+ Visit official [API Doc](https://developer.calendly.com/api-docs/3546c792f5695-availability-rule)
@@ -0,0 +1,50 @@
1
+ # User Availability Schedule Calendlyr::Availabilities::UserSchedule
2
+
3
+ The availability schedule set by the user.
4
+
5
+ Visit official [API Doc](https://developer.calendly.com/api-docs/008bd39518269-user-availability-schedule)
6
+
7
+ ## Client requests
8
+
9
+ ### Retrieve
10
+
11
+ This will return the availability schedule of the given UUID.See [official API doc](https://developer.calendly.com/api-docs/3b1c2d5f97b5c-get-user-availability-schedule)
12
+
13
+ ```ruby
14
+ client.availabilities.retrieve_user_schedule(uuid: @uuid)
15
+ #=> #<Calendlyr::Availabilities::UserSchedule uri="https://api.calendly.com/user_availability_schedule/abc123", default=true, name="Working Hours", user="https://api.calendly.com/users/abc123", timezone="America/New_York", rules=[#<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="09:30">], wday="sunday", date="2022-12-31">], client=#<Calendlyr::Client>, uuid="abc123">
16
+ ```
17
+
18
+ ### List
19
+
20
+ Return the availability schedules of the given user. See [official API doc](https://developer.calendly.com/api-docs/8098de44af94c-list-user-availability-schedules)
21
+
22
+ ```ruby
23
+ client.availabilities.list_user_schedules(user: @user)
24
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::Availabilities::UserSchedule uri="https://api.calendly.com/user_availability_schedule/abc123", default=true, name="Working Hours", user="https://api.calendly.com/users/abc123", timezone="America/New_York", rules=[#<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="09:30">], wday="sunday", date="2022-12-31">], client=#<Calendlyr::Client>, uuid="abc123">, #<Calendlyr::Availabilities::UserSchedule uri="https://api.calendly.com/user_availability_schedule/abc456", default=false, name="Evening Hours", user="https://api.calendly.com/users/abc123", timezone="America/New_York", rules=[#<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="monday">, #<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="tuesday">, #<OpenStruct type="wday", intervals=[], wday="wednesday">, #<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="thursday">, #<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="friday">, #<OpenStruct type="wday", intervals=[], wday="saturday">, #<OpenStruct type="date", intervals=[#<OpenStruct from="08:30", to="09:30">], date="2028-12-31">], client=#<Calendlyr::Client>, uuid="abc456">], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
25
+ ```
26
+
27
+ #### List on me
28
+
29
+ Use `me` user
30
+
31
+ ```ruby
32
+ client.me.availability_schedules
33
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::Availabilities::UserSchedule uri="https://api.calendly.com/user_availability_schedule/abc123", default=true, name="Working Hours", user="https://api.calendly.com/users/abc123", timezone="America/New_York", rules=[#<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="09:30">], wday="sunday", date="2022-12-31">], client=#<Calendlyr::Client>, uuid="abc123">, #<Calendlyr::Availabilities::UserSchedule uri="https://api.calendly.com/user_availability_schedule/abc456", default=false, name="Evening Hours", user="https://api.calendly.com/users/abc123", timezone="America/New_York", rules=[#<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="monday">, #<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="tuesday">, #<OpenStruct type="wday", intervals=[], wday="wednesday">, #<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="thursday">, #<OpenStruct type="wday", intervals=[#<OpenStruct from="08:30", to="17:00">], wday="friday">, #<OpenStruct type="wday", intervals=[], wday="saturday">, #<OpenStruct type="date", intervals=[#<OpenStruct from="08:30", to="09:30">], date="2028-12-31">], client=#<Calendlyr::Client>, uuid="abc456">], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
34
+ ```
35
+
36
+ ## Object methods
37
+
38
+ ### Associated User
39
+
40
+ ```ruby
41
+ user_schedule.associated_user
42
+ #=> #<Calendlyr::User>
43
+ ```
44
+
45
+ ### Associated Rules
46
+
47
+ ```ruby
48
+ user_schedule.rules
49
+ #=> [#<Calendlyr::Availabilities::Rule>, ...]
50
+ ```
@@ -0,0 +1,28 @@
1
+ # User Busy Time Calendlyr::Availabilities::UserBusyTime
2
+
3
+ An internal or external scheduled event for a given user.
4
+
5
+ Visit official [API Doc](https://developer.calendly.com/api-docs/acae53ca17454-user-busy-time)
6
+
7
+ ## Client requests
8
+
9
+ ### List
10
+
11
+ Visit official [API Doc](https://developer.calendly.com/api-docs/5920076156501-list-user-busy-times)
12
+
13
+ Date range can be no greater than 1 week (7 days).
14
+
15
+ For the example bellow we will use only required parameters, but you can use any other parameter as well.
16
+ ```ruby
17
+ client.availabilities.list_user_busy_times(user: `user_uri`, start_time: `start_time`, end_time: `end_time`)
18
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::Availabilities::UserBusyTime type="calendly", start_time="2020-01-02T20:00:00.000000Z", end_time="2020-01-02T20:30:00.000000Z", buffered_start_time="2020-01-02T19:30:00.000000Z", buffered_end_time="2020-01-02T21:00:00.000000Z", event=#<OpenStruct uri="https://api.calendly.com/scheduled_events/abc123">, client=#<Calendlyr::Client>, uuid=nil>, #<Calendlyr::UserBusyTime type="calendly", start_time="2020-01-05T20:00:00.000000Z", end_time="2020-01-05T20:30:00.000000Z", buffered_start_time="2020-01-05T19:30:00.000000Z", buffered_end_time="2020-01-05T21:00:00.000000Z", event=#<OpenStruct uri="https://api.calendly.com/scheduled_events/abc12345">, client=#<Calendlyr::Client>, uuid=nil>, #<Calendlyr::UserBusyTime type="external", start_time="2020-01-07T20:00:00.000000Z", end_time="2020-01-07T20:30:00.000000Z", client=#<Calendlyr::Client>, uuid=nil>], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
19
+ ```
20
+
21
+ ## Object methods
22
+
23
+ ### Associated Event
24
+
25
+ ```ruby
26
+ user_busy_time.associated_event
27
+ #=> #<Calendlyr::Event>
28
+ ```
@@ -0,0 +1,19 @@
1
+ # Data Compliance
2
+
3
+ ## Delete Invitee Data
4
+
5
+ Remove invitee data from all previously booked events in your organization..
6
+ Visit official [API Doc](https://developer.calendly.com/api-docs/4cf896120a018-delete-invitee-data)
7
+
8
+ ```ruby
9
+ client.data_compliance.delete_invitee_data(emails: %w[test@email.org test2@email.org])
10
+ ```
11
+
12
+ ## Delete Scheduled Event Data
13
+
14
+ Remove scheduled events data within a time range for your organization.
15
+ Visit official [API Doc](https://developer.calendly.com/api-docs/fc9211ad9b551-delete-scheduled-event-data)
16
+
17
+ ```ruby
18
+ client.data_compliance.delete_scheduled_event_data(start_time: "2019-01-02T03:04:05.678123Z", end_time: "2021-01-01T02:04:05.678123Z")
19
+ ```
@@ -0,0 +1,21 @@
1
+ # Available Time Calendlyr::EventTypes::AvailableTime
2
+
3
+ An available meeting time slot for the given event type.
4
+
5
+ Visit official [API Doc](https://developer.calendly.com/api-docs/2d8d322931358-event-type-available-time)
6
+
7
+ ## Client requests
8
+
9
+ ### List
10
+ Returns a list of available times for an event type within a specified date range.
11
+
12
+ Date range can be no greater than 1 week (7 days).
13
+
14
+ For the examples bellow we will use only required parameters, but you can use any other parameter as well.
15
+
16
+ Visit official [API Doc](https://developer.calendly.com/api-docs/6a1be82aef359-list-event-type-available-times)
17
+
18
+ ```ruby
19
+ client.event_types.list_available_times(event_type, event_type, start_time: start_time, end_time: end_time)
20
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::EventTypes::AvailableTime>, ...], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
21
+ ```
@@ -0,0 +1,55 @@
1
+ # Event Type Calendlyr::EventType
2
+
3
+ A configuration for an Event.
4
+
5
+ Visit official [API Doc](https://developer.calendly.com/api-docs/f3185c91567db-event-type)
6
+
7
+ ## Client requests
8
+
9
+ ### Retrieve
10
+
11
+ Returns information about a specified Event Type.
12
+
13
+ Visit official [API Doc](https://developer.calendly.com/api-docs/c1f9db4a585da-get-event-type)
14
+
15
+ ```ruby
16
+ client.event_types.retrieve(uuid: @uuid)
17
+ #=> #<Calendlyr::EventType>
18
+ ```
19
+
20
+ ### List
21
+ Returns all Event Types associated with a specified User.
22
+
23
+ Visit official [API Doc](https://developer.calendly.com/api-docs/25a4ece03c1bc-list-user-s-event-types)
24
+
25
+ For the examples bellow we will use only required parameters, but you can use any other parameter as well.
26
+ ```ruby
27
+ client.event_types.list(user: @user)
28
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::EventType>, ...], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
29
+
30
+ client.event_types.list(organization: @organization)
31
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::EventType>, ...], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
32
+ ```
33
+
34
+ ## Object methods
35
+
36
+ ### Associated Profile
37
+
38
+ ```ruby
39
+ event_type.associated_profile
40
+ #=> #<Calendlyr::EventTypes::Profile>
41
+ ```
42
+
43
+ ### Create Share
44
+
45
+ ```ruby
46
+ event_type.create_share
47
+ #=> #<Calendlyr::Share>
48
+ ```
49
+
50
+ ### Available Times
51
+
52
+ ```ruby
53
+ event_type.available_times(start_time: @start_time, end_time: @end_time, ...)
54
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::EventTypes::AvailableTime>, ...], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
55
+ ```
@@ -0,0 +1,29 @@
1
+ # Membership (Host) Calendlyr::EventTypes::Membership
2
+
3
+ ## Client requests
4
+
5
+ ### List
6
+ Fetch list of event type hosts.
7
+
8
+ Visit official [API Doc](https://developer.calendly.com/api-docs/9e27c9bd793da-list-event-type-hosts)
9
+
10
+ ```ruby
11
+ client.event_types.list_memberships(event_type, event_type)
12
+ #=> #<Calendlyr::Collection @data=[#<Calendlyr::EventTypes::Membership>, ...], @count=nil, @next_page=nil, @next_page_token=nil, @client=#<Calendlyr::Client>>
13
+ ```
14
+
15
+ ## Object methods
16
+
17
+ ### Associated Event Type
18
+
19
+ ```ruby
20
+ membership.associated_event_type
21
+ #=> #<Calendlyr::EventType>
22
+ ```
23
+
24
+ ### Associated Member
25
+
26
+ ```ruby
27
+ membership.associated_member
28
+ #=> [#<Calendlyr::User>, ...]
29
+ ```
@@ -0,0 +1,13 @@
1
+ # Profile Calendlyr::EventTypes::Profile
2
+
3
+ Visit official [API Doc](https://developer.calendly.com/api-docs/c2NoOjU5MTM5NQ-profile)
4
+
5
+ ## Object methods
6
+
7
+ ### Associated Owner
8
+
9
+ ```ruby
10
+ profile.associated_owner
11
+ #=> [#<Calendlyr::User>, ...]
12
+ ```
13
+
@@ -0,0 +1,18 @@
1
+ # Cancellation Calendlyr::Events::Cancellation
2
+
3
+ Provides data pertaining to the cancellation of the Event or the Invitee.
4
+
5
+ Visit official [API Doc](https://developer.calendly.com/api-docs/77497aba237ee-cancellation)
6
+
7
+ ## Client requests
8
+
9
+ ### Cancel event
10
+
11
+ Cancels specified event.
12
+
13
+ Visit official [API Doc](https://developer.calendly.com/api-docs/afb2e9fe3a0a0-cancel-event)
14
+
15
+ ```ruby
16
+ client.events.cancel(uuid: event_uuid, reason: "I'm bussy")
17
+ #=> #<Calendlyr::Events::Cancellation>
18
+ ```