The Autocomplete API provides search functionality for CFEngine classes and variables.

Search classes

Searches for CFEngine classes by name using case-insensitive pattern matching.

URI: https://hub.cfengine.com/api/autocomplete/classes

Method: GET

RBAC permission: autocomplete.get.classes (allowed by default)

Parameters:

  • query (string) Search pattern for class names. Required. Must be 1-100 characters and containonly letters, numbers, dots, colons, or underscores.

Example request (curl):

curl --user <username>:<password> \
  https://hub.cfengine.com/api/autocomplete/classes?query=cfe

Example response:

HTTP 200 OK
[
    "cfengine",
    "cfengine_3",
    "cfengine_3_28",
    "cfengine_3_28_0a",
    "cfengine_3_28_0a_0a2e3af8b",
    "cfengine_reporting_hub"
]

Output:

Returns an array of class names matching the search pattern, sorted alphabetically.

Responses:

HTTP response code Description
200 OK Successful response
422 Unprocessable Entity Validation errors

Error response examples:

Missing required field:

HTTP 422 Unprocessable Entity
{
  "success": false,
  "errors": [
    {
      "field": "[query]",
      "message": "This field is missing."
    }
  ]
}

Search variables

Searches for CFEngine variables by name using case-insensitive pattern matching.

URI: https://hub.cfengine.com/api/autocomplete/variables

Method: GET

RBAC permission: autocomplete.get.variables (allowed by default)

Parameters:

  • query (string) Search pattern for variable names. Required. Must be 1-100 characters and contain only letters, numbers, dots, colons, or underscores.

Example request (curl):

curl --user <username>:<password> \
  https://hub.cfengine.com/api/autocomplete/variables?query=cf

Example response:

HTTP 200 OK
{
    "default:sys.cfengine_roles": "cfengine_roles",
    "default:sys.cf_version": "cf_version",
    "default:def.mpf_admit_cf_runagent_shell_selected": "mpf_admit_cf_runagent_shell_selected",
    "default:sys.cf_edition": "cf_edition"
}

Output:

Returns an object where keys are fully qualified variable names (namespace:bundle.variablename) and values are the variable names, sorted alphabetically by variable name.

Responses:

HTTP response code Description
200 OK Successful response
422 Unprocessable Entity Validation errors

Error response examples:

Missing required field:

HTTP 422 Unprocessable Entity
{
  "success": false,
  "errors": [
    {
      "field": "[query]",
      "message": "This field is missing."
    }
  ]
}

Search inventory attributes

Searches for inventory attribute names using case-insensitive pattern matching.

URI: https://hub.cfengine.com/api/autocomplete/inventory

Method: GET

RBAC permission: No RBAC restrictions (inventory attributes are publicly available)

Parameters:

  • query (string) Search pattern for inventory attribute names. Required. Must be 1-100 characters and contain only letters, numbers, dots, colons, or underscores.

Example request (curl):

curl --user <username>:<password> \
  https://hub.cfengine.com/api/autocomplete/inventory?query=os

Example response:

HTTP 200 OK
[
    "OS",
    "OS type",
    "OS kernel",
    "OS release"
]

Output:

Returns an array of inventory attribute names matching the search pattern, sorted alphabetically.

Responses:

HTTP response code Description
200 OK Successful response
422 Unprocessable Entity Validation errors

Error response examples:

Missing required field:

HTTP 422 Unprocessable Entity
{
  "success": false,
  "errors": [
    {
      "field": "[query]",
      "message": "This field is missing."
    }
  ]
}

Security considerations

The Autocomplete API bypasses database RBAC restrictions and allows users to see any class or variable name in the system. Inventory attributes are available without any restrictions.