Skip to content

Commit eb5dfd2

Browse files
authored
Merge pull request #26 from deploymenttheory/dev
Added SDK coverage for Advanced Mobile Device Searches with examples
2 parents 6a160e2 + 0eeef2d commit eb5dfd2

File tree

16 files changed

+775
-30
lines changed

16 files changed

+775
-30
lines changed

README.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,6 @@ This document tracks the progress of API endpoint coverage tests. As endpoints a
202202
- [ ] ✅ DELETE `/api/v1/api-roles/{id}` - DeleteJamfApiRoleByID deletes a Jamf API role by its ID.
203203
- [ ] ✅ DELETE `/api/v1/api-roles` followed by searching by name - DeleteJamfApiRoleByName deletes a Jamf API role by its display name.
204204

205-
206-
### Activation Code - /JSSResource/activationcode
207-
208-
- [ ] ✅ GET `/JSSResource/activationcode` - GetActivationCode retrieves the current activation code.
209-
- [ ] ✅ PUT `/JSSResource/activationcode` - UpdateActivationCode updates the activation code.
210-
211205
### Jamf Pro Classic API - Advanced Computer Searches
212206

213207
- [ ] ✅ GET `/JSSResource/advancedcomputersearches` - GetAdvancedComputerSearches fetches all advanced computer searches.
@@ -219,6 +213,18 @@ This document tracks the progress of API endpoint coverage tests. As endpoints a
219213
- [ ] ✅ DELETE `/JSSResource/advancedcomputersearches/id/{id}` - DeleteAdvancedComputerSearchByID deletes an advanced computer search by its ID.
220214
- [ ] ✅ DELETE `/JSSResource/advancedcomputersearches/name/{name}` - DeleteAdvancedComputerSearchByName deletes an advanced computer search by its name.
221215

216+
### Jamf Pro Classic API - Advanced Mobile Device Searches
217+
218+
- [ ] ✅ GET `/JSSResource/advancedmobiledevicesearches` - GetAdvancedMobileDeviceSearches fetches all advanced mobile device searches.
219+
- [ ] ✅ GET `/JSSResource/advancedmobiledevicesearches/id/{id}` - GetAdvancedMobileDeviceSearchByID fetches an advanced mobile device search by its ID.
220+
- [ ] ✅ GET `/JSSResource/advancedmobiledevicesearches/name/{name}` - GetAdvancedMobileDeviceSearchByName fetches advanced mobile device searches by their name.
221+
- [ ] ✅ POST `/JSSResource/advancedmobiledevicesearches` - CreateAdvancedMobileDeviceSearch creates a new advanced mobile device search.
222+
- [ ] ✅ PUT `/JSSResource/advancedmobiledevicesearches/id/{id}` - UpdateAdvancedMobileDeviceSearchByID updates an existing advanced mobile device search by its ID.
223+
- [ ] ✅ PUT `/JSSResource/advancedmobiledevicesearches/name/{name}` - UpdateAdvancedMobileDeviceSearchByName updates an advanced mobile device search by its name.
224+
- [ ] ✅ DELETE `/JSSResource/advancedmobiledevicesearches/id/{id}` - DeleteAdvancedMobileDeviceSearchByID deletes an advanced mobile device search by its ID.
225+
- [ ] ✅ DELETE `/JSSResource/advancedmobiledevicesearches/name/{name}` - DeleteAdvancedMobileDeviceSearchByName deletes an advanced mobile device search by its name.
226+
227+
222228
### Jamf Pro Classic API - Advanced User Searches
223229

224230
- [ ] ✅ GET `/JSSResource/advancedusersearches` - GetAdvancedUserSearches fetches all advanced user searches.

