Harbinger Health Menus API

WordPress menus resource routes.

OpenAPI Specification

harbinger-health-menus-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Harbinger Health WordPress REST API (wp/v2) Menus API
  version: 2.0.0
  summary: The wp/v2 namespace of the WordPress REST API served by Harbinger Health's website.
  description: DERIVED, NOT PUBLISHED BY HARBINGER HEALTH. Harbinger Health publishes no OpenAPI definition and does not document or support this surface as a developer product. This document was derived mechanically by API Evangelist from the live WordPress route-discovery document fetched from https://harbinger-health.com/wp-json/ on 2026-08-04 (268 routes across 15 namespaces; the wp/v2 namespace is captured here). Every path, method, parameter name, type, enum, default and description is copied verbatim from that discovery document. Response bodies are intentionally left as generic objects because the discovery document does not publish response schemas; error responses are grounded in payloads probed live against this host. This is a content-management surface for the corporate website - it is NOT a clinical, laboratory, diagnostic, genomic or patient-data API, and no Harbinger HX or RESOLVE test data is reachable through it.
  contact:
    name: Harbinger Health
    url: https://harbinger-health.com/contact/
    email: info@harbinger-health.com
  x-apievangelist-method: derived
  x-apievangelist-source: openapi/harbinger-health-wp-json-discovery.json
  x-apievangelist-derived: '2026-08-04'
  x-upstream-documentation: https://developer.wordpress.org/rest-api/
servers:
- url: https://harbinger-health.com/wp-json
  description: Harbinger Health corporate site (WP Engine, fronted by Cloudflare)
tags:
- name: menus
  description: WordPress menus resource routes.
paths:
  /wp/v2/menus:
    get:
      operationId: listMenus
      summary: GET /wp/v2/menus
      tags:
      - menus
      parameters:
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
          minimum: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
        description: Maximum number of items to be returned in result set.
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: exclude
        in: query
        required: false
        schema:
          type: array
          default: []
          items:
            type: integer
        description: Ensure result set excludes specific IDs.
      - name: include
        in: query
        required: false
        schema:
          type: array
          default: []
          items:
            type: integer
        description: Limit result set to specific IDs.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: Offset the result set by a specific number of items.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        required: false
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - slug
          - include_slugs
          - term_group
          - description
          - count
          default: name
        description: Sort collection by term attribute.
      - name: hide_empty
        in: query
        required: false
        schema:
          type: boolean
          default: false
        description: Whether to hide terms not assigned to any posts.
      - name: post
        in: query
        required: false
        schema:
          type: integer
        description: Limit result set to terms assigned to a specific post.
      - name: slug
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to terms with one or more specific slugs.
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createMenus
      summary: POST /wp/v2/menus
      tags:
      - menus
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: HTML description of the term.
                name:
                  type: string
                  description: HTML title for the term.
                slug:
                  type: string
                  description: An alphanumeric identifier for the term unique to its type.
                meta:
                  type: object
                  description: Meta fields.
                locations:
                  type: array
                  items:
                    type: string
                  description: The locations assigned to the menu.
                auto_add:
                  type: boolean
                  description: Whether to automatically add top level pages to this menu.
              required:
              - name
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/menus/{id}:
    get:
      operationId: getMenusById
      summary: GET /wp/v2/menus/{id}
      tags:
      - menus
      parameters:
      - name: id
        in: path
        required: true
        description: Path segment captured by the WordPress route regex.
        schema:
          type: string
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createMenusById
      summary: POST /wp/v2/menus/{id}
      tags:
      - menus
      parameters:
      - name: id
        in: path
        required: true
        description: Path segment captured by the WordPress route regex.
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: HTML description of the term.
                name:
                  type: string
                  description: HTML title for the term.
                slug:
                  type: string
                  description: An alphanumeric identifier for the term unique to its type.
                meta:
                  type: object
                  description: Meta fields.
                locations:
                  type: array
                  items:
                    type: string
                  description: The locations assigned to the menu.
                auto_add:
                  type: boolean
                  description: Whether to automatically add top level pages to this menu.
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    put:
      operationId: replaceMenusById
      summary: PUT /wp/v2/menus/{id}
      tags:
      - menus
      parameters:
      - name: id
        in: path
        required: true
        description: Path segment captured by the WordPress route regex.
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: HTML description of the term.
                name:
                  type: string
                  description: HTML title for the term.
                slug:
                  type: string
                  description: An alphanumeric identifier for the term unique to its type.
                meta:
                  type: object
                  description: Meta fields.
                locations:
                  type: array
                  items:
                    type: string
                  description: The locations assigned to the menu.
                auto_add:
                  type: boolean
                  description: Whether to automatically add top level pages to this menu.
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    patch:
      operationId: updateMenusById
      summary: PATCH /wp/v2/menus/{id}
      tags:
      - menus
      parameters:
      - name: id
        in: path
        required: true
        description: Path segment captured by the WordPress route regex.
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: HTML description of the term.
                name:
                  type: string
                  description: HTML title for the term.
                slug:
                  type: string
                  description: An alphanumeric identifier for the term unique to its type.
                meta:
                  type: object
                  description: Meta fields.
                locations:
                  type: array
                  items:
                    type: string
                  description: The locations assigned to the menu.
                auto_add:
                  type: boolean
                  description: Whether to automatically add top level pages to this menu.
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    delete:
      operationId: deleteMenusById
      summary: DELETE /wp/v2/menus/{id}
      tags:
      - menus
      parameters:
      - name: id
        in: path
        required: true
        description: Path segment captured by the WordPress route regex.
        schema:
          type: string
      - name: force
        in: query
        required: false
        schema:
          type: boolean
          default: false
        description: Required to be true, as terms do not support trashing.
      responses:
        '200':
          description: Successful response. WordPress route discovery does not publish response schemas, so the body is described generically.
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: Authentication required or insufficient capability (rest_forbidden).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No route or resource matched (rest_no_route / rest_post_invalid_id).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
components:
  schemas:
    WPError:
      type: object
      description: The WordPress REST error envelope, observed live on this host.
      properties:
        code:
          type: string
          description: Machine-readable error code, e.g. rest_forbidden.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: HTTP status code.
      required:
      - code
      - message
  securitySchemes:
    applicationPassword:
      type: http
      scheme: basic
      description: WordPress application password, advertised by the site's route-discovery document at authentication.application-passwords. Issued from https://harbinger-health.com/wp-admin/authorize-application.php. Anonymous callers may read the public view/embed context without any credential.