package client import ( "bytes" "encoding/json" "errors" "net/http" "time" ) type EmailCreateResponse struct { Id string `json:"id"` CreatedAt time.Time `json:"created_at"` } type ErrorResponse struct { Message string `json:"message"` Error string `json:"error"` } func (client *Client) SendEmail(request *EmailRequest) (*EmailCreateResponse, error) { jsonData, _ := json.Marshal(request) httpClient := &http.Client{} req, _ := http.NewRequest( "POST", client.config.Endpoint+"/api/email", bytes.NewReader(jsonData), ) req.Header.Set("Authorization", client.token.TokenType+" "+client.token.AccessToken) req.Header.Set("Content-Type", "application/json") resp, err := httpClient.Do(req) if err != nil { return nil, err } if resp.StatusCode >= http.StatusBadRequest { response, err := readResponseBody[Response[ErrorResponse]](resp) if err != nil { return nil, err } return nil, errors.New(response.Payload.Message) } response, err := readResponseBody[Response[EmailCreateResponse]](resp) if err != nil { return nil, err } return &response.Payload, nil }