Actions
API » History » Revision 11
« Previous |
Revision 11/45
(diff)
| Next »
Justin Sherrill, 02/21/2011 12:55 PM
API¶
NOTE: Version of 0.1-6 or git develop branch are required to use the API
Foreman provides a REST API, communicating via JSON.
Please refer to this document for latest information about Foreman API.
Examples below are either via curl or ruby rest_client
most pages can be browsed via adding the format option to the url (at least for get requests), i.e.
http://foreman/environemnts?format=json
Or using HTTP Headers
curl -H "Content-Type:application/json" -H "Accept:application/json" http://foreman/hosts
Output is JSON formatted, in the last example expect a similar output:
[{"host":{"name":"pm1.local.net"}},{"host":{"name":"pm2.local.net"}}....]
List of API's¶
Path | REST Type | Example JSON |
---|---|---|
/roles/ID | DELETE | {role:{"name":string}} |
/roles | POST | {role:{"builtin":string, "name":string, "permissions":string}} |
/roles | GET | |
/roles/ID | PUT | {role:{"builtin":string, "name":string, "permissions":string}} |
/factvalues | POST | {factvalue:{"fact_name_id":int, "host_id":int, "value":string}} |
/factvalues | GET | |
/environments/ID | DELETE | {environment:{"name":string}} |
/environments | POST | {environment:{"name":string}} |
/environments | GET | |
/environments/ID | PUT | {environment:{"name":string}} |
/operatingsystems/ID | DELETE | {operatingsystem:{"name":string}} |
/operatingsystems | POST | {operatingsystem:{"major":string, "minor":string, "name":string, "nameindicator":string, "release_name":string, "type":string}} |
/operatingsystems | GET | |
/operatingsystems/ID | PUT | {operatingsystem:{"major":string, "minor":string, "name":string, "nameindicator":string, "release_name":string, "type":string}} |
/hostgroups/ID | DELETE | {hostgroup:{"name":string}} |
/hostgroups | POST | {hostgroup:{"architecture_id":int, "environment_id":int, "medium_id":int, "name":string, "operatingsystem_id":int, "ptable_id":int, "puppetmaster":string, "root_pass":string}} |
/hostgroups | GET | |
/hostgroups/ID | PUT | {hostgroup:{"architecture_id":int, "environment_id":int, "medium_id":int, "name":string, "operatingsystem_id":int, "ptable_id":int, "puppetmaster":string, "root_pass":string}} |
/ptables/ID | DELETE | {ptable:{"name":string}} |
/ptables | POST | {ptable:{"layout":string, "name":string, "operatingsystem_id":int}} |
/ptables | GET | |
/ptables/ID | PUT | {ptable:{"layout":string, "name":string, "operatingsystem_id":int}} |
/authsourceldaps/ID | DELETE | {authsourceldap:{"name":string}} |
/authsourceldaps | POST | {authsourceldap:{"account":string, "account_password":string, "attr_firstname":string, "attr_lastname":string, "attr_login":string, "attr_mail":string, "base_dn":string, "host":string, "name":string, "onthefly_register":string, "port":string, "tls":string, "type":string}} |
/authsourceldaps | GET | |
/authsourceldaps/ID | PUT | {authsourceldap:{"account":string, "account_password":string, "attr_firstname":string, "attr_lastname":string, "attr_login":string, "attr_mail":string, "base_dn":string, "host":string, "name":string, "onthefly_register":string, "port":string, "tls":string, "type":string}} |
/domains/ID | DELETE | {domain:{"name":string}} |
/domains | POST | {domain:{"dns_id":int, "fullname":string, "name":string}} |
/domains | GET | |
/domains/ID | PUT | {domain:{"dns_id":int, "fullname":string, "name":string}} |
/puppetclasses/ID | DELETE | {puppetclass:{"name":string}} |
/puppetclasses | POST | {puppetclass:{"name":string, "nameindicator":string, "operatingsystem_id":int}} |
/puppetclasses | GET | |
/puppetclasses/ID | PUT | {puppetclass:{"name":string, "nameindicator":string, "operatingsystem_id":int}} |
/hypervisors/ID | DELETE | {hypervisor:{"name":string}} |
/hypervisors | POST | {hypervisor:{"kind":string, "name":string, "uri":string}} |
/hypervisors | GET | |
/hypervisors/ID | PUT | {hypervisor:{"kind":string, "name":string, "uri":string}} |
/models/ID | DELETE | {model:{"name":string}} |
/models | POST | {model:{"info":string, "name":string}} |
/models | GET | |
/models/ID | PUT | {model:{"info":string, "name":string}} |
/usergroups/ID | DELETE | {usergroup:{"name":string}} |
/usergroups | POST | {usergroup:{"name":string}} |
/usergroups | GET | |
/usergroups/ID | PUT | {usergroup:{"name":string}} |
/reports/ID | DELETE | {report:{}} |
/reports | POST | {report:{"host_id":int, "metrics":string, "reported_at":string, "status":string}} |
/reports | GET | |
/configtemplates/ID | DELETE | {configtemplate:{"name":string}} |
/configtemplates | POST | {configtemplate:{"hostgroup_id":int, "name":string, "snippet":string, "template":string, "template_kind_id":int}} |
/configtemplates | GET | |
/configtemplates/ID | PUT | {configtemplate:{"hostgroup_id":int, "name":string, "snippet":string, "template":string, "template_kind_id":int}} |
/commonparameters/ID | DELETE | {commonparameter:{"name":string}} |
/commonparameters | POST | {commonparameter:{"name":string, "reference_id":int, "type":string, "value":string}} |
/commonparameters | GET | |
/commonparameters/ID | PUT | {commonparameter:{"name":string, "reference_id":int, "type":string, "value":string}} |
/users/ID | DELETE | {user:{}} |
/users | POST | {user:{"admin":string, "auth_source_id":int, "domains_andor":string, "facts_andor":string, "filter_on_owner":string, "firstname":string, "hostgroups_andor":string, "last_login_on":string, "lastname":string, "login":string, "mail":string, "password_hash":string, "password_salt":string, "role_id":int}} |
/users | GET | |
/users/ID | PUT | {user:{"admin":string, "auth_source_id":int, "domains_andor":string, "facts_andor":string, "filter_on_owner":string, "firstname":string, "hostgroups_andor":string, "last_login_on":string, "lastname":string, "login":string, "mail":string, "password_hash":string, "password_salt":string, "role_id":int}} |
/architectures/ID | DELETE | {architecture:{"name":string}} |
/architectures | POST | {architecture:{"name":string}} |
/architectures | GET | |
/architectures/ID | PUT | {architecture:{"name":string}} |
/media/ID | DELETE | {medium:{"name":string}} |
/media | POST | {medium:{"name":string, "path":string}} |
/media | GET | |
/media/ID | PUT | {medium:{"name":string, "path":string}} |
/hosts/fqdn | DELETE | {host:{"name":string}} |
/hosts | POST | {host:{"architecture_id":int, "build":string, "comment":string, "disk":string, "domain_id":int, "enabled":string, "environment":string, "environment_id":int, "hostgroup_id":int, "installed_at":string, "ip":string, "last_compile":string, "last_freshcheck":string, "last_report":string, "mac":string, "medium_id":int, "model_id":int, "name":string, "operatingsystem_id":int, "owner_id":int, "owner_type":string, "ptable_id":int, "puppet_status":string, "puppetmaster":string, "root_pass":string, "serial":string, "source_file_id":int, "sp_ip":string, "sp_mac":string, "sp_name":string, "sp_subnet_id":int, "subnet_id":int}} |
/hosts | GET | |
/hosts/fqdn | PUT | {host:{"architecture_id":int, "build":string, "comment":string, "disk":string, "domain_id":int, "enabled":string, "environment":string, "environment_id":int, "hostgroup_id":int, "installed_at":string, "ip":string, "last_compile":string, "last_freshcheck":string, "last_report":string, "mac":string, "medium_id":int, "model_id":int, "name":string, "operatingsystem_id":int, "owner_id":int, "owner_type":string, "ptable_id":int, "puppet_status":string, "puppetmaster":string, "root_pass":string, "serial":string, "source_file_id":int, "sp_ip":string, "sp_mac":string, "sp_name":string, "sp_subnet_id":int, "subnet_id":int}} |
/subnets/ID | DELETE | {subnet:{"name":string}} |
/subnets | POST | {subnet:{"dhcp_id":int, "domain_id":int, "mask":string, "name":string, "network":string, "priority":string, "ranges":string, "tftp_id":int, "vlanid":int}} |
/subnets | GET | |
/subnets/ID | PUT | {subnet:{"dhcp_id":int, "domain_id":int, "mask":string, "name":string, "network":string, "priority":string, "ranges":string, "tftp_id":int, "vlanid":int}} |
/smartproxies/ID | DELETE | {smartproxy:{"name":string}} |
/smartproxies | POST | {smartproxy:{"name":string, "url":string}} |
/smartproxies | GET | |
/smartproxies/ID | PUT | {smartproxy:{"name":string, "url":string}} |
/lookupkeys/ID | DELETE | {lookupkey:{}} |
/lookupkeys | POST | {lookupkey:{"key":string}} |
/lookupkeys | GET | |
/lookupkeys/ID | PUT | {lookupkey:{"key":string}} |
/architectures | GET | List of valid OS Architectures(name and ID) |
/architectures/x86_64 | GET | Description of the x86_64 Architecture (name and ID) |
/dashboard | GET | Summary statistcs (total hosts, active hosts, hosts in error etc) |
/domains | GET | List of known domains (name and ID) |
/domains/my_domain | GET | Description of "my_domain" (name and ID) |
/environments | GET | List of known environments (name and ID) |
/environments/production | GET | Description of the "production" (name and ID and associated host list) |
/fact_values | GET | List of known Facts (value, name and host) |
/hostgroups | GET | List of known hostgroups (name and ID) |
/hostgroups/common | GET | Description of "common" (name and ID) |
/hosts | GET | List of known hosts (only name) |
/hosts/errors | GET | List of hosts in error state(only name) |
/hosts/active | GET | List of active hosts(only name) |
/hosts/out_of_sync | GET | List of out of sync hosts(only name) |
/hosts/disabled | GET | List of disabled hosts(only name) |
/hosts | POST | creates a new host, 201 return sucesful creation, otherwise the errors will be returned |
/hosts/fqdn | GET | Host Attributes (name, usergroup, last_report, os properties...) |
/hosts/fqdn | DELETE | Removes the host "fqdn" |
/hosts/fqdn/setBuild | GET | Enable Host for (re-)build |
/hosts/fqdn/facts | GET | Returns host facts |
/hosts/fqdn/pxe_config | GET | Returns syslinux configuration file for fqdn |
/medias | GET | List of known mediums (name and ID) |
/medias/1 | GET | Description of media which ID is 1 (name and ID and path/url) |
/operatingsystems | GET | List of known operating systems (Release name, ID and allowed mediums, architectures and partition tables) |
/operatingsystems/1 | GET | Description of operating systems which its ID is 1 (Release name, ID and allowed mediums, architectures and partition tables) |
/operatingsystems/1/bootfiles?media=<media_name>&architecture=x86_64 | GET | tftp boot files and their respective urls (where they can be found) |
/ptables | GET | List of known Partition tables (name and ID) |
/ptables/1 | GET | Description of Partition table which its ID is 1 (name and ID) |
/puppetclasses | GET | a hash of known Puppetclasses orginazined by module name (module => {:class1, :class2}) |
Please raise a new issue if you need additional API's
Updated by Justin Sherrill almost 14 years ago · 45 revisions