GET /api/organizations/447626439/job_templates
200
{
"total": 1,
"subtotal": 1,
"page": 1,
"per_page": 20,
"search": null,
"sort": {
"by": null,
"order": null
},
"results": [
{
"id": 1007981799,
"name": "Job template 43",
"job_category": "Job name 42",
"provider_type": "SSH",
"snippet": false,
"description_format": null,
"created_at": "2026-02-10 17:09:02 UTC",
"updated_at": "2026-02-10 17:09:02 UTC"
}
]
}
| Param name | Description |
|---|---|
|
location_id
optional |
Scope by locations Validations:
|
|
organization_id
optional |
Scope by organizations Validations:
|
|
search
optional |
filter results Validations:
|
|
order
optional |
Sort and order by a searchable field, e.g. '<field> DESC' Validations:
|
|
page
optional |
Page number, starting at 1 Validations:
|
|
per_page
optional |
Number of results per page to return, 'all' to return all results Validations:
|
POST /api/job_templates/import
{
"template": "<%#\nname: Job template 52_renamed\nsnippet: false\nmodel: JobTemplate\njob_category: Job name 51\nprovider_type: SSH\nkind: job_template\norganizations:\n- Organization 1\nlocations:\n- Location 1\n%>\n\nid",
"job_template": {
"template": "<%#\nname: Job template 52_renamed\nsnippet: false\nmodel: JobTemplate\njob_category: Job name 51\nprovider_type: SSH\nkind: job_template\norganizations:\n- Organization 1\nlocations:\n- Location 1\n%>\n\nid"
}
}
201
{
"id": 1007981811,
"name": "Job template 52_renamed",
"template": "id",
"snippet": false,
"template_kind_id": null,
"created_at": "2026-02-10T17:09:04.619Z",
"updated_at": "2026-02-10T17:09:04.619Z",
"locked": false,
"default": false,
"vendor": null,
"os_family": null,
"job_category": "Job name 51",
"provider_type": "SSH",
"description_format": null,
"execution_timeout_interval": null,
"description": null,
"ansible_callback_enabled": false,
"cloned_from_id": null,
"ansible_check_mode": false
}
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
options
optional |
Validations:
|
|
options[force]
optional , nil allowed |
use if you want update locked templates Validations:
|
|
options[associate]
optional , nil allowed |
determines when the template should associate objects based on metadata, new means only when new template is being created, always means both for new and existing template which is only being updated, never ignores metadata Validations:
|
|
options[lock]
optional , nil allowed |
lock imported templates (false by default) Validations:
|
|
options[default]
optional , nil allowed |
makes the template default meaning it will be automatically associated with newly created organizations and locations (false by default) Validations:
|
|
template
required |
Template ERB Validations:
|
|
overwrite
optional |
Overwrite template if it already exists Validations:
|
GET /api/job_templates/1007981804-Job%20template%2047/export 200 <%# name: Job template 47 snippet: false model: JobTemplate job_category: Job name 46 provider_type: SSH kind: job_template organizations: - Organization 1 locations: - Location 1 %> id
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
id
required |
Validations:
|
GET /api/job_templates/1007981812-Job%20template%2053
200
{
"description": null,
"description_format": null,
"created_at": "2026-02-10 17:09:05 UTC",
"updated_at": "2026-02-10 17:09:05 UTC",
"template": "id",
"locked": false,
"cloned_from_id": null,
"id": 1007981812,
"name": "Job template 53",
"job_category": "Job name 52",
"provider_type": "SSH",
"snippet": false,
"template_inputs": [],
"effective_user": {
"value": null,
"current_user": false,
"overridable": true
},
"locations": [
{
"id": 255093256,
"name": "Location 1",
"title": "Location 1",
"description": null
}
],
"organizations": [
{
"id": 447626438,
"name": "Organization 1",
"title": "Organization 1",
"description": null
}
],
"ansible_callback_enabled": false,
"ansible_check_mode": false
}
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
id
required |
Validations:
|
POST /api/job_templates
{
"job_template": {}
}
422
{
"error": {
"id": null,
"errors": {
"name": [
"can't be blank"
],
"template": [
"can't be blank"
],
"provider_type": [
"can't be blank",
"Translation missing. Options considered were:\n- en.activerecord.errors.models.job_template.attributes.provider_type.uniq\n- en.activerecord.errors.models.job_template.uniq\n- en.activerecord.errors.messages.uniq\n- en.errors.attributes.provider_type.uniq\n- en.errors.messages.uniq"
]
},
"full_messages": [
"Name can't be blank",
"Template can't be blank",
"Provider type can't be blank",
"Provider type Translation missing. Options considered were:\n- en.activerecord.errors.models.job_template.attributes.provider_type.uniq\n- en.activerecord.errors.models.job_template.uniq\n- en.activerecord.errors.messages.uniq\n- en.errors.attributes.provider_type.uniq\n- en.errors.messages.uniq"
]
}
}
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
job_template
required |
Validations:
|
|
job_template[name]
required |
Template name Validations:
|
|
job_template[description]
optional , nil allowed |
Validations:
|
|
job_template[job_category]
required |
Job category Validations:
|
|
job_template[description_format]
optional , nil allowed |
This template is used to generate the description. Input values can be used using the syntax %{package}. You may also include the job category and template name using %{job_category} and %{template_name}. Validations:
|
|
job_template[template]
required |
Validations:
|
|
job_template[provider_type]
required |
Provider type Validations:
|
|
job_template[snippet]
optional , nil allowed |
Validations:
|
|
job_template[audit_comment]
optional , nil allowed |
Validations:
|
|
job_template[locked]
optional , nil allowed |
Whether or not the template is locked for editing Validations:
|
|
job_template[effective_user_attributes]
optional , nil allowed |
Effective user options Validations:
|
|
job_template[effective_user_attributes][value]
optional , nil allowed |
What user should be used to run the script (using sudo-like mechanisms) Validations:
|
|
job_template[effective_user_attributes][overridable]
optional , nil allowed |
Whether it should be allowed to override the effective user from the invocation form. Validations:
|
|
job_template[effective_user_attributes][current_user]
optional , nil allowed |
Whether the current user login should be used as the effective user Validations:
|
|
job_template[location_ids]
optional , nil allowed |
REPLACE locations with given ids Validations:
|
|
job_template[organization_ids]
optional , nil allowed |
REPLACE organizations with given ids. Validations:
|
|
job_template[ansible_callback_enabled]
optional |
Enable the callback plugin for this template Validations:
|
|
job_template[ansible_check_mode]
optional |
Enable Ansible Check Mode for this template Validations:
|
PUT /api/job_templates/1007981805-Job%20template%2048
{
"job_template": {
"name": ""
}
}
422
{
"error": {
"id": 1007981805,
"errors": {
"name": [
"can't be blank"
]
},
"full_messages": [
"Name can't be blank"
]
}
}
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
id
required |
Validations:
|
|
job_template
required |
Validations:
|
|
job_template[name]
optional |
Template name Validations:
|
|
job_template[description]
optional , nil allowed |
Validations:
|
|
job_template[job_category]
optional |
Job category Validations:
|
|
job_template[description_format]
optional , nil allowed |
This template is used to generate the description. Input values can be used using the syntax %{package}. You may also include the job category and template name using %{job_category} and %{template_name}. Validations:
|
|
job_template[template]
optional |
Validations:
|
|
job_template[provider_type]
optional |
Provider type Validations:
|
|
job_template[snippet]
optional , nil allowed |
Validations:
|
|
job_template[audit_comment]
optional , nil allowed |
Validations:
|
|
job_template[locked]
optional , nil allowed |
Whether or not the template is locked for editing Validations:
|
|
job_template[effective_user_attributes]
optional , nil allowed |
Effective user options Validations:
|
|
job_template[effective_user_attributes][value]
optional , nil allowed |
What user should be used to run the script (using sudo-like mechanisms) Validations:
|
|
job_template[effective_user_attributes][overridable]
optional , nil allowed |
Whether it should be allowed to override the effective user from the invocation form. Validations:
|
|
job_template[effective_user_attributes][current_user]
optional , nil allowed |
Whether the current user login should be used as the effective user Validations:
|
|
job_template[location_ids]
optional , nil allowed |
REPLACE locations with given ids Validations:
|
|
job_template[organization_ids]
optional , nil allowed |
REPLACE organizations with given ids. Validations:
|
|
job_template[ansible_callback_enabled]
optional |
Enable the callback plugin for this template Validations:
|
|
job_template[ansible_check_mode]
optional |
Enable Ansible Check Mode for this template Validations:
|
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
version
optional |
Template version Validations:
|
DELETE /api/job_templates/1007981800-Job%20template%2044
{
"job_template": {}
}
200
{
"id": 1007981800,
"name": "Job template 44",
"template": "id",
"snippet": false,
"template_kind_id": null,
"created_at": "2026-02-10T17:09:03.653Z",
"updated_at": "2026-02-10T17:09:03.653Z",
"locked": false,
"default": false,
"vendor": null,
"os_family": null,
"job_category": "Job name 43",
"provider_type": "SSH",
"description_format": null,
"execution_timeout_interval": null,
"description": null,
"ansible_callback_enabled": false,
"cloned_from_id": null,
"ansible_check_mode": false
}
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
id
required |
Validations:
|
POST /api/job_templates/1007981795-Job%20template%2040/clone
{
"job_template": {
"name": ""
}
}
422
{
"error": {
"id": null,
"errors": {
"name": [
"can't be blank"
]
},
"full_messages": [
"Name can't be blank"
]
}
}
| Param name | Description |
|---|---|
|
location_id
optional |
Set the current location context for the request Validations:
|
|
organization_id
optional |
Set the current organization context for the request Validations:
|
|
id
required |
Validations:
|
|
job_template
required |
Validations:
|
|
job_template[name]
required |
Template name Validations:
|