List and read CSM cases
List Customer Service Management cases and read their fields.
When to use this pattern
- You're syncing CSM cases into an external ticketing or reporting system
- You're building customer-facing status views on top of ServiceNow cases
Required values
| Value | Description |
|---|---|
| Case filters | Optional query parameters narrowing which cases you get |
Example
package main
import (
"context"
"fmt"
"log"
servicenow "github.com/michaeldcanady/servicenow-sdk-go/v2"
"github.com/michaeldcanady/servicenow-sdk-go/v2/credentials"
)
func main() {
// Step 1: Authenticate and initialize the client
cred := credentials.NewBasicProvider("{username}", "{password}")
client, err := servicenow.NewServiceNowServiceClient(
servicenow.WithAuthenticationProvider(cred),
servicenow.WithInstance("{instance}"),
)
if err != nil {
log.Fatalf("failed to initialize client: %v", err)
}
ctx := context.Background()
cases := client.CustomerService().Case()
// Step 2: List cases
response, err := cases.Get(ctx, nil)
if err != nil {
log.Fatalf("unable to list cases: %v", err)
}
// Step 3: Read fields from each case
list, err := response.GetResult()
if err != nil {
log.Fatal(err)
}
for _, c := range list {
number, err := c.GetNumber()
if err != nil {
log.Fatal(err)
}
short, err := c.GetShortDescription()
if err != nil {
log.Fatal(err)
}
if number != nil && short != nil {
fmt.Printf("%s — %s\n", *number, *short)
}
}
}
Tips
- Case models are typed —
GetNumber(),GetShortDescription(),GetState(),GetPriority()— no generic field unwrapping needed. Postcreates a case;ByID(...).Putupdates one.