examples/advanced_computer_searches/CreateAdvancedComputerSearch/CreateAdvancedComputerSearch.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func main() {
4040
newSearch := &jamfpro.ResponseAdvancedComputerSearch{
4141
Name: "Advanced Search Name",
4242
ViewAs: "Standard Web Page",
43-
Criteria: []jamfpro.Criteria{
43+
Criteria: []jamfpro.AdvancedComputerSearchesCriteria{
4444
{
4545
Criterion: jamfpro.CriterionDetail{
4646
Name: "Last Inventory Update",
@@ -53,14 +53,14 @@ func main() {
5353
},
5454
},
5555
},
56-
DisplayFields: []jamfpro.DisplayField{
56+
DisplayFields: []jamfpro.AdvancedComputerSearchesDisplayField{
5757
{
5858
DisplayField: jamfpro.DisplayFieldDetail{
5959
Name: "IP Address",
6060
},
6161
},
6262
},
63-
Site: jamfpro.SiteDetail{
63+
Site: jamfpro.AdvancedComputerSearchesSiteDetail{
6464
ID: -1,
6565
Name: "None",
6666
},

examples/advanced_computer_searches/UpdateAdvancedComputerSearchByID/UpdateAdvancedComputerSearchByID.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func main() {
3535
updatedSearch, err := client.UpdateAdvancedComputerSearchByID(7, &jamfpro.ResponseAdvancedComputerSearch{
3636
Name: "Advanced Search Name",
3737
ViewAs: "Standard Web Page",
38-
Criteria: []jamfpro.Criteria{
38+
Criteria: []jamfpro.AdvancedComputerSearchesCriteria{
3939
{
4040
Size: 1,
4141
Criterion: jamfpro.CriterionDetail{
@@ -49,15 +49,15 @@ func main() {
4949
},
5050
},
5151
},
52-
DisplayFields: []jamfpro.DisplayField{
52+
DisplayFields: []jamfpro.AdvancedComputerSearchesDisplayField{
5353
{
5454
Size: 1,
5555
DisplayField: jamfpro.DisplayFieldDetail{
5656
Name: "IP Address",
5757
},
5858
},
5959
},
60-
Site: jamfpro.SiteDetail{
60+
Site: jamfpro.AdvancedComputerSearchesSiteDetail{
6161
ID: -1,
6262
Name: "None",
6363
},

examples/advanced_computer_searches/UpdateAdvancedComputerSearchByName/UpdateAdvancedComputerSearchByName.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func main() {
3838
updatedSearch, err := client.UpdateAdvancedComputerSearchByName(advancedComputerSearchName, &jamfpro.ResponseAdvancedComputerSearch{
3939
Name: "Advanced Search Name Updated",
4040
ViewAs: "Standard Web Page",
41-
Criteria: []jamfpro.Criteria{
41+
Criteria: []jamfpro.AdvancedComputerSearchesCriteria{
4242
{
4343
Size: 1,
4444
Criterion: jamfpro.CriterionDetail{
@@ -52,15 +52,15 @@ func main() {
5252
},
5353
},
5454
},
55-
DisplayFields: []jamfpro.DisplayField{
55+
DisplayFields: []jamfpro.AdvancedComputerSearchesDisplayField{
5656
{
5757
Size: 1,
5858
DisplayField: jamfpro.DisplayFieldDetail{
5959
Name: "IP Address",
6060
},
6161
},
6262
},
63-
Site: jamfpro.SiteDetail{
63+
Site: jamfpro.AdvancedComputerSearchesSiteDetail{
6464
ID: -1,
6565
Name: "None",
6666
},
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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 mobile device search request based on the provided XML
37+
search := jamfpro.ResponseAdvancedMobileDeviceSearches{
38+
Name: "Advanced Search Name",
39+
ViewAs: "Standard Web Page",
40+
Criteria: []jamfpro.AdvancedMobileDeviceSearchesCriteria{
41+
{
42+
Criterion: jamfpro.Criterion{
43+
Name: "Last Inventory Update",
44+
Priority: 0,
45+
AndOr: "and",
46+
SearchType: "more than x days ago",
47+
Value: 7,
48+
},
49+
},
50+
},
51+
DisplayFields: []jamfpro.AdvancedMobileDeviceSearchesDisplayField{
52+
{
53+
DisplayField: jamfpro.AdvancedMobileDeviceSearchesDisplayFieldItem{
54+
Name: "IP Address",
55+
},
56+
},
57+
},
58+
Site: jamfpro.AdvancedMobileDeviceSearchesSite{
59+
ID: -1,
60+
Name: "None",
61+
},
62+
}
63+
64+
// Create the new advanced mobile device search by ID
65+
createdSearch, err := client.CreateAdvancedMobileDeviceSearchByID(1, &search)
66+
if err != nil {
67+
log.Fatalf("Failed to create advanced mobile device search by ID: %v", err)
68+
}
69+
70+
// Convert the created search into pretty XML for printing
71+
output, err := xml.MarshalIndent(createdSearch, "", " ")
72+
if err != nil {
73+
log.Fatalf("Error marshaling created search to XML: %v", err)
74+
}
75+
76+
// Print the pretty XML
77+
fmt.Printf("Created Advanced Mobile Device Search:\n%s\n", string(output))
78+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main
2+
3+
import (
4+
"log"
5+
6+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
7+
)
8+
9+
const (
10+
// Define the ID of the mobile device search you want to delete
11+
SearchIDToDelete = 123
12+
)
13+
14+
func main() {
15+
// Define the path to the JSON configuration file
16+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
17+
18+
// Load the client OAuth credentials from the configuration file
19+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
20+
if err != nil {
21+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
22+
}
23+
24+
// Configuration for Jamf Pro
25+
config := jamfpro.Config{
26+
InstanceName: authConfig.InstanceName,
27+
DebugMode: true,
28+
Logger: jamfpro.NewDefaultLogger(),
29+
ClientID: authConfig.ClientID,
30+
ClientSecret: authConfig.ClientSecret,
31+
}
32+
33+
// Create a new Jamf Pro client instance
34+
client, err := jamfpro.NewClient(config)
35+
if err != nil {
36+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
37+
}
38+
39+
// Use the client to delete an advanced mobile device search by ID
40+
// Replace 123 with the actual ID
41+
err = client.DeleteAdvancedMobileDeviceSearchByID(SearchIDToDelete)
42+
if err != nil {
43+
log.Fatalf("Error deleting advanced mobile device search by ID: %v", err)
44+
} else {
45+
log.Printf("Successfully deleted Advanced Mobile Device Search with ID: %d\n", SearchIDToDelete)
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package main
2+
3+
import (
4+
"log"
5+
6+
"github.com/deploymenttheory/go-api-sdk-jamfpro/sdk/jamfpro"
7+
)
8+
9+
const (
10+
// Define the name of the mobile device search you want to delete
11+
SearchNameToDelete = "Advanced Search Name"
12+
)
13+
14+
func main() {
15+
// Define the path to the JSON configuration file
16+
configFilePath := "/Users/dafyddwatkins/GitHub/deploymenttheory/go-api-sdk-jamfpro/clientauth.json"
17+
18+
// Load the client OAuth credentials from the configuration file
19+
authConfig, err := jamfpro.LoadClientAuthConfig(configFilePath)
20+
if err != nil {
21+
log.Fatalf("Failed to load client OAuth configuration: %v", err)
22+
}
23+
24+
// Configuration for Jamf Pro
25+
config := jamfpro.Config{
26+
InstanceName: authConfig.InstanceName,
27+
DebugMode: true,
28+
Logger: jamfpro.NewDefaultLogger(),
29+
ClientID: authConfig.ClientID,
30+
ClientSecret: authConfig.ClientSecret,
31+
}
32+
33+
// Create a new Jamf Pro client instance
34+
client, err := jamfpro.NewClient(config)
35+
if err != nil {
36+
log.Fatalf("Failed to create Jamf Pro client: %v", err)
37+
}
38+
39+
// Use the client to delete an advanced mobile device search by name
40+
err = client.DeleteAdvancedMobileDeviceSearchByName(SearchNameToDelete)
41+
if err != nil {
42+
log.Fatalf("Error deleting advanced mobile device search by name: %v", err)
43+
} else {
44+
log.Printf("Successfully deleted Advanced Mobile Device Search with name: %s\n", SearchNameToDelete)
45+
}
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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+
// The ID of the advanced mobile device search you want to retrieve
37+
searchID := 5 // Replace with the actual ID you want to retrieve
38+
39+
// Call the GetAdvancedMobileDeviceSearchByID function
40+
search, err := client.GetAdvancedMobileDeviceSearchByID(searchID)
41+
if err != nil {
42+
log.Fatalf("Error fetching advanced mobile device search by ID: %v", err)
43+
}
44+
45+
// Convert the response into pretty XML for printing
46+
output, err := xml.MarshalIndent(search, "", " ")
47+
if err != nil {
48+
log.Fatalf("Error marshaling search to XML: %v", err)
49+
}
50+
51+
// Print the pretty XML
52+
fmt.Printf("Advanced Mobile Device Search (ID: %d):\n%s\n", searchID, string(output))
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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+
// The name of the advanced mobile device search you want to retrieve
37+
searchName := "Advanced Search Name" // Replace with the actual name you want to retrieve
38+
39+
// Call the GetAdvancedMobileDeviceSearchByName function
40+
search, err := client.GetAdvancedMobileDeviceSearchByName(searchName)
41+
if err != nil {
42+
log.Fatalf("Error fetching advanced mobile device search by name: %v", err)
43+
}
44+
45+
// Convert the response into pretty XML for printing
46+
output, err := xml.MarshalIndent(search, "", " ")
47+
if err != nil {
48+
log.Fatalf("Error marshaling search to XML: %v", err)
49+
}
50+
51+
// Print the pretty XML
52+
fmt.Printf("Advanced Mobile Device Search (Name: %s):\n%s\n", searchName, string(output))
53+
}

0 commit comments

Comments
 (0)