Chef Automate API

The Chef Automate API is the HTTP surface of Progress Chef Automate, the dashboard and control plane for Chef Infra, Chef InSpec and Chef Habitat. It covers configuration management node and run history, compliance scanning and reporting, IAM (users, teams, tokens, policies, projects), data lifecycle, secrets, notifications, node manager integrations and license management. The published Swagger 2.0 contract carries 277 operations across 215 paths.

Operations 277

Showing the first 250 of 277. The full set is in the contract, and via get_provider_operations.

POST /api/beta/cfgmgmt/rollouts/create CreateRollout #
GET /api/beta/cfgmgmt/rollouts/find GetRolloutForChefRun #
GET /api/beta/cfgmgmt/rollouts/list GetRollouts #
GET /api/beta/cfgmgmt/rollouts/progress_by_node_segment #
GET /api/beta/cfgmgmt/rollouts/rollout/{rollout_id} GetRolloutById #
POST /api/beta/cfgmgmt/rollouts/test_create CreateRolloutTest #
POST /api/beta/content/credentials SubmitCredentials #
GET /api/beta/content/enabled IsContentEnabled #
POST /api/beta/content/install InstallContentItem #
GET /api/beta/content/items ListContentItems #
POST /api/v0/applications/delete_disconnected_services Remove Disconnected Services #
POST /api/v0/applications/delete_services_by_id Delete the services with the given IDs #
GET /api/v0/applications/disconnected_services Mark Services as Disconnected #
GET /api/v0/applications/service-groups List Service Groups #
GET /api/v0/applications/service-groups/{service_group_id} List Services for a Service Group #
GET /api/v0/applications/service_groups_health_counts List Service Groups Health Counts #
GET /api/v0/applications/services List Services #
GET /api/v0/applications/services-distinct-values List Filter Values #
GET /api/v0/applications/stats Show Summary #
GET /api/v0/applications/telemetry/services/count #
PUT /api/v0/applications/telemetry/services/count/updated #
GET /api/v0/audit/admin/request RequestAdminAuditLogs initiates async generation of audit logs for selected users. NOTE: This is intended for admin-level access and is protected by IAM policy. Only users with pol #
GET /api/v0/audit/download Download audit logs #
GET /api/v0/audit/self/request RequestSelfAuditLogs initiates async generation of audit logs for the current user #
GET /api/v0/audit/status GetAuditLogsRequestStatus checks the status of an audit log request #
GET /api/v0/cfgmgmt/errors List Errors #
GET /api/v0/cfgmgmt/node_metadata_counts GetNodeMetadataCounts #
GET /api/v0/cfgmgmt/node_runs_daily_status_time_series GetNodeRunsDailyStatusTimeSeries #
GET /api/v0/cfgmgmt/nodes List Checked-in Nodes #
POST /api/v0/cfgmgmt/nodes/export NodeExport #
GET /api/v0/cfgmgmt/nodes/{node_id}/attribute Show Attributes #
GET /api/v0/cfgmgmt/nodes/{node_id}/runs List Run Details #
GET /api/v0/cfgmgmt/nodes/{node_id}/runs/{run_id} Show Node Run #
GET /api/v0/cfgmgmt/organizations List Organizations #
GET /api/v0/cfgmgmt/policy_revision/{revision_id} List Policy Cookbooks #
POST /api/v0/cfgmgmt/reports/export ReportExport #
GET /api/v0/cfgmgmt/source_fqdns List Associated Chef Infra Servers #
GET /api/v0/cfgmgmt/stats/checkin_counts_timeseries List Node Checkins #
GET /api/v0/cfgmgmt/stats/missing_node_duration_counts List Missing Nodes Count #
GET /api/v0/cfgmgmt/stats/node_counts List Node Status Counts #
GET /api/v0/cfgmgmt/stats/run_counts List Run Status Totals #
GET /api/v0/cfgmgmt/suggestions List Filter Suggestions #
GET /api/v0/cfgmgmt/telemetry/nodes/count GetNodesUsageCount #
PUT /api/v0/cfgmgmt/telemetry/nodes/count/updated UpdateTelemetryReported Acknowledge API to updates the last client run telemetry reported date in postgres Authorization Action: ``` iam:introspect:getAll ``` #
GET /api/v0/compliance/market/read/{name}/version/{version} Show an available profile #
POST /api/v0/compliance/profiles Upload a Profile #
POST /api/v0/compliance/profiles/metasearch Check if one or multiple profiles exist in the metadata database. #
GET /api/v0/compliance/profiles/read/{owner}/{name}/version/{version} Show an installed profile #
POST /api/v0/compliance/profiles/search List all available profiles #
POST /api/v0/compliance/profiles/tar Download a Profile #
DELETE /api/v0/compliance/profiles/{owner}/{name}/version/{version} Delete an installed profile #
PUT /api/v0/compliance/reporting/assets/config Set Unreachable Assets Config #
GET /api/v0/compliance/reporting/assets/config/search Get Assets Config #
POST /api/v0/compliance/reporting/assets/count Assets Count #
POST /api/v0/compliance/reporting/assets/search List Assets #
POST /api/v0/compliance/reporting/controls List Controls #
POST /api/v0/compliance/reporting/controls/search List Controls Search #
POST /api/v0/compliance/reporting/export Export reports #
POST /api/v0/compliance/reporting/node/export Export node reports #
POST /api/v0/compliance/reporting/nodeheader/id/{id} Show Node Header Info From Report ID #
GET /api/v0/compliance/reporting/nodes/id/{id} Show Node by ID #
POST /api/v0/compliance/reporting/nodes/search List Nodes #
POST /api/v0/compliance/reporting/profiles List Profiles #
POST /api/v0/compliance/reporting/report-ids List Report IDs #
POST /api/v0/compliance/reporting/reportcontrols/id/{id} List Control Info #
POST /api/v0/compliance/reporting/reportmanager/export Export reports #
POST /api/v0/compliance/reporting/reports List Reports #
POST /api/v0/compliance/reporting/reports/id/{id} Show Report by ID #
POST /api/v0/compliance/reporting/stats/failures Read Failures #
GET /api/v0/compliance/reporting/stats/nodes/count GetNodesUsageCount #
PUT /api/v0/compliance/reporting/stats/nodes/count/updated UpdateTelemetryReported #
POST /api/v0/compliance/reporting/stats/profiles Read Profiles #
POST /api/v0/compliance/reporting/stats/summary Read Summary #
POST /api/v0/compliance/reporting/stats/trend Read Trend #
POST /api/v0/compliance/reporting/suggestions List Reporting Suggestions #
POST /api/v0/compliance/scanner/jobs Create a scan job #
GET /api/v0/compliance/scanner/jobs/id/{id} Read a scan job #
PUT /api/v0/compliance/scanner/jobs/id/{id} Update a job #
DELETE /api/v0/compliance/scanner/jobs/id/{id} Delete a scan job #
GET /api/v0/compliance/scanner/jobs/rerun/id/{id} Rerun a scan job #
POST /api/v0/compliance/scanner/jobs/search List of scan jobs #
PUT /api/v0/data-lifecycle/compliance/config SetComplianceConfig configures the compliance data lifecycle scheduler and jobs #
POST /api/v0/data-lifecycle/compliance/run RunCompliance runs the compliance data lifecycle jobs #
GET /api/v0/data-lifecycle/compliance/status GetComplianceStatus returns the compliance job scheduler status #
PUT /api/v0/data-lifecycle/config SetConfig provides a singular endpoint for configuring all data lifecycle jobs #
PUT /api/v0/data-lifecycle/event-feed/config SetEventFeedConfig configures the event feed data lifecycle scheduler and jobs #
POST /api/v0/data-lifecycle/event-feed/run RunEventFeed runs the event feed data lifecycle jobs #
GET /api/v0/data-lifecycle/event-feed/status GetEventFeedStatus returns the event feed job scheduler status #
PUT /api/v0/data-lifecycle/infra/config SetInfraConfig configures the infra data lifecycle scheduler and jobs #
POST /api/v0/data-lifecycle/infra/run RunInfra runs the infra data lifecycle jobs #
GET /api/v0/data-lifecycle/infra/status GetInfraStatus returns the infra job scheduler status #
POST /api/v0/data-lifecycle/run Run runs all data lifecycle actions across all data lifecycle jobs #
PUT /api/v0/data-lifecycle/services/config #
POST /api/v0/data-lifecycle/services/run #
GET /api/v0/data-lifecycle/services/status Services #
GET /api/v0/data-lifecycle/status GetStatus returns the aggregate status across all data lifecycle jobs #
GET /api/v0/datafeed/config #
POST /api/v0/datafeed/destination #
PATCH /api/v0/datafeed/destination/enable/{id} #
GET /api/v0/datafeed/destination/{id} #
DELETE /api/v0/datafeed/destination/{id} #
PATCH /api/v0/datafeed/destination/{id} #
POST /api/v0/datafeed/destinations #
POST /api/v0/datafeed/destinations/test #
GET /api/v0/deployment/service_versions #
GET /api/v0/event_task_counts List Counts of Individual Event Tasks #
GET /api/v0/event_type_counts List Counts of Event Types #
GET /api/v0/eventfeed List Events #
GET /api/v0/events/data-collector This is used by chef-server, it requests a GET /data-collector/v0 to check Automate's status. We proxy /data-collector/v0 to /api/v0/events/data-collector, so this is where we need #
GET /api/v0/eventstrings List Summary Data of Events #
GET /api/v0/gateway/health #
GET /api/v0/gateway/version #
GET /api/v0/infra/servers #
POST /api/v0/infra/servers #
GET /api/v0/infra/servers/server_status #
GET /api/v0/infra/servers/{id} #
PUT /api/v0/infra/servers/{id} #
DELETE /api/v0/infra/servers/{id} #
GET /api/v0/infra/servers/{server_id}/orgs #
POST /api/v0/infra/servers/{server_id}/orgs #
GET /api/v0/infra/servers/{server_id}/orgs/{id} #
PUT /api/v0/infra/servers/{server_id}/orgs/{id} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{id} #
PUT /api/v0/infra/servers/{server_id}/orgs/{id}/reset-key #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/clients #
POST /api/v0/infra/servers/{server_id}/orgs/{org_id}/clients #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/clients/{name} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/clients/{name} #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/clients/{name}/reset #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/cookbooks #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/cookbooks/{name} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/cookbooks/{name}/{version} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/cookbooks/{name}/{version}/file-content #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags #
POST /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} #
POST /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item_id} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/environments #
POST /api/v0/infra/servers/{server_id}/orgs/{org_id}/environments #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/environments/{name} #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/environments/{name} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/environments/{name} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/environments/{name}/recipes #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/node/{name}/runlist/{environment} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes/{name} #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes/{name} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes/{name} #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes/{name}/attributes #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes/{name}/environment #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/nodes/{name}/tags #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/policyfiles #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/policyfiles/{name} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/policyfiles/{name} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/policyfiles/{name}/revisions #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/policygroups/{name} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles #
POST /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles/{name} #
PUT /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles/{name} #
DELETE /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles/{name} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles/{name}/environments #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/roles/{name}/runlist/{environment} #
GET /api/v0/infra/servers/{server_id}/orgs/{org_id}/users #
POST /api/v0/infra/servers/{server_id}/users #
POST /api/v0/ingest/events/chef/action #
POST /api/v0/ingest/events/chef/liveness #
POST /api/v0/ingest/events/chef/node-multiple-deletes #
POST /api/v0/ingest/events/chef/nodedelete #
POST /api/v0/ingest/events/chef/run #
GET /api/v0/ingest/version #
POST /api/v0/license/apply #
POST /api/v0/license/request #
GET /api/v0/license/status #
POST /api/v0/nodemanagers Create a Node Manager #
GET /api/v0/nodemanagers/id/{id} View a Node Manager #
PUT /api/v0/nodemanagers/id/{id} Update a Node Manager #
DELETE /api/v0/nodemanagers/id/{id} Delete a Node Manager #
DELETE /api/v0/nodemanagers/id/{id}/with-node-state/stopped Delete a Node Manager and Stop Nodes #
DELETE /api/v0/nodemanagers/id/{id}/with-node-state/terminated Delete a Node Manager and Terminate Nodes #
DELETE /api/v0/nodemanagers/id/{id}/with-nodes Delete a Node Manager and Delete Nodes #
POST /api/v0/nodemanagers/id/{node_manager_id}/search-fields Search Node Fields #
POST /api/v0/nodemanagers/id/{node_manager_id}/search-nodes Search nodes #
POST /api/v0/nodemanagers/rerun/id/{id} Connect #
POST /api/v0/nodemanagers/search List all Node Managers #
POST /api/v0/nodes Create a Node #
POST /api/v0/nodes/bulk-create Bulk Create Nodes #
POST /api/v0/nodes/delete Bulk Delete Nodes by Filter #
POST /api/v0/nodes/delete/ids Bulk Delete Nodes by ID #
GET /api/v0/nodes/id/{id} Show Node Details #
PUT /api/v0/nodes/id/{id} Update Node #
DELETE /api/v0/nodes/id/{id} Delete a Node #
GET /api/v0/nodes/rerun/id/{id} List Node Status #
POST /api/v0/nodes/search List and Filter Nodes #
GET /api/v0/notifications/rules #
POST /api/v0/notifications/rules #
GET /api/v0/notifications/rules/{id} #
PUT /api/v0/notifications/rules/{id} #
DELETE /api/v0/notifications/rules/{id} #
GET /api/v0/notifications/version #
POST /api/v0/notifications/webhook #
GET /api/v0/reportmanager/requests List Download Report Requests #
POST /api/v0/retention/nodes/delete-nodes/config #
POST /api/v0/retention/nodes/missing-nodes-deletion/config #
POST /api/v0/retention/nodes/missing-nodes/config #
GET /api/v0/retention/nodes/status #
GET /api/v0/retention/service_groups/delete_disconnected_services/config Show 'Remove Disconnected Services' Configuration #
POST /api/v0/retention/service_groups/delete_disconnected_services/config Change 'Remove Disconnected Services' Configuration #
POST /api/v0/retention/service_groups/delete_disconnected_services/run #
GET /api/v0/retention/service_groups/disconnected_services/config Show 'Disconnected Services' configuration #
POST /api/v0/retention/service_groups/disconnected_services/config Change 'Disconnected Services' Configuration #
POST /api/v0/retention/service_groups/disconnected_services/run Runs the job to mark services as disconnected immediately. #
POST /api/v0/secrets Create a secret #
GET /api/v0/secrets/id/{id} Read a secret #
DELETE /api/v0/secrets/id/{id} Delete a secret #
PATCH /api/v0/secrets/id/{id} Update a secret #
POST /api/v0/secrets/search List and filter secrets #
GET /api/v0/telemetry/config #
GET /api/v0/user-settings/{user.name}/{user.connector} GetUserSettings returns all of the preferences for a given user #
PUT /api/v0/user-settings/{user.name}/{user.connector} PutUserSettings upserts all of the preferences for a given user #
DELETE /api/v0/user-settings/{user.name}/{user.connector} DeleteUserSettings deletes all settings for a given user #
GET /api/v0/version #
GET /apis/iam/v2/apply-rules Get the status of a project update #
POST /apis/iam/v2/apply-rules Start project update #
DELETE /apis/iam/v2/apply-rules Cancel project update #
GET /apis/iam/v2/introspect #
POST /apis/iam/v2/introspect #
POST /apis/iam/v2/introspect_some #
GET /apis/iam/v2/policies Lists all policies #
POST /apis/iam/v2/policies Creates a custom policy #
GET /apis/iam/v2/policies/{id} Gets a policy #
PUT /apis/iam/v2/policies/{id} Updates a custom policy #
DELETE /apis/iam/v2/policies/{id} Deletes a custom policy #
GET /apis/iam/v2/policies/{id}/members Lists policy members #
PUT /apis/iam/v2/policies/{id}/members Replaces policy members #
POST /apis/iam/v2/policies/{id}/members:add Adds policy members #
POST /apis/iam/v2/policies/{id}/members:remove Removes policy members #
GET /apis/iam/v2/policy_version Gets IAM version #
GET /apis/iam/v2/projects Lists all projects #
POST /apis/iam/v2/projects Creates a project #
GET /apis/iam/v2/projects/{id} Gets a project #
PUT /apis/iam/v2/projects/{id} Updates a project #
DELETE /apis/iam/v2/projects/{id} Deletes a project #
GET /apis/iam/v2/projects/{id}/rules List a project's rules #
POST /apis/iam/v2/projects/{project_id}/rules Create a project rule #
GET /apis/iam/v2/projects/{project_id}/rules/{id} Get a project rule #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/progress-software-chef-automate"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

progress-software-chef-automate-openapi-original.json Raw ↑
{
  "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