ODNI Public Content API

The anonymous, read-only WordPress REST API behind www.odni.gov. Serves ODNI newsroom posts (press releases, remarks, interviews and reports), the site's structural pages, the media library, and the Download Monitor catalog of published ODNI documents. DERIVED description — ODNI publishes no specification; the OpenAPI here was derived from the live route discovery document and every operation was confirmed 200 anonymously on 2026-09-06. The canonical /wp-json/ root is 301'd to the homepage by the site's Akamai edge, so the API is reachable only through the query-string route form https://www.odni.gov/?rest_route=/... . Content only — no intelligence holdings are exposed.

Operations 24

GET /wp/v2/posts List ODNI news posts #
GET /wp/v2/posts/{id} Retrieve one ODNI news post #
GET /wp/v2/pages List ODNI site pages #
GET /wp/v2/pages/{id} Retrieve one ODNI site page #
GET /wp/v2/dlm_download List ODNI publications and downloads #
GET /wp/v2/dlm_download/{id} Retrieve one ODNI publication #
GET /wp/v2/dlm_download_category List publication categories #
GET /wp/v2/dlm_download_category/{id} Retrieve one publication category #
GET /wp/v2/dlm_download_tag List publication tags #
GET /wp/v2/categories List newsroom categories #
GET /wp/v2/categories/{id} Retrieve one newsroom category #
GET /wp/v2/tags List newsroom tags #
GET /wp/v2/media List media library items #
GET /wp/v2/media/{id} Retrieve one media item #
GET /wp/v2/types List content types #
GET /wp/v2/types/{type} Retrieve one content type #
GET /wp/v2/taxonomies List taxonomies #
GET /wp/v2/taxonomies/{taxonomy} Retrieve one taxonomy #
GET /wp/v2/statuses List post statuses #
GET /wp/v2/users List content authors #
GET /wp/v2/users/{id} Retrieve one author #
GET /wp/v2/comments List comments #
GET /oembed/1.0/embed oEmbed representation of an ODNI URL #

Specifications

Other Resources

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/odni-public-content-api"
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

