Every API here is available over the APIs.io API and to AI agents over MCP.
{
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"schemes": [
"https"
],
"swagger": "2.0",
"info": {
"description": "# Authentication\nThe Chef Automate API typically uses an API token passed in the header of your API request.\n\nTo create admin token can and set it as an environment variable use the following command:\n\n```\nexport TOKEN=`chef-automate iam token create <TOKEN-NAME> --admin`\n```\n\nAn admin token has unlimited access the entire Chef Automate API.\n\nPass the token as part of the API call. For example:\n\n```\ncurl -s -H \"api-token: $TOKEN\" https://automate.example.com/apis/iam/v2/policies -v\n```\n\nTo create api tokens with limited permissions, use your admin token to create a standard token. You can then write a policy that exactly defines the API access for the standard token.\n\nIn this example, the `curl` command creates the new token and the `export` command saves it as an environment variable with the name \"TOKEN2\".\n\n```\ncurl -s -H \"api-token: $TOKEN\" -d '{\"name\":\"New Token\", \"id\":\"new-token\"}' https://automate.example.com/apis/iam/v2/tokens\n {\n \"token\": {\n \"id\": \"new-token\",\n \"name\": \"New Token\",\n \"value\": \"bww8EEpr39_eYMnQ2zybtrP9uzk=\",\n \"active\": true,\n \"created_at\": \"2020-02-26T19:36:07Z\",\n \"updated_at\": \"2020-02-26T19:36:07Z\",\n \"projects\": []\n }\n }\n\nexport TOKEN2=bww8EEpr39_eYMnQ2zybtrP9uzk=\n```\n\nThe Chef Automate documentation covers policies, authentication, and authorization in greater detail.\n* **[API Tokens](https://automate.chef.io/docs/api-tokens/)** explains authentication in Chef Automate.\n* **[Authorization Overview](https://automate.chef.io/docs/iam-v2-overview)** explains authorization in Chef Automate.\n\n# Status Codes\n\n| Status Code | Name | Description | Remark |\n|-------------|-----------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 200 | OK | Correct Id, Auth token and JSON body | The API worked as expected. |\n| 400 | Bad Request | Wrong JSON body | The JSON body contains a key or value missing, sometimes when there is no JSON request passed. In some APIs like `IAM Project Rules`, the API request body validation is given the highest preference. And will return this error even before the Auth token validation. |\n| 401 | Unauthorized | Wrong Auth token | Wrong or no auth token provided. |\n| 403 | Forbidden | Unauthorized access to Resources | Unauthorised Resource ID is passed to the API. The error is returned in case of no Auth token is passed for some APIs like `Node Export` and `ReportExport`. |\n| 404 | Not Found | Wrong Id in URL | Wrong or no Id while creating, updating, retrieving, or deleting resources. |\n| 409 | Conflict | Existing id | Existing resource id provided while creating resources. |\n| 405 | Method Not Allowed | Server does support the method | Server knows the request, but unfortunately, the target resource does not have a method to serve the request. |\n| 500 | Internal Server Error | Server encountered error | Generic status code returned while processing an invalid request or server logics. |\n| 503 | Service Unavailable | Server is down or unable to serve | Generic status code returned when the server gets too busy or into an unserviceable state. This can be because of overwhelming requests like calling `Bulk Delete Nodes by Filter` without JSON body. |\n",
"title": "Chef Automate API Documentation",
"termsOfService": "https://www.chef.io/terms-and-conditions-of-use/",
"contact": {
"url": "https://www.chef.io/support/",
"email": "support@chef.io"
},
"license": {
"name": "Apache 2.0",
"url": "https://github.com/chef/automate/blob/main/LICENSE"
},
"version": "version not set",
"x-logo": {
"altText": "Chef logo",
"url": "/images/chef-automate-logo.svg"
}
},
"host": "automate.chef.io",
"paths": {
"/api/beta/cfgmgmt/rollouts/create": {
"post": {
"description": "Creates a Rollout record. A rollout represents the process of nodes acquiring\nthe latest policy revision pushed to a policy group.\n\nAuthorization Action:\n```\ningest:unifiedEvents:create\n```",
"tags": [
"ConfigMgmt"
],
"summary": "CreateRollout",
"operationId": "ConfigMgmt_CreateRollout",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.request.CreateRollout"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.response.Rollout"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/cfgmgmt/rollouts/find": {
"get": {
"description": "Returns the rollout for the given Chef Server/org, policy group, policy name, and policy revision\n\nAuthorization Action:\n```\ninfra:nodes:list\n```",
"tags": [
"ConfigMgmt"
],
"summary": "GetRolloutForChefRun",
"operationId": "ConfigMgmt_GetRolloutForChefRun",
"parameters": [
{
"type": "string",
"name": "policy_name",
"in": "query"
},
{
"type": "string",
"name": "policy_group",
"in": "query"
},
{
"type": "string",
"name": "policy_revision_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.response.Rollout"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/cfgmgmt/rollouts/list": {
"get": {
"description": "Gives a list of rollouts\n\nAuthorization Action:\n```\ninfra:nodes:list\n```",
"tags": [
"ConfigMgmt"
],
"summary": "GetRollouts",
"operationId": "ConfigMgmt_GetRollouts",
"parameters": [
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"description": "Filters to apply to the request for the rollouts list.",
"name": "filter",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.response.Rollouts"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/cfgmgmt/rollouts/progress_by_node_segment": {
"get": {
"tags": [
"ConfigMgmt"
],
"operationId": "ConfigMgmt_ListNodeSegmentsWithRolloutProgress",
"parameters": [
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"description": "Filters to apply to the request for the node segments list.",
"name": "filter",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.response.NodeSegmentsWithRolloutProgress"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/cfgmgmt/rollouts/rollout/{rollout_id}": {
"get": {
"description": "Returns the rollout with the given Id\n\nAuthorization Action:\n```\ninfra:nodes:list\n```",
"tags": [
"ConfigMgmt"
],
"summary": "GetRolloutById",
"operationId": "ConfigMgmt_GetRolloutById",
"parameters": [
{
"type": "string",
"name": "rollout_id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.response.Rollout"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/cfgmgmt/rollouts/test_create": {
"post": {
"description": "CreateRolloutTest is a no-op endpoint that has the same auth requirements as\nCreateRollout. It can be used to verify end-to-end config/connectivity for\nclients\n\nAuthorization Action:\n```\ningest:unifiedEvents:create\n```",
"tags": [
"ConfigMgmt"
],
"summary": "CreateRolloutTest",
"operationId": "ConfigMgmt_CreateRolloutTest",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.request.CreateRolloutTest"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cfgmgmt.response.CreateRolloutTest"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/content/credentials": {
"post": {
"description": "Submit a Chef Cloud Credentials to enable content\n\nAuthorization Action:\n```\ncontent:credentials:add\n```",
"tags": [
"Cds"
],
"summary": "SubmitCredentials",
"operationId": "Cds_SubmitCredentials",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/chef.automate.api.cds.request.Credentials"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cds.response.Credentials"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/content/enabled": {
"get": {
"description": "Check if the content is enable for this Automate instance. \n\nAuthorization Action:\n```\ncontent:credentials:enabled\n```",
"tags": [
"Cds"
],
"summary": "IsContentEnabled",
"operationId": "Cds_IsContentEnabled",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cds.response.ContentEnabled"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/content/install": {
"post": {
"description": "Installs a content item from its ID\n\nAuthorization Action:\n```\ncontent:items:install\n```",
"tags": [
"Cds"
],
"summary": "InstallContentItem",
"operationId": "Cds_InstallContentItem",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/chef.automate.api.cds.request.InstallContentItem"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cds.response.InstallContentItem"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/beta/content/items": {
"get": {
"description": "Returns a list of metadata for each CDS content. Provides a description and current \nstate of each content item.\n\nAuthorization Action:\n```\ncontent:items:list\n```",
"tags": [
"Cds"
],
"summary": "ListContentItems",
"operationId": "Cds_ListContentItems",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.cds.response.ContentItems"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/delete_disconnected_services": {
"post": {
"description": "Removes services marked as disconnected based on the `threshold_seconds` setting.\nThis function is not used by the API or CLI and is here for testing purposes.\nThe functionality is currently covered by a periodically running job that can be configured using `UpdateDeleteDisconnectedServicesConfig`.\n\nAuthorization Action:\n```\napplications:serviceGroups:delete\n```",
"tags": [
"service_groups"
],
"summary": "Remove Disconnected Services",
"operationId": "ApplicationsService_DeleteDisconnectedServices",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.DisconnectedServicesReq"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.ServicesRes"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/delete_services_by_id": {
"post": {
"description": "Authorization Action:\n```\napplications:serviceGroups:delete\n```",
"tags": [
"service_groups"
],
"summary": "Delete the services with the given IDs",
"operationId": "ApplicationsService_DeleteServicesByID",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.DeleteServicesByIDReq"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.ServicesRes"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/disconnected_services": {
"get": {
"description": "Marks services as disconnected based on the `threshold_seconds` setting.\nThis function is not used by the API or CLI and is here for testing purposes.\nThe functionality is currently covered by a periodically running job that can be configured\nby utilizing the `UpdateDisconnectedServicesConfig` endpoint.\n\nAuthorization Action:\n```\napplications:serviceGroups:list\n```",
"tags": [
"service_groups"
],
"summary": "Mark Services as Disconnected",
"operationId": "ApplicationsService_GetDisconnectedServices",
"parameters": [
{
"type": "integer",
"format": "int32",
"description": "Threshold for marking services disconnected in seconds.",
"name": "threshold_seconds",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.ServicesRes"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/service-groups": {
"get": {
"description": "Lists service groups with name, health information, and application, environment, package, release metadata.\nAccepts pagination, sorting, search, and status filters.\n\nExample:\n```\napplications/service-groups?sorting.field=percent_ok&sorting.order=ASC&pagination.page=1&pagination.size=25\n```\n\nAuthorization Action:\n```\napplications:serviceGroups:list\n```",
"tags": [
"service_groups"
],
"summary": "List Service Groups",
"operationId": "ApplicationsService_GetServiceGroups",
"parameters": [
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"description": "Applies search and status filters, in the format of `fieldname:value` or `status:value`.\n\nValid filter fieldnames are:\n* `origin`: origin component of the service's package identifier\n* `service`: the name component of the service's package identifier\n* `version`: the version number component of the service's package identifier\n* `buildstamp`: the build timestamp (also called \"release\") of the service's package identifier\n* `channel`: the package channel to which the service subscribes for updates\n* `application`: the application field of the service's event-stream metadata\n* `environment`: the environment field of the service's event-stream metadata\n* `site`: the site field of the service's event-stream metadata\n* `group`: the suffix of the service group name\n\n`status` filters refine the service group results by a service's\n most recent connected/disconnected state or healthcheck result.\n\n Valid status filter parameters are:\n* `status:disconnected`: returns service groups with at least one service in a disconnected state\n* `status:critical`: returns service groups with a with at least one service in a \"critical\" healthcheck result\n* `status:unknown`: returns service groups with at least one service with an \"unknown\" healthcheck result\n* `status:warning`: returns service groups with at least one service with a \"warning\" healthcheck result\n* `status:ok`: returns service groups with at least one service with an \"ok\" health check result",
"name": "filter",
"in": "query"
},
{
"type": "integer",
"format": "int32",
"description": "Page number of the results to return.",
"name": "pagination.page",
"in": "query"
},
{
"type": "integer",
"format": "int32",
"description": "Amount of results to include per page.",
"name": "pagination.size",
"in": "query"
},
{
"type": "string",
"description": "Field to sort the list results on.",
"name": "sorting.field",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"default": "ASC",
"description": "Order the results should be returned in.",
"name": "sorting.order",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.ServiceGroups"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/service-groups/{service_group_id}": {
"get": {
"description": "List the services for a service group with health status and service metadata.\nUses the service group ID generated by Chef Automate instead of the Chef Habitat- provided ID.\nSupports pagination and filtering.\n\nExample:\n```\napplications/service-groups/1dfff679054c60a10c51d059b6dbf81a765c46f8d3e8ce0752b22ffe8d4d9716?pagination.page=1&pagination.size=25\n```\n\nAuthorization Action:\n```\napplications:serviceGroups:list\n```",
"tags": [
"service_groups"
],
"summary": "List Services for a Service Group",
"operationId": "ApplicationsService_GetServicesBySG",
"parameters": [
{
"type": "string",
"description": "Service group ID.",
"name": "service_group_id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int32",
"description": "Page number of the results to return.",
"name": "pagination.page",
"in": "query"
},
{
"type": "integer",
"format": "int32",
"description": "Amount of results to include per page.",
"name": "pagination.size",
"in": "query"
},
{
"type": "string",
"description": "Field to sort the list results on.",
"name": "sorting.field",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"default": "ASC",
"description": "Order the results should be returned in.",
"name": "sorting.order",
"in": "query"
},
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"description": "Applies filters, in the format of `fieldname:value`.\nSee documentation for ServicesReq for valid filter parameters.",
"name": "filter",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.ServicesBySGRes"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/service_groups_health_counts": {
"get": {
"description": "Lists the total service group health reports by critical, warning, ok and unknown responses. Supports search and status filtering.\n\nAuthorization Action:\n```\napplications:serviceGroups:list\n```",
"tags": [
"service_groups"
],
"summary": "List Service Groups Health Counts",
"operationId": "ApplicationsService_GetServiceGroupsHealthCounts",
"parameters": [
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"description": "Applies search filters, in the format of `fieldname:value`.\nSee the documentation for ServiceGroupsReq for valid filter parameters.",
"name": "filter",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.HealthCounts"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/services": {
"get": {
"description": "Lists service health status and service metadata for services.\nSupports pagination and search and status filtering. For a list of services for a specific service-group see \"List Services for a Service Group\" (GetServicesBySG endpoint).\n\nAuthorization Action:\n```\napplications:serviceGroups:list\n```",
"tags": [
"service_groups"
],
"summary": "List Services",
"operationId": "ApplicationsService_GetServices",
"parameters": [
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"description": "Applies search filters, in the format of `fieldname:value`.\n\nValid filter fieldnames are:\n* `origin`: origin component of the service's package identifier\n* `service`: the name component of the service's package identifier\n* `version`: the version number component of the service's package identifier\n* `buildstamp`: the build timestamp (also called \"release\") of the service's package identifier\n* `channel`: the package channel to which the service subscribes for updates\n* `application`: the application field of the service's event-stream metadata\n* `environment`: the environment field of the service's event-stream metadata\n* `site`: the site field of the service's event-stream metadata\n* `group`: the suffix of the service group name\n\n`status` filters refine service results by a service's\n current state or most recent healthcheck result.\n Disconnected services keep their last healthcheck result\n until their reports are removed by Chef Automate.\n When you apply a healthcheck filter, the report includes\n all recently disconnected services.\n Valid status filter parameters are:\n* `status:disconnected`: returns services in a disconnected state\n* `status:critical`: returns services with a \"critical\" healthcheck result\n* `status:unknown`: returns services with an \"unknown\" healthcheck result\n* `status:warning`: returns services with a \"warning\" healthcheck result\n* `status:ok`: returns services with an \"ok\" health check result",
"name": "filter",
"in": "query"
},
{
"type": "integer",
"format": "int32",
"description": "Page number of the results to return.",
"name": "pagination.page",
"in": "query"
},
{
"type": "integer",
"format": "int32",
"description": "Amount of results to include per page.",
"name": "pagination.size",
"in": "query"
},
{
"type": "string",
"description": "Field to sort the list results on.",
"name": "sorting.field",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"default": "ASC",
"description": "Order the results should be returned in.",
"name": "sorting.order",
"in": "query"
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/chef.automate.api.applications.ServicesRes"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/grpc.gateway.runtime.Error"
}
}
}
}
},
"/api/v0/applications/services-distinct-values": {
"get": {
"description": "Lists all of the possible filter values for a given valid field.\nLimit the returned values by providing at one or more characters in the `query_fragment` parameter.\nSupports wildcard (* and ?)\n\n\nAuthorization Action:\n```\napplications:serviceGroups:list\n```",
"tags": [
"service_groups"
],
"summary": "List Filter Values",
"operationId": "ApplicationsService_GetServicesDistinctValues",
"parameters": [
{
"type": "string",
"description": "Field name of service values.",
"name": "field_name",
"in": "query"
},
{
"type": "string",
"description": "Query value, supports wildcards (* and ?).",
"name": "query_fragment",
"in": "query"
},
{
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi",
"descri
# --- truncated at 32 KB (666 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/progress-software/refs/heads/main/openapi/progress-software-chef-automate-openapi-original.json