Script Profiles¶
The endpoints available here are related to the management of script profiles and are available only on self-hosted deployments.
GET /script-profiles
¶
Get script profiles associated with the current account, ordered by creation time.
Optional query parameters:
archived
: the status of the script profile to filter by. Can be one ofarchived
,active
orall
. Defaults toactive
.offset
: The offset inside the list of results, used for pagination.limit
: The maximum number of results returned, defaults to 1000.
Example request:
curl -X GET https://landscape.canonical.com/api/v2/script-profiles?archived=all -H "Authorization: Bearer $JWT"
curl -X GET https://landscape.canonical.com/api/v2/script-profiles -H "Authorization: Bearer $JWT"
Example output:
{
"results": [
{
"id": 5,
"title": "Recurring Script Profile",
"script_id": 35,
"access_group": "global",
"created_by": {
"name": "John Smith",
"id": 1
},
"created_at": "2025-04-10T23:36:21.411941",
"last_edited_at": "2025-04-10T23:36:21.411941",
"trigger": {
"trigger_type": "recurring",
"interval": "0 8 * * *",
"start_after": "2025-04-23T02:10:41Z",
"last_run": null,
"next_run": "2025-04-23T00:08:00Z"
},
"all_computers": true,
"tags": [],
"time_limit": 150,
"username": "landscape",
"computers": {
"num_associated_computers": 20
},
"activities": {
"last_activity": null
},
"archived": false
},
{
"id": 4,
"title": "Post Enrollment Script Profile",
"script_id": 31,
"access_group": "global",
"created_by": {
"name": "John Smith",
"id": 1
},
"created_at": "2025-04-10T23:29:58.396345",
"last_edited_at": "2025-04-10T23:29:58.396345",
"trigger": {
"trigger_type": "event",
"event_type": "post_enrollment"
},
"all_computers": false,
"tags": [
"server",
"laptop"
],
"time_limit": 200,
"username": "ubuntu",
"computers": {
"num_associated_computers": 0
},
"activities": {
"last_activity": null
},
"archived": false
},
{
"id": 1,
"title": "One Time Script Profile",
"script_id": 34,
"access_group": "server",
"created_by": {
"name": "John Smith",
"id": 1
},
"created_at": "2025-04-10T23:27:10.568080",
"last_edited_at": "2025-04-10T23:27:10.568080",
"trigger": {
"trigger_type": "one_time",
"timestamp": "2025-04-04T02:10:41Z",
"is_finished": true,
"next_run": null,
"last_run": "2025-04-11T17:56:47Z"
},
"all_computers": true,
"tags": [],
"time_limit": 360,
"username": "root",
"computers": {
"num_associated_computers": 20
},
"activities": {
"last_activity": {
"id": 2396,
"creation_time": "2025-04-11T17:56:47Z",
"creator": {
"name": "John Smith",
"email": "[email protected]",
"id": 1
},
"type": "ActivityGroup",
"summary": "Run script",
"completion_time": null,
"parent_id": null,
"deliver_delay_window": 0,
"result_text": null,
"result_code": null,
"activity_status": "undelivered"
}
},
"archived": false
}
],
"count": 3,
"next": null,
"previous": null
}
GET /script-profiles/<id>
¶
Get a script profile by id
.
Path parameters:
id
: The identification number of the profile.
Example request:
curl -X GET https://landscape.canonical.com/api/v2/script-profiles/116782 -H "Authorization: Bearer $JWT"
Example output:
{
{
"id": 116782,
"title": "Post Enrollment Script Profile",
"script_id": 31,
"access_group": "global",
"created_by": {
"name": "John Smith",
"id": 1
},
"created_at": "2025-04-10T23:29:58.396345",
"last_edited_at": "2025-04-10T23:29:58.396345",
"trigger": {
"trigger_type": "event",
"event_type": "post_enrollment"
},
"all_computers": false,
"tags": [
"server",
"laptop"
],
"time_limit": 200,
"username": "ubuntu",
"computers": {
"num_associated_computers": 0
},
"activities": {
"last_activity": null
},
"archived": false
},
}
POST /script-profiles
¶
Create a script profile.
Required parameters:
title
: The display name of the profile.script_id
: The id of the script this profile is associated with, must be av2
script.all_computers
: Iftrue
, the profile will be applied to all instances in the script’saccess_group
, regardless oftags
.tags
: An array of tag strings. The profile will be applied only to instances with these tags in the script’saccess_group
.time_limit
: The time, in seconds, after which the script is considered defunct. The process will be killed, and the script execution will be marked as failed after this limit expires.username
: The username to execute the script as on the client.trigger
: Defined as a trigger based on which the profile should execute.
Example request:
curl -X POST "https://landscape.canonical.com/api/v2/script-profiles" -H "Authorization: Bearer $JWT" -d '
{
"title": "Optics and Design",
"username": "root",
"time_limit": 360,
"script_id": 35,
"tags": [],
"all_computers": true,
"trigger": {
"trigger_type": "event",
"event_type": "post_enrollment"
}
}'
Example output:
{
"id": 176892,
"title": "Optics and Design",
"script_id": 35,
"access_group": "global",
"created_by": {
"name": "John Smith",
"id": 1
},
"created_at": "2025-04-23T07:53:01.226040",
"last_edited_at": "2025-04-23T07:53:01.226040",
"trigger": {
"trigger_type": "event",
"event_type": "post_enrollment"
},
"all_computers": true,
"tags": [],
"time_limit": 360,
"username": "root",
"computers": {
"num_associated_computers": 0
},
"activities": {
"last_activity": null
},
"archived": false
}
Trigger¶
Required parameteres:
trigger_type
: Either ofevent
,one_time
,recurring
.
Each trigger_type
has corresponding required parameters.
Event¶
event_type
: Currently only thepost_enrollment
event is available, which triggers after a computer is enrolled in an account.
One Time¶
timestamp
: An ISO 8601-formatted datestamp that sets when the profile should execute. If it is in the past, the profile will start its first run immediately.
Recurring¶
start_after
: An ISO 8601-formatted datestamp that sets the earliest time after which the profile should be scheduled to execute.interval
: A 5 digit, Cron string.
PATCH /script-profiles/<id>
¶
Update a script profile.
Path parameters:
id
: The identification number of the profile to update.
Optional parameters:
title
: The display name of the profile.all_computers
: Iftrue
, the profile will be applied to all instances in the script’saccess_group
, regardless oftags
.tags
: An array of tag strings. The profile will be applied only to instances with these tags in the script’saccess_group
.time_limit
: The time, in seconds, after which the script is considered defunct. The process will be killed, and the script execution will be marked as failed after this limit expires.username
: The username to execute the script as on the client.trigger
: Defined as a trigger based on which the profile should execute.
Example request:
curl -X PATCH "https://landscape.canonical.com/api/v2/script-profiles/176892" -H "Authorization: Bearer $JWT" -d '
{
"title": "Macrodata Refinement",
"username": "landscape",
"time_limit": 270,
"tags": ["server"],
"all_computers": false'
}
Example output:
{
"id": 18,
"title": "Macrodata Refinement",
"script_id": 35,
"access_group": "global",
"created_by": {
"name": "John Smith",
"id": 1
},
"created_at": "2025-04-23T07:55:16.592280",
"last_edited_at": "2025-04-23T08:07:53.838104",
"trigger": {
"trigger_type": "event",
"event_type": "post_enrollment"
},
"all_computers": false,
"tags": [
"server"
],
"time_limit": 270,
"username": "landscape",
"computers": {
"num_associated_computers": 0
},
"activities": {
"last_activity": null
},
"archived": false
}
POST /script-profiles/<id>:archive
¶
Archive a script profile. This makes it inactive.
Path parameters:
id
: The identification number of the profile to archive.
Example request:
curl -X POST "https://landscape.canonical.com/api/v2/script-profiles/176892:archive" -H "Authorization: Bearer $JWT"
GET /script-profiles/<id>/activities
¶
Get parent activities associated with a script profile ordered by creation time.
Path parameters:
id
: The identification number of the profile.offset
: The offset inside the list of results, used for pagination.limit
: The maximum number of results returned, defaults to 1000.
Example request:
curl -X POST "https://landscape.canonical.com/api/v2/script-profiles/176892/activities" -H "Authorization: Bearer $JWT"
Example output:
{
"results": [
{
"id": 2396,
"creation_time": "2025-04-11T17:56:47Z",
"creator": {
"name": "John Smith",
"email": "[email protected]",
"id": 1
},
"type": "ActivityGroup",
"summary": "Run script",
"completion_time": null,
"parent_id": null,
"deliver_delay_window": 0,
"result_text": null,
"result_code": null,
"activity_status": "undelivered"
}
],
"count": 1,
"next": null,
"previous": null
}
GET /script-profile-limits
¶
Get account wide limits associated with script profiles.
Example request:
curl -X POST "https://landscape.canonical.com/api/v2/script-profile-limits" -H "Authorization: Bearer $JWT"
Example output:
{
"max_num_computers": 5000,
"max_num_profiles": 10,
"min_interval": 360
}
min_interval
: The minimum time, in minutes, between execution of recurring script profiles that Landscape enforces.