Hi. Is there an API to find an existing ticket based on its ticket number rather than its GUID?
This API requires the GUID: https://incidentiq.stoplight.io/docs/v1/fac7a730d6815-get-a-ticket
Hi. Is there an API to find an existing ticket based on its ticket number rather than its GUID?
This API requires the GUID: https://incidentiq.stoplight.io/docs/v1/fac7a730d6815-get-a-ticket
Best answer by AKennis 77b3f7 ouboces
Thanks everyone - I got /api/v1.0/search to work as described. Here’s my Go code for that:
type SearchForTicketReq struct {
IiqApiKey string
TicketNum string
}
func SearchForTicket(req SearchForTicketReq) (string, error) {
payload := fmt.Sprintf(`
{
"Query": "%s"
}
`, req.TicketNum)
iiqReq, err := initIiqV1Req(req.IiqApiKey, http.MethodPost, "search", payload)
if err != nil {
return "", err
}
res, err := http.DefaultClient.Do(iiqReq)
if err != nil {
return "", err
}
defer res.Body.Close()
resBody, err := io.ReadAll(res.Body)
if err != nil {
return "", err
}
if res.StatusCode < 200 || res.StatusCode > 299 {
return "", fmt.Errorf("/search responded with unexpected status code %d, body %s", res.StatusCode, string(resBody))
}
type searchQueryTicket struct {
TicketId string
TicketNumber string
}
type searchItemData struct {
Tickets []searchQueryTicket
}
type searchRespData struct {
Item searchItemData
}
var data searchRespData
err = json.Unmarshal(resBody, &data)
if err != nil {
return "", err
}
for _, t := range data.Item.Tickets {
if t.TicketNumber == req.TicketNum {
return t.TicketId, nil
}
}
return "", fmt.Errorf("no ticket found with number %s", req.TicketNum)
}
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.