Page cover image

๐Ÿ‘จโ€โš–๏ธCustomer

https://github.com/ctreminiom/go-atlassian/blob/main/pkg/infra/models/sm_customer.go
package models

// CustomerPageScheme represents a page of customers in a system.
type CustomerPageScheme struct {
	Expands    []interface{}            `json:"_expands,omitempty"`   // Additional data related to the customers.
	Size       int                      `json:"size,omitempty"`       // The number of customers on the page.
	Start      int                      `json:"start,omitempty"`      // The index of the first customer on the page.
	Limit      int                      `json:"limit,omitempty"`      // The maximum number of customers that can be on the page.
	IsLastPage bool                     `json:"isLastPage,omitempty"` // Indicates if this is the last page of customers.
	Links      *CustomerPageLinksScheme `json:"_links,omitempty"`     // Links related to the page of customers.
	Values     []*CustomerScheme        `json:"values,omitempty"`     // The customers on the page.
}

// CustomerPageLinksScheme represents links related to a page of customers.
type CustomerPageLinksScheme struct {
	Base    string `json:"base,omitempty"`    // The base URL for the links.
	Context string `json:"context,omitempty"` // The context for the links.
	Next    string `json:"next,omitempty"`    // The URL for the next page of customers.
	Prev    string `json:"prev,omitempty"`    // The URL for the previous page of customers.
}

// CustomerScheme represents a customer in a system.
type CustomerScheme struct {
	AccountID    string              `json:"accountId,omitempty"`    // The account ID of the customer.
	Name         string              `json:"name,omitempty"`         // The name of the customer.
	Key          string              `json:"key,omitempty"`          // The key of the customer.
	EmailAddress string              `json:"emailAddress,omitempty"` // The email address of the customer.
	DisplayName  string              `json:"displayName,omitempty"`  // The display name of the customer.
	Active       bool                `json:"active,omitempty"`       // Indicates if the customer is active.
	TimeZone     string              `json:"timeZone,omitempty"`     // The time zone of the customer.
	Links        *CustomerLinkScheme `json:"_links,omitempty"`       // Links related to the customer.
}

// CustomerLinkScheme represents links related to a customer.
type CustomerLinkScheme struct {
	JiraREST   string           `json:"jiraRest"`   // The Jira REST API link for the customer.
	AvatarURLs *AvatarURLScheme `json:"avatarUrls"` // The URLs for the customer's avatars.
	Self       string           `json:"self"`       // The URL for the customer itself.
}
SM Customer Models

Create customer

POST /rest/servicedeskapi/customer

This method adds a customer to the Jira Service Management instance by passing a JSON file including an email address and display name. The display name does not need to be unique. The record's identifiers, name and key, are automatically generated from the request details.

package main

import (
	"context"
	"github.com/ctreminiom/go-atlassian/jira/sm"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	atlassian, err := sm.New(nil, host)
	if err != nil {
		return
	}

	atlassian.Auth.SetBasicAuth(mail, token)
	atlassian.Auth.SetUserAgent("curl/7.54.0")

	var (
		email       = "[email protected]"
		displayName = "Example Customer 1"
	)

	newCustomer, response, err := atlassian.Customer.Create(context.Background(), email, displayName)
	if err != nil {
		if response != nil {
			log.Println("Response HTTP Response", response.Bytes.String())
		}
		log.Fatal(err)
	}

	log.Println("Response HTTP Code", response.Code)
	log.Println("HTTP Endpoint Used", response.Endpoint)

	log.Println("The new customer has been created!!")
	log.Println("-------------------------")
	log.Println(newCustomer.Name)
	log.Println(newCustomer.DisplayName)
	log.Println(newCustomer.AccountID)
	log.Println(newCustomer.EmailAddress)
	log.Println(newCustomer.Links)
	log.Println(newCustomer)
	log.Println("-------------------------")

}

Add customers

POST /rest/servicedeskapi/servicedesk/{serviceDeskId}/customer

Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code.

package main

import (
	"context"
	"github.com/ctreminiom/go-atlassian/jira/sm"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	atlassian, err := sm.New(nil, host)
	if err != nil {
		return
	}

	atlassian.Auth.SetBasicAuth(mail, token)
	atlassian.Auth.SetUserAgent("curl/7.54.0")

	var (
		accountIDs = []string{"qm:7ee1b8dc-1ce3-467b-94cd-9bb2dcf083e2:3f06c44b-36e8-4394-9ff3-d679f854477c"}
	)

	response, err := atlassian.Customer.Add(context.Background(), 1, accountIDs)
	if err != nil {
		if response != nil {
			log.Println("Response HTTP Response", string(response.Bytes.String()))
		}
		log.Fatal(err)
	}

	log.Println("Response HTTP Code", response.Code)
	log.Println("HTTP Endpoint Used", response.Endpoint)
}

Get customers

GET /rest/servicedeskapi/servicedesk/{serviceDeskId}/customer

This method returns a list of the customers on a service desk.

package main

import (
	"context"
	"github.com/ctreminiom/go-atlassian/jira/sm"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	atlassian, err := sm.New(nil, host)
	if err != nil {
		return
	}

	atlassian.Auth.SetBasicAuth(mail, token)
	atlassian.Auth.SetUserAgent("curl/7.54.0")
	atlassian.Auth.SetExperimentalFlag()

	var (
		serviceDeskID = 1
		query         = ""
		start         = 0
		limit         = 50
	)

	customers, response, err := atlassian.Customer.Gets(context.Background(), serviceDeskID, query, start, limit)
	if err != nil {
		if response != nil {
			log.Println("Response HTTP Response", response.Bytes.String())
		}
		log.Fatal(err)
	}

	log.Println("Response HTTP Code", response.Code)
	log.Println("HTTP Endpoint Used", response.Endpoint)

	for _, customer := range customers.Values {
		log.Println(customer)
	}

}

Remove customers

DELETE /rest/servicedeskapi/servicedesk/{serviceDeskId}/customer

This method removes one or more customers from a service desk. The service desk must have closed access. If any of the passed customers are not associated with the service desk, no changes will be made for those customers and the resource returns a 204 success code.

package main

import (
	"context"
	"github.com/ctreminiom/go-atlassian/jira/sm"
	"log"
	"os"
)

func main() {

	var (
		host  = os.Getenv("HOST")
		mail  = os.Getenv("MAIL")
		token = os.Getenv("TOKEN")
	)

	atlassian, err := sm.New(nil, host)
	if err != nil {
		return
	}

	atlassian.Auth.SetBasicAuth(mail, token)
	atlassian.Auth.SetUserAgent("curl/7.54.0")
	atlassian.Auth.SetExperimentalFlag()

	var (
		accountIDs = []string{"qm:7ee1b8dc-1ce3-467b-94cd-9bb2dcf083e2:3f06c44b-36e8-4394-9ff3-d679f854477c"}
	)

	response, err := atlassian.Customer.Remove(context.Background(), 1, accountIDs)
	if err != nil {
		if response != nil {
			log.Println("Response HTTP Response", response.Bytes.String())
		}
		log.Fatal(err)
	}

	log.Println("Response HTTP Code", response.Code)
	log.Println("HTTP Endpoint Used", response.Endpoint)
}

Last updated

Was this helpful?