Chef Infra Server API

REST API for managing nodes, cookbooks, roles, environments, data bags, clients, and users on the Chef Infra Server. Authentication uses Chef signed-header authentication with an RSA client key.

OpenAPI Specification

chef-infra-server-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Chef Infra Server API
  description: >-
    REST API for the Chef Infra Server. Manages nodes, cookbooks, roles,
    environments, data bags, clients, and users that drive Chef's
    infrastructure automation. Authentication uses RSA-signed request
    headers per the Chef Infra Server signed-header authentication scheme.
  version: '1.0'
  contact:
    name: Chef Software
    url: https://www.chef.io/support
externalDocs:
  description: Chef Infra Server API Documentation
  url: https://docs.chef.io/server/api_chef_server/
servers:
  - url: https://{server}/organizations/{org}
    description: Chef Infra Server (per-organization)
    variables:
      server:
        default: chef.example.com
      org:
        default: example
tags:
  - name: Nodes
  - name: Cookbooks
  - name: Roles
  - name: Environments
  - name: Data Bags
  - name: Clients
  - name: Users
security:
  - chefSignedAuth: []
paths:
  /nodes:
    get:
      operationId: listNodes
      summary: List nodes
      tags: [Nodes]
      responses:
        '200':
          description: Node list
    post:
      operationId: createNode
      summary: Create a node
      tags: [Nodes]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Node created
  /nodes/{nodeName}:
    get:
      operationId: getNode
      summary: Get a node
      tags: [Nodes]
      parameters:
        - name: nodeName
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Node
    put:
      operationId: updateNode
      summary: Update a node
      tags: [Nodes]
      parameters:
        - name: nodeName
          in: path
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Node updated
    delete:
      operationId: deleteNode
      summary: Delete a node
      tags: [Nodes]
      parameters:
        - name: nodeName
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Node deleted
  /cookbooks:
    get:
      operationId: listCookbooks
      summary: List cookbooks
      tags: [Cookbooks]
      responses:
        '200':
          description: Cookbook list
  /cookbooks/{cookbookName}:
    get:
      operationId: getCookbook
      summary: Get cookbook versions
      tags: [Cookbooks]
      parameters:
        - name: cookbookName
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Cookbook versions
  /roles:
    get:
      operationId: listRoles
      summary: List roles
      tags: [Roles]
      responses:
        '200':
          description: Role list
    post:
      operationId: createRole
      summary: Create a role
      tags: [Roles]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Role created
  /roles/{roleName}:
    get:
      operationId: getRole
      summary: Get a role
      tags: [Roles]
      parameters:
        - name: roleName
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Role
  /environments:
    get:
      operationId: listEnvironments
      summary: List environments
      tags: [Environments]
      responses:
        '200':
          description: Environment list
  /data:
    get:
      operationId: listDataBags
      summary: List data bags
      tags: [Data Bags]
      responses:
        '200':
          description: Data bag list
  /clients:
    get:
      operationId: listClients
      summary: List API clients
      tags: [Clients]
      responses:
        '200':
          description: Client list
  /users:
    get:
      operationId: listUsers
      summary: List users
      tags: [Users]
      responses:
        '200':
          description: User list
components:
  securitySchemes:
    chefSignedAuth:
      type: apiKey
      in: header
      name: X-Ops-Authorization
      description: Chef signed-header authentication using an RSA key associated with a client.