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  }