Skip to content

Commit d815dbb

Browse files
authored
Merge pull request #21 from deploymenttheory/dev
Added support for Advanced Computer Searches
2 parents cceddcb + 111569f commit d815dbb

File tree

17 files changed

+708
-374
lines changed

17 files changed

+708
-374
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,16 @@ This document tracks the progress of API endpoint coverage tests. As endpoints a
214214
- [ ] ✅ DELETE `/JSSResource/advancedcomputersearches/id/{id}` - DeleteAdvancedComputerSearchByID deletes an advanced computer search by its ID.
215215
- [ ] ✅ DELETE `/JSSResource/advancedcomputersearches/name/{name}` - DeleteAdvancedComputerSearchByName deletes an advanced computer search by its name.
216216

217+
### Jamf Pro Classic API - Advanced User Searches
218+
219+
- [ ] ✅ GET `/JSSResource/advancedusersearches` - GetAdvancedUserSearches fetches all advanced user searches.
220+
- [ ] ✅ GET `/JSSResource/advancedusersearches/id/{id}` - GetAdvancedUserSearchByID fetches an advanced user search by its ID.
221+
- [ ] ✅ GET `/JSSResource/advancedusersearches/name/{name}` - GetAdvancedUserSearchesByName fetches advanced user searches by their name.
222+
- [ ] ✅ POST `/JSSResource/advancedusersearches` - CreateAdvancedUserSearch creates a new advanced user search.
223+
- [ ] ✅ PUT `/JSSResource/advancedusersearches/id/{id}` - UpdateAdvancedUserSearchByID updates an existing advanced user search by its ID.
224+
- [ ] ✅ PUT `/JSSResource/advancedusersearches/name/{name}` - UpdateAdvancedUserSearchByName updates an advanced user search by its name.
225+
- [ ] ✅ DELETE `/JSSResource/advancedusersearches/id/{id}` - DeleteAdvancedUserSearchByID deletes an advanced user search by its ID.
226+
- [ ] ✅ DELETE `/JSSResource/advancedusersearches/name/{name}` - DeleteAdvancedUserSearchByName deletes an advanced user search by its name.
217227

218228
### Allowed File Extensions - /JSSResource/allowedfileextensions
219229

