github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/templates.go (about) 1 package clerk 2 3 import "fmt" 4 5 type TemplatesService service 6 7 type Template struct { 8 Object string `json:"object"` 9 Slug string `json:"slug"` 10 ResourceType string `json:"resource_type"` 11 TemplateType string `json:"template_type"` 12 Name string `json:"name"` 13 Position int `json:"position"` 14 CanRevert bool `json:"can_revert"` 15 CanDelete bool `json:"can_delete"` 16 FromEmailName *string `json:"from_email_name"` 17 ReplyToEmailName *string `json:"reply_to_email_name"` 18 DeliveredByClerk bool `json:"delivered_by_clerk"` 19 CreatedAt int64 `json:"created_at"` 20 UpdatedAt int64 `json:"updated_at"` 21 } 22 23 type TemplateExtended struct { 24 *Template 25 Subject string `json:"subject"` 26 Markup string `json:"markup"` 27 Body string `json:"body"` 28 AvailableVariables []string `json:"available_variables"` 29 RequiredVariables []string `json:"required_variables"` 30 } 31 32 type TemplatePreview struct { 33 Subject string `json:"subject,omitempty"` 34 Body string `json:"body"` 35 FromEmailAddress *string `json:"from_email_address,omitempty"` 36 } 37 38 func (s *TemplatesService) ListAll(templateType string) ([]Template, error) { 39 templateURL := fmt.Sprintf("%s/%s", TemplatesUrl, templateType) 40 req, _ := s.client.NewRequest("GET", templateURL) 41 42 var templates []Template 43 44 _, err := s.client.Do(req, &templates) 45 if err != nil { 46 return nil, err 47 } 48 49 return templates, nil 50 } 51 52 func (s *TemplatesService) Read(templateType, slug string) (*TemplateExtended, error) { 53 templateURL := fmt.Sprintf("%s/%s/%s", TemplatesUrl, templateType, slug) 54 55 req, _ := s.client.NewRequest("GET", templateURL) 56 57 var templateExtended TemplateExtended 58 59 _, err := s.client.Do(req, &templateExtended) 60 if err != nil { 61 return nil, err 62 } 63 64 return &templateExtended, nil 65 } 66 67 type UpsertTemplateRequest struct { 68 Name string `json:"name"` 69 Subject string `json:"subject,omitempty"` 70 Markup string `json:"markup,omitempty"` 71 Body string `json:"body"` 72 FromEmailName *string `json:"from_email_name"` 73 ReplyToEmailName *string `json:"reply_to_email_name,omitempty"` 74 DeliveredByClerk *bool `json:"delivered_by_clerk"` 75 } 76 77 type PreviewTemplateRequest struct { 78 Subject string `json:"subject,omitempty"` 79 Body string `json:"body"` 80 FromEmailName *string `json:"from_email_name"` 81 ReplyToEmailName *string `json:"reply_to_email_name,omitempty"` 82 } 83 84 type ToggleDeliveryTemplateRequest struct { 85 DeliveredByClerk bool `json:"delivered_by_clerk"` 86 } 87 88 func (s *TemplatesService) Upsert(templateType, slug string, upsertTemplateRequest *UpsertTemplateRequest) (*TemplateExtended, error) { 89 templateURL := fmt.Sprintf("%s/%s/%s", TemplatesUrl, templateType, slug) 90 req, _ := s.client.NewRequest("PUT", templateURL, upsertTemplateRequest) 91 92 var upsertedTemplate TemplateExtended 93 94 _, err := s.client.Do(req, &upsertedTemplate) 95 if err != nil { 96 return nil, err 97 } 98 99 return &upsertedTemplate, nil 100 } 101 102 // Revert reverts a user template to the corresponding system template 103 func (s *TemplatesService) Revert(templateType, slug string) (*TemplateExtended, error) { 104 templateURL := fmt.Sprintf("%s/%s/%s/revert", TemplatesUrl, templateType, slug) 105 req, _ := s.client.NewRequest("POST", templateURL) 106 107 var templateExtended TemplateExtended 108 109 _, err := s.client.Do(req, &templateExtended) 110 if err != nil { 111 return nil, err 112 } 113 114 return &templateExtended, nil 115 } 116 117 // Delete deletes a custom user template 118 func (s *TemplatesService) Delete(templateType, slug string) (*DeleteResponse, error) { 119 templateURL := fmt.Sprintf("%s/%s/%s", TemplatesUrl, templateType, slug) 120 req, _ := s.client.NewRequest("DELETE", templateURL) 121 122 var delResponse DeleteResponse 123 if _, err := s.client.Do(req, &delResponse); err != nil { 124 return nil, err 125 } 126 127 return &delResponse, nil 128 } 129 130 // Preview returns a rendering of a template with sample data for preview purposes 131 func (s *TemplatesService) Preview(templateType, slug string, previewTemplateRequest *PreviewTemplateRequest) (*TemplatePreview, error) { 132 templateURL := fmt.Sprintf("%s/%s/%s/preview", TemplatesUrl, templateType, slug) 133 req, _ := s.client.NewRequest("POST", templateURL, previewTemplateRequest) 134 135 var templatePreview TemplatePreview 136 137 _, err := s.client.Do(req, &templatePreview) 138 if err != nil { 139 return nil, err 140 } 141 142 return &templatePreview, nil 143 } 144 145 func (s *TemplatesService) ToggleDelivery(templateType, slug string, toggleDeliveryTemplateRequest *ToggleDeliveryTemplateRequest) (*TemplateExtended, error) { 146 templateURL := fmt.Sprintf("%s/%s/%s/toggle_delivery", TemplatesUrl, templateType, slug) 147 req, _ := s.client.NewRequest("POST", templateURL, toggleDeliveryTemplateRequest) 148 149 var toggledTemplate TemplateExtended 150 151 _, err := s.client.Do(req, &toggledTemplate) 152 if err != nil { 153 return nil, err 154 } 155 156 return &toggledTemplate, nil 157 }