HashiCorp Nomad Node Pools API

Endpoints for managing node pools, which group nodes for scheduling constraints.

OpenAPI Specification

nomad-node-pools-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: HashiCorp Nomad HTTP ACL Node Pools API
  description: The HashiCorp Nomad HTTP API provides programmatic access to all Nomad functionality including job scheduling, allocation management, node operations, deployments, services, evaluations, namespaces, ACL policies, and cluster status. All API routes are prefixed with /v1/ and the default port is 4646. The API is RESTful, responds to standard HTTP verbs, and supports ACL token authentication via the X-Nomad-Token header or Bearer scheme.
  version: 1.9.0
  contact:
    name: HashiCorp Support
    url: https://support.hashicorp.com
  termsOfService: https://www.hashicorp.com/terms-of-service
  license:
    name: Business Source License 1.1
    url: https://github.com/hashicorp/nomad/blob/main/LICENSE
servers:
- url: http://localhost:4646/v1
  description: Local Nomad Agent
security:
- nomadToken: []
- bearerAuth: []
tags:
- name: Node Pools
  description: Endpoints for managing node pools, which group nodes for scheduling constraints.
paths:
  /node/pools:
    get:
      operationId: listNodePools
      summary: List node pools
      description: Lists all node pools registered with Nomad.
      tags:
      - Node Pools
      parameters:
      - $ref: '#/components/parameters/PrefixParam'
      - $ref: '#/components/parameters/NextTokenParam'
      - $ref: '#/components/parameters/PerPageParam'
      - $ref: '#/components/parameters/FilterParam'
      responses:
        '200':
          description: A list of node pools
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NodePool'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
    put:
      operationId: createNodePool
      summary: Create or update a node pool
      description: Creates a new node pool or updates an existing one.
      tags:
      - Node Pools
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodePool'
      responses:
        '200':
          description: Node pool created or updated
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
  /node/pool/{poolName}:
    get:
      operationId: readNodePool
      summary: Read a node pool
      description: Returns the details of the specified node pool.
      tags:
      - Node Pools
      parameters:
      - name: poolName
        in: path
        required: true
        description: The name of the node pool.
        schema:
          type: string
      responses:
        '200':
          description: Node pool details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodePool'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    delete:
      operationId: deleteNodePool
      summary: Delete a node pool
      description: Deletes the specified node pool.
      tags:
      - Node Pools
      parameters:
      - name: poolName
        in: path
        required: true
        description: The name of the node pool.
        schema:
          type: string
      responses:
        '200':
          description: Node pool deleted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
    Unauthorized:
      description: Unauthorized - missing or invalid ACL token
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
  parameters:
    PerPageParam:
      name: per_page
      in: query
      description: Maximum number of results to return per page.
      schema:
        type: integer
    FilterParam:
      name: filter
      in: query
      description: Specifies the expression used to filter the results.
      schema:
        type: string
    NextTokenParam:
      name: next_token
      in: query
      description: Indicates where to start paging for queries that support pagination.
      schema:
        type: string
    PrefixParam:
      name: prefix
      in: query
      description: Specifies a string to filter results based on an ID prefix.
      schema:
        type: string
  schemas:
    NodePool:
      type: object
      description: A node pool groups nodes for scheduling constraints.
      properties:
        Name:
          type: string
          description: The name of the node pool.
        Description:
          type: string
          description: A human-readable description of the node pool.
        Meta:
          type: object
          additionalProperties:
            type: string
        SchedulerConfiguration:
          type: object
          properties:
            SchedulerAlgorithm:
              type: string
              enum:
              - binpack
              - spread
        CreateIndex:
          type: integer
        ModifyIndex:
          type: integer
  securitySchemes:
    nomadToken:
      type: apiKey
      name: X-Nomad-Token
      in: header
      description: ACL token passed via the X-Nomad-Token request header.
    bearerAuth:
      type: http
      scheme: bearer
      description: ACL token passed via the Authorization header with Bearer scheme.
externalDocs:
  description: Nomad HTTP API Documentation
  url: https://developer.hashicorp.com/nomad/api-docs