examples/Authentication/GetBearerTokenAuthWithClientCredentialConfigFile/GetBearerTokenWithClientCredentialConfigFile.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ func main() {
4040
client.SetOAuthCredentials(oAuthCreds)
4141

4242
// Call the ValidAuthTokenCheck function to ensure that a valid token is set in the client
43-
isTokenValid := client.ValidAuthTokenCheck()
43+
isTokenValid, err := client.ValidAuthTokenCheck()
44+
if err != nil {
45+
log.Fatalf("Error while validating token: %v", err)
46+
}
4447
if !isTokenValid {
4548
fmt.Println("Error obtaining or refreshing token.")
4649
return

examples/Authentication/GetBearerTokenAuthWithClientCredentials/GetBearerTokenAuthWithClientCredentials.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ func main() {
3333
client.SetOAuthCredentials(oAuthCreds)
3434

3535
// Call the ValidAuthTokenCheck function to ensure that a valid token is set in the client
36-
isTokenValid := client.ValidAuthTokenCheck()
36+
isTokenValid, err := client.ValidAuthTokenCheck()
37+
if err != nil {
38+
log.Fatalf("Error while validating token: %v", err)
39+
}
3740
if !isTokenValid {
3841
fmt.Println("Error obtaining or refreshing token.")
3942
return
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package main
2+
3+
import (
4+
"encoding/xml"
5+
"fmt"
6+
"log"
7+
8+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
9+
)
10+
11+
func main() {
12+
// Define the path to the JSON configuration file
13+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
14+
15+
// Load the client OAuth credentials from the configuration file
16+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
17+
if err != nil {
18+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
19+
}
20+
21+
// Configuration for Jamf Pro
22+
config := jamfpro.Config{
23+
InstanceName: authConfig.InstanceName,
24+
DebugMode: true,
25+
Logger: jamfpro.NewDefaultLogger(),
26+
ClientID: authConfig.ClientID,
27+
ClientSecret: authConfig.ClientSecret,
28+
}
29+
30+
// Create a new Jamf Pro client instance
31+
client, err := jamfpro.NewClient(config)
32+
if err != nil {
33+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
34+
}
35+
36+
// Define the advanced user search to create
37+
newAdvancedUserSearch := &jamfpro.AdvancedUserSearch{
38+
Name: "Advanced User Search Name",
39+
Criteria: []jamfpro.AdvancedUserSearchCriteriaDetail{
40+
{
41+
Criterion: jamfpro.AdvancedUserSearchCriterionDetail{
42+
Name: "Email Address",
43+
Priority: 0,
44+
AndOr: "and",
45+
SearchType: "like",
46+
Value: "company.com",
47+
OpeningParen: false,
48+
ClosingParen: false,
49+
},
50+
},
51+
},
52+
DisplayFields: []jamfpro.AdvancedUserSearchSiteDisplayFieldDetail{
53+
{
54+
DisplayField: struct {
55+
Name string `xml:"name"`
56+
}{Name: "Email Address"},
57+
},
58+
},
59+
Site: jamfpro.AdvancedUserSearchSiteDetail{
60+
ID: -1,
61+
Name: "None",
62+
},
63+
}
64+
65+
// Call CreateAdvancedUserSearch function
66+
createdSearch, err := client.CreateAdvancedUserSearch(newAdvancedUserSearch)
67+
if err != nil {
68+
log.Fatalf("Error creating advanced user search: %v", err)
69+
}
70+
71+
// Pretty print the created advanced user search in XML
72+
createdSearchXML, err := xml.MarshalIndent(createdSearch, "", " ") // Indent with 4 spaces
73+
if err != nil {
74+
log.Fatalf("Error marshaling created advanced user search data: %v", err)
75+
}
76+
fmt.Println("Created Advanced User Search:\n", string(createdSearchXML))
77+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package main
2+
3+
import (
4+
"log"
5+
6+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
7+
)
8+
9+
func main() {
10+
// Define the path to the JSON configuration file
11+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
12+
13+
// Load the client OAuth credentials from the configuration file
14+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
15+
if err != nil {
16+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
17+
}
18+
19+
// Configuration for Jamf Pro
20+
config := jamfpro.Config{
21+
InstanceName: authConfig.InstanceName,
22+
DebugMode: true,
23+
Logger: jamfpro.NewDefaultLogger(),
24+
ClientID: authConfig.ClientID,
25+
ClientSecret: authConfig.ClientSecret,
26+
}
27+
28+
// Create a new Jamf Pro client instance
29+
client, err := jamfpro.NewClient(config)
30+
if err != nil {
31+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
32+
}
33+
34+
// Delete advanced user search by ID
35+
err = client.DeleteAdvancedUserSearchByID(123) // Replace 123 with the actual ID
36+
if err != nil {
37+
log.Fatalf("Error deleting advanced user search by ID: %v", err)
38+
}
39+
log.Println("Advanced user search deleted successfully by ID.")
40+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package main
2+
3+
import (
4+
"log"
5+
6+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
7+
)
8+
9+
func main() {
10+
// Define the path to the JSON configuration file
11+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
12+
13+
// Load the client OAuth credentials from the configuration file
14+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
15+
if err != nil {
16+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
17+
}
18+
19+
// Configuration for Jamf Pro
20+
config := jamfpro.Config{
21+
InstanceName: authConfig.InstanceName,
22+
DebugMode: true,
23+
Logger: jamfpro.NewDefaultLogger(),
24+
ClientID: authConfig.ClientID,
25+
ClientSecret: authConfig.ClientSecret,
26+
}
27+
28+
// Create a new Jamf Pro client instance
29+
client, err := jamfpro.NewClient(config)
30+
if err != nil {
31+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
32+
}
33+
34+
// Delete advanced user search by Name
35+
err = client.DeleteAdvancedUserSearchByName("Search Name") // Replace "Search Name" with the actual name
36+
if err != nil {
37+
log.Fatalf("Error deleting advanced user search by name: %v", err)
38+
}
39+
log.Println("Advanced user search deleted successfully by name.")
40+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package main
2+
3+
import (
4+
"encoding/xml"
5+
"fmt"
6+
"log"
7+
8+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
9+
)
10+
11+
func main() {
12+
// Define the path to the JSON configuration file
13+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
14+
15+
// Load the client OAuth credentials from the configuration file
16+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
17+
if err != nil {
18+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
19+
}
20+
21+
// Configuration for Jamf Pro
22+
config := jamfpro.Config{
23+
InstanceName: authConfig.InstanceName,
24+
DebugMode: true,
25+
Logger: jamfpro.NewDefaultLogger(),
26+
ClientID: authConfig.ClientID,
27+
ClientSecret: authConfig.ClientSecret,
28+
}
29+
30+
// Create a new Jamf Pro client instance
31+
client, err := jamfpro.NewClient(config)
32+
if err != nil {
33+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
34+
}
35+
36+
// ID of the advanced user search to retrieve
37+
advancedUserSearchID := 1 // Replace with the actual ID
38+
39+
// Call GetAdvancedUserSearchByID function
40+
advancedUserSearch, err := client.GetAdvancedUserSearchByID(advancedUserSearchID)
41+
if err != nil {
42+
log.Fatalf("Error fetching advanced user search by ID: %v", err)
43+
}
44+
45+
// Pretty print the advanced user search in XML
46+
advancedUserSearchXML, err := xml.MarshalIndent(advancedUserSearch, "", " ") // Indent with 4 spaces
47+
if err != nil {
48+
log.Fatalf("Error marshaling advanced user search data: %v", err)
49+
}
50+
fmt.Println("Fetched Advanced User Search:\n", string(advancedUserSearchXML))
51+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package main
2+
3+
import (
4+
"encoding/xml"
5+
"fmt"
6+
"log"
7+
8+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
9+
)
10+
11+
func main() {
12+
// Define the path to the JSON configuration file
13+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
14+
15+
// Load the client OAuth credentials from the configuration file
16+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
17+
if err != nil {
18+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
19+
}
20+
21+
// Configuration for Jamf Pro
22+
config := jamfpro.Config{
23+
InstanceName: authConfig.InstanceName,
24+
DebugMode: true,
25+
Logger: jamfpro.NewDefaultLogger(),
26+
ClientID: authConfig.ClientID,
27+
ClientSecret: authConfig.ClientSecret,
28+
}
29+
30+
// Create a new Jamf Pro client instance
31+
client, err := jamfpro.NewClient(config)
32+
if err != nil {
33+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
34+
}
35+
36+
// Name of the advanced user search to retrieve
37+
advancedUserSearchName := "YourSearchName" // Replace with the actual name
38+
39+
// Call GetAdvancedUserSearchByName function
40+
advancedUserSearch, err := client.GetAdvancedUserSearchByName(advancedUserSearchName)
41+
if err != nil {
42+
log.Fatalf("Error fetching advanced user search by name: %v", err)
43+
}
44+
45+
// Pretty print the advanced user search in XML
46+
advancedUserSearchXML, err := xml.MarshalIndent(advancedUserSearch, "", " ") // Indent with 4 spaces
47+
if err != nil {
48+
log.Fatalf("Error marshaling advanced user search data: %v", err)
49+
}
50+
fmt.Println("Fetched Advanced User Search by Name:\n", string(advancedUserSearchXML))
51+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package main
2+
3+
import (
4+
"encoding/xml"
5+
"fmt"
6+
"log"
7+
8+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
9+
)
10+
11+
func main() {
12+
// Define the path to the JSON configuration file
13+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
14+
15+
// Load the client OAuth credentials from the configuration file
16+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
17+
if err != nil {
18+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
19+
}
20+
21+
// Configuration for Jamf Pro
22+
config := jamfpro.Config{
23+
InstanceName: authConfig.InstanceName,
24+
DebugMode: true,
25+
Logger: jamfpro.NewDefaultLogger(),
26+
ClientID: authConfig.ClientID,
27+
ClientSecret: authConfig.ClientSecret,
28+
}
29+
30+
// Create a new Jamf Pro client instance
31+
client, err := jamfpro.NewClient(config)
32+
if err != nil {
33+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
34+
}
35+
36+
// Call GetAdvancedUserSearches function
37+
advancedUserSearches, err := client.GetAdvancedUserSearches()
38+
if err != nil {
39+
log.Fatalf("Error fetching advanced user searches: %v", err)
40+
}
41+
42+
// Pretty print the advanced user searches in XML
43+
advancedUserSearchesXML, err := xml.MarshalIndent(advancedUserSearches, "", " ") // Indent with 4 spaces
44+
if err != nil {
45+
log.Fatalf("Error marshaling advanced user searches data: %v", err)
46+
}
47+
fmt.Println("Fetched Advanced User Searches:\n", string(advancedUserSearchesXML))
48+
}

0 commit comments

Comments
 (0)