director-of-national-intelligence-wp-content-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: ODNI Public Content API (WordPress REST)
  version: wp/v2
  summary: The anonymous, read-only WordPress REST API serving www.odni.gov content — newsroom posts, site pages,
    and the ODNI publications/downloads catalog.
  description: 'The Office of the Director of National Intelligence publishes no developer program, no API documentation
    and no machine-readable specification of its own. Its public website, www.odni.gov, runs on WordPress and serves
    the standard WordPress REST API anonymously, and that surface is a real, callable, machine-readable read API
    over ODNI content: 156 newsroom posts (press releases, remarks, interviews and reports), the site''s structural
    pages, the media library, and — most usefully — the Download Monitor catalog of ODNI publications (transparency
    reports, Annual Threat Assessments, IC directives, NCTC counterterrorism guides and declassified releases).


    THIS DOCUMENT IS DERIVED, NOT PUBLISHED BY ODNI. Every path, method, parameter and parameter schema below comes
    from the live WordPress route discovery document at https://www.odni.gov/?rest_route=/ , saved verbatim alongside
    this file as director-of-national-intelligence-wp-routes-original.json (205 routes). Every path listed here
    was individually confirmed to return HTTP 200 to an unauthenticated request on 2026-09-06; the confirming URL
    and status are recorded on each operation as x-verified.


    ACCESS QUIRK — THE PRETTY ROUTE IS BLOCKED AT THE EDGE. The canonical WordPress REST root https://www.odni.gov/wp-json/
    and every path beneath it are answered with HTTP 301 to the site homepage by the site''s Akamai edge, so the
    usual base URL does not work. The API is reachable only through WordPress''s alternate query-string route form:
    prefix each path below with https://www.odni.gov/?rest_route= — for example https://www.odni.gov/?rest_route=/wp/v2/posts&per_page=3
    . The second entry in servers[] is that working prefix. The same edge answers every unknown path (including
    /.well-known/*, /llms.txt and /openapi.json) with a 302 to the homepage, and rejects browser-shaped User-Agent
    strings with 403 while allowing plain clients through.


    WRITE METHODS AND ADMINISTRATIVE NAMESPACES ARE DELIBERATELY EXCLUDED. The route index advertises POST/PUT/PATCH/DELETE
    and the wp/v2 administrative surface (settings, plugins, themes, widgets, templates, application-passwords)
    plus plugin namespaces (download-monitor/v1, simple-history/v1, block-visibility/v1, wpchill/v1, duplicate-post/v1,
    health-check/v1, wp-site-health/v1, wp-block-editor/v1, optimization-detective/v1, pgc_simply_gallery/v2). Those
    exist on the host but require authentication — /wp/v2/settings returns 401 rest_forbidden anonymously, and collection
    responses carry Allow: GET — so they are not a public API and are not modelled here. This is a content API.
    It is not an intelligence-data API: no intelligence holdings, reporting or classified material is reachable
    through it.'
  contact:
    name: ODNI Public Affairs
    url: https://www.odni.gov/get-in-touch/
  license:
    name: U.S. Government Work (17 U.S.C. Sec. 105) — see ODNI website policies
    url: https://www.odni.gov/policies/
  x-provenance:
    method: derived
    source: https://www.odni.gov/?rest_route=/
    derived: '2026-09-06'
    verbatim_source_file: openapi/director-of-national-intelligence-wp-routes-original.json
    note: Derived by API Evangelist from the live WordPress route discovery document served by www.odni.gov. Not
      authored, published or endorsed by ODNI.
servers:
- url: https://www.odni.gov/wp-json
  description: Canonical WordPress REST root. NOT CALLABLE as of 2026-09-06 — the Akamai edge answers 301 to https://www.odni.gov/
    for /wp-json and every path beneath it.
- url: https://www.odni.gov/?rest_route=
  description: Working prefix. WordPress's alternate query-string route form; concatenate the operation path directly
    after this URL (https://www.odni.gov/?rest_route=/wp/v2/posts). Verified 200 on 2026-09-06.
security:
- {}
tags:
- name: News
  description: ODNI newsroom posts — press releases, remarks, interviews and reports.
- name: Publications
  description: The Download Monitor catalog of published ODNI documents.
- name: Pages
  description: Structural site pages.
- name: Media
  description: Media library uploads.
- name: Taxonomy
  description: Categories and tags classifying news and publications.
- name: Search
  description: Cross-type site search.
- name: Discovery
  description: Content types, taxonomies, statuses, authors and oEmbed.
paths:
  /wp/v2/posts:
    get:
      operationId: listPosts
      summary: List ODNI news posts
      description: Press releases, remarks, reports and interviews published to the ODNI newsroom. 156 records at
        the time of harvest; classified with the `categories` taxonomy (press-releases, remarks, reports, interviews).
      tags:
      - News
      security:
      - {}
      parameters:
      - name: after
        in: query
        description: Limit response to posts published after a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: author
        in: query
        description: Limit result set to posts assigned to specific authors.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: author_exclude
        in: query
        description: Ensure result set excludes posts assigned to specific authors.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: before
        in: query
        description: Limit response to posts published before a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: categories
        in: query
        description: Limit result set to items with specific terms assigned in the categories taxonomy.
        required: false
        schema:
          type: object
      - name: categories_exclude
        in: query
        description: Limit result set to items except those with specific terms assigned in the categories taxonomy.
        required: false
        schema:
          type: object
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: format
        in: query
        description: Limit result set to items assigned one or more given formats.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - standard
            - aside
            - chat
            - gallery
            - link
            - image
            - quote
            - status
            - video
            - audio
      - name: ignore_sticky
        in: query
        description: Whether to ignore sticky posts or not.
        required: false
        schema:
          type: boolean
          default: true
      - name: include
        in: query
        description: Limit result set to specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: modified_after
        in: query
        description: Limit response to posts modified after a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: modified_before
        in: query
        description: Limit response to posts modified before a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: offset
        in: query
        description: Offset the result set by a specific number of items.
        required: false
        schema:
          type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - name: orderby
        in: query
        description: Sort collection by post attribute.
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
      - name: page
        in: query
        description: Current page of the collection.
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
      - name: search
        in: query
        description: Limit results to those matching a string.
        required: false
        schema:
          type: string
      - name: search_columns
        in: query
        description: Array of column names to be searched.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
      - name: search_semantics
        in: query
        description: How to interpret the search input.
        required: false
        schema:
          type: string
          enum:
          - exact
      - name: sticky
        in: query
        description: Limit result set to items that are sticky.
        required: false
        schema:
          type: boolean
      - name: tags
        in: query
        description: Limit result set to items with specific terms assigned in the tags taxonomy.
        required: false
        schema:
          type: object
      - name: tags_exclude
        in: query
        description: Limit result set to items except those with specific terms assigned in the tags taxonomy.
        required: false
        schema:
          type: object
      - name: tax_relation
        in: query
        description: Limit result set based on relationship between multiple taxonomies.
        required: false
        schema:
          type: string
          enum:
          - AND
          - OR
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPCollection'
              examples:
                saved:
                  summary: Saved response captured 2026-09-06
                  externalValue: ../examples/director-of-national-intelligence-posts.json
          headers:
            X-WP-Total: &id003
              description: Total number of matching records.
              schema:
                type: integer
            X-WP-TotalPages: &id004
              description: Total number of pages available at the current per_page.
              schema:
                type: integer
            Link: &id005
              description: RFC 8288 pagination links (rel="next" / rel="prev").
              schema:
                type: string
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: &id001
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: &id002
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/posts&per_page=3
        status: 200
        date: '2026-09-06'
  /wp/v2/posts/{id}:
    get:
      operationId: getPost
      summary: Retrieve one ODNI news post
      description: Retrieve a single newsroom post by its WordPress id.
      tags:
      - News
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        description: WordPress post id.
        schema:
          type: integer
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPObject'
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/posts/14092
        status: 200
        date: '2026-09-06'
  /wp/v2/pages:
    get:
      operationId: listPages
      summary: List ODNI site pages
      description: The site's structural pages — About, Leadership, Newsroom, Transparency, Accountability, the
        NCTC/NCSC/OESET mission-center pages and the policy pages.
      tags:
      - Pages
      security:
      - {}
      parameters:
      - name: after
        in: query
        description: Limit response to posts published after a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: author
        in: query
        description: Limit result set to posts assigned to specific authors.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: author_exclude
        in: query
        description: Ensure result set excludes posts assigned to specific authors.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: before
        in: query
        description: Limit response to posts published before a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: include
        in: query
        description: Limit result set to specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: menu_order
        in: query
        description: Limit result set to posts with a specific menu_order value.
        required: false
        schema:
          type: integer
      - name: modified_after
        in: query
        description: Limit response to posts modified after a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: modified_before
        in: query
        description: Limit response to posts modified before a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: offset
        in: query
        description: Offset the result set by a specific number of items.
        required: false
        schema:
          type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - name: orderby
        in: query
        description: Sort collection by post attribute.
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          - menu_order
          default: date
      - name: page
        in: query
        description: Current page of the collection.
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: parent_exclude
        in: query
        description: Limit result set to all items except those of a particular parent ID.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
      - name: search
        in: query
        description: Limit results to those matching a string.
        required: false
        schema:
          type: string
      - name: search_columns
        in: query
        description: Array of column names to be searched.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
      - name: search_semantics
        in: query
        description: How to interpret the search input.
        required: false
        schema:
          type: string
          enum:
          - exact
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPCollection'
          headers:
            X-WP-Total: *id003
            X-WP-TotalPages: *id004
            Link: *id005
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/pages&per_page=1
        status: 200
        date: '2026-09-06'
  /wp/v2/pages/{id}:
    get:
      operationId: getPage
      summary: Retrieve one ODNI site page
      description: Retrieve a single page by its WordPress id.
      tags:
      - Pages
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        description: WordPress page id.
        schema:
          type: integer
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPObject'
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/pages/33
        status: 200
        date: '2026-09-06'
  /wp/v2/dlm_download:
    get:
      operationId: listDownloads
      summary: List ODNI publications and downloads
      description: The Download Monitor custom post type behind ODNI's published documents — transparency reports,
        Annual Threat Assessments, IC directives, counterterrorism guides and declassified releases. This is the
        closest thing on the site to a document catalog.
      tags:
      - Publications
      security:
      - {}
      parameters:
      - name: after
        in: query
        description: Limit response to posts published after a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: before
        in: query
        description: Limit response to posts published before a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: dlm_download_category
        in: query
        description: Limit result set to items with specific terms assigned in the dlm_download_category taxonomy.
        required: false
        schema:
          type: object
      - name: dlm_download_category_exclude
        in: query
        description: Limit result set to items except those with specific terms assigned in the dlm_download_category
          taxonomy.
        required: false
        schema:
          type: object
      - name: dlm_download_tag
        in: query
        description: Limit result set to items with specific terms assigned in the dlm_download_tag taxonomy.
        required: false
        schema:
          type: object
      - name: dlm_download_tag_exclude
        in: query
        description: Limit result set to items except those with specific terms assigned in the dlm_download_tag
          taxonomy.
        required: false
        schema:
          type: object
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: include
        in: query
        description: Limit result set to specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: modified_after
        in: query
        description: Limit response to posts modified after a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: modified_before
        in: query
        description: Limit response to posts modified before a given ISO8601 compliant date.
        required: false
        schema:
          type: string
          format: date-time
      - name: offset
        in: query
        description: Offset the result set by a specific number of items.
        required: false
        schema:
          type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - name: orderby
        in: query
        description: Sort collection by post attribute.
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
      - name: page
        in: query
        description: Current page of the collection.
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
      - name: search
        in: query
        description: Limit results to those matching a string.
        required: false
        schema:
          type: string
      - name: search_columns
        in: query
        description: Array of column names to be searched.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
      - name: search_semantics
        in: query
        description: How to interpret the search input.
        required: false
        schema:
          type: string
          enum:
          - exact
      - name: tax_relation
        in: query
        description: Limit result set based on relationship between multiple taxonomies.
        required: false
        schema:
          type: string
          enum:
          - AND
          - OR
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPCollection'
              examples:
                saved:
                  summary: Saved response captured 2026-09-06
                  externalValue: ../examples/director-of-national-intelligence-downloads.json
          headers:
            X-WP-Total: *id003
            X-WP-TotalPages: *id004
            Link: *id005
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/dlm_download&per_page=3
        status: 200
        date: '2026-09-06'
  /wp/v2/dlm_download/{id}:
    get:
      operationId: getDownload
      summary: Retrieve one ODNI publication
      description: Retrieve a single publication/download record by id.
      tags:
      - Publications
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        description: Download id.
        schema:
          type: integer
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPObject'
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/dlm_download/14142
        status: 200
        date: '2026-09-06'
  /wp/v2/dlm_download_category:
    get:
      operationId: listDownloadCategories
      summary: List publication categories
      description: Taxonomy terms classifying ODNI publications (Accountability, Transparency, NCTC, NCSC, reports
        and similar).
      tags:
      - Taxonomy
      security:
      - {}
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        required: false
        schema:
          type: boolean
          default: false
      - name: include
        in: query
        description: Limit result set to specific IDs.
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        required: false
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - slug
          - include_slugs
          - term_group
          - description
          - count
          default: name
      - name: page
        in: query
        description: Current page of the collection.
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        required: false
        schema:
          type: integer
      - name: search
        in: query
        description: Limit results to those matching a string.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPCollection'
              examples:
                saved:
                  summary: Saved response captured 2026-09-06
                  externalValue: ../examples/director-of-national-intelligence-download-categories.json
          headers:
            X-WP-Total: *id003
            X-WP-TotalPages: *id004
            Link: *id005
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/dlm_download_category&per_page=100
        status: 200
        date: '2026-09-06'
  /wp/v2/dlm_download_category/{id}:
    get:
      operationId: getDownloadCategory
      summary: Retrieve one publication category
      description: Retrieve a single publication-category term by id.
      tags:
      - Taxonomy
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        description: Term id.
        schema:
          type: integer
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPObject'
        '400':
          description: Invalid parameter. WordPress returns `rest_invalid_param` with a `data.params` map naming
            the offending parameters.
          content: *id001
        '404':
          description: No matching route or record (`rest_no_route`, `rest_post_invalid_id`, `rest_term_invalid`).
          content: *id002
      x-verified:
        url: https://www.odni.gov/?rest_route=/wp/v2/dlm_download_category/123
        status: 200
        date: '2026-09-06'
  /wp/v2/dlm_download_tag:
    get:
      operationId

# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/director-of-national-intelligence/refs/heads/main/openapi/director-of-national-intelligence-wp-content-openapi.yml