mirror of
https://github.com/documize/community.git
synced 2025-07-19 05:09:42 +02:00
72 lines
2.5 KiB
Go
72 lines
2.5 KiB
Go
package jira
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
)
|
|
|
|
// CustomerService handles ServiceDesk customers for the Jira instance / API.
|
|
type CustomerService struct {
|
|
client *Client
|
|
}
|
|
|
|
// Customer represents a ServiceDesk customer.
|
|
type Customer struct {
|
|
AccountID string `json:"accountId,omitempty" structs:"accountId,omitempty"`
|
|
Name string `json:"name,omitempty" structs:"name,omitempty"`
|
|
Key string `json:"key,omitempty" structs:"key,omitempty"`
|
|
EmailAddress string `json:"emailAddress,omitempty" structs:"emailAddress,omitempty"`
|
|
DisplayName string `json:"displayName,omitempty" structs:"displayName,omitempty"`
|
|
Active *bool `json:"active,omitempty" structs:"active,omitempty"`
|
|
TimeZone string `json:"timeZone,omitempty" structs:"timeZone,omitempty"`
|
|
Links *SelfLink `json:"_links,omitempty" structs:"_links,omitempty"`
|
|
}
|
|
|
|
// CustomerListOptions is the query options for listing customers.
|
|
type CustomerListOptions struct {
|
|
Query string `url:"query,omitempty"`
|
|
Start int `url:"start,omitempty"`
|
|
Limit int `url:"limit,omitempty"`
|
|
}
|
|
|
|
// CustomerList is a page of customers.
|
|
type CustomerList struct {
|
|
Values []Customer `json:"values,omitempty" structs:"values,omitempty"`
|
|
Start int `json:"start,omitempty" structs:"start,omitempty"`
|
|
Limit int `json:"limit,omitempty" structs:"limit,omitempty"`
|
|
IsLast bool `json:"isLastPage,omitempty" structs:"isLastPage,omitempty"`
|
|
Expands []string `json:"_expands,omitempty" structs:"_expands,omitempty"`
|
|
}
|
|
|
|
// CreateWithContext creates a ServiceDesk customer.
|
|
//
|
|
// https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-customer/#api-rest-servicedeskapi-customer-post
|
|
func (c *CustomerService) CreateWithContext(ctx context.Context, email, displayName string) (*Customer, *Response, error) {
|
|
const apiEndpoint = "rest/servicedeskapi/customer"
|
|
|
|
payload := struct {
|
|
Email string `json:"email"`
|
|
DisplayName string `json:"displayName"`
|
|
}{
|
|
Email: email,
|
|
DisplayName: displayName,
|
|
}
|
|
|
|
req, err := c.client.NewRequestWithContext(ctx, http.MethodPost, apiEndpoint, payload)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
responseCustomer := new(Customer)
|
|
resp, err := c.client.Do(req, responseCustomer)
|
|
if err != nil {
|
|
return nil, resp, NewJiraError(resp, err)
|
|
}
|
|
|
|
return responseCustomer, resp, nil
|
|
}
|
|
|
|
// Create wraps CreateWithContext using the background context.
|
|
func (c *CustomerService) Create(email, displayName string) (*Customer, *Response, error) {
|
|
return c.CreateWithContext(context.Background(), email, displayName)
|
|
}
|