-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
schedulingLinks.go
50 lines (39 loc) · 1.31 KB
/
schedulingLinks.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package calendly
import (
"encoding/json"
"fmt"
)
// Note this part of the wrapper may change in the future, this endpoint doesn't appear fully finished from Calendly
// https://developer.calendly.com/api-docs/b3A6MzQyNTM0OQ-create-single-use-scheduling-link
// SchedulingLink holds a Calendly Scheduled Link
type SchedulingLink struct {
BookingURL string `json:"booking_url"`
Owner string `json:"owner"`
OwnerType string `json:"owner_type"`
}
// SchedulingLinkInput is used as input to the CreateSingleUseSchedulingLink function
type SchedulingLinkInput struct {
MaxEventCount int `json:"max_event_count"`
Owner string `json:"owner"`
OwnerType string `json:"owner_type"`
}
// CreateSingleUseSchedulingLink creates a single use link for Calendly
func (cw *CalendlyWrapper) CreateSingleUseSchedulingLink(input *SchedulingLinkInput) (SchedulingLink, error) {
var scheduledLink SchedulingLink
var slr map[string]SchedulingLink
url := fmt.Sprintf("%sscheduling_links", cw.baseApiUrl)
payload, err := json.Marshal(input)
if err != nil {
return scheduledLink, err
}
resp, err := cw.sendPostReq(url, payload)
if err != nil {
return scheduledLink, err
}
err = json.Unmarshal(resp, &slr)
if err != nil {
return scheduledLink, err
}
scheduledLink = slr["resource"]
return scheduledLink, nil
}