Hydrostor Taxonomy API

Public, unauthenticated read access to the classification vocabularies behind hydrostor.ca: newsroom categories and tags, plus the site-specific `project_category` and `project_tag` taxonomies registered against the A-CAES project portfolio. Verified live on 2026-08-22 at 4 newsroom categories and 0 terms in each of the other three.

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/hydrostor-taxonomy-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 email required.

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

OpenAPI Specification

hydrostor-taxonomy-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Hydrostor Taxonomy API
  version: wp/v2
  description: 'Public, unauthenticated read access to the classification vocabularies behind hydrostor.ca: newsroom
    categories and tags, plus the site-specific `project_category` and `project_tag` taxonomies registered against
    the A-CAES project portfolio. Verified live on 2026-08-22 at 4 newsroom categories and 0 terms in each of the
    other three — the project taxonomies are registered and readable but carry no terms, so project records cannot
    currently be filtered by classification.'
  contact:
    name: Hydrostor
    url: https://hydrostor.ca/contact/
  x-derived-from: https://hydrostor.ca/wp-json/ route index + per-route HTTP OPTIONS schema documents
  x-derived-on: '2026-08-22'
  x-api-evangelist-note: Third-party profile by API Evangelist. Hydrostor publishes no developer program; this document
    describes the anonymously readable WordPress REST content API served from hydrostor.ca, which the site exposes
    as a self-describing route index. Every path, parameter and schema here was read from the server's own route
    index and HTTP OPTIONS documents on 2026-08-22 — nothing is invented.
servers:
- url: https://hydrostor.ca/wp-json
  description: Hydrostor WordPress REST API
tags:
- name: Taxonomy
  description: Classification vocabularies for newsroom posts and A-CAES projects.
paths:
  /wp/v2/categories:
    get:
      operationId: listCategoryTerms
      summary: List newsroom categories
      description: 'Retrieve the newsroom category vocabulary. Verified live at 4 categories on 2026-08-22: Featured
        Coverage (96 posts), Press Release (54), Insights (24) and Uncategorized (0).'
      tags:
      - Taxonomy
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        schema:
          type: boolean
          default: false
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        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.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: parent
        in: query
        description: Limit result set to terms assigned to a specific parent.
        schema:
          type: integer
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        schema:
          type: integer
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: slug
        in: query
        description: Limit result set to terms with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: A page of terms.
          content:
            application/json:
              schema:
                type: array
                items: &id001
                  $ref: '#/components/schemas/Category'
          headers:
            X-WP-Total:
              description: Total number of items in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the requested page size.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (`rel="next"` / `rel="prev"`).
              schema:
                type: string
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: &id002
                $ref: '#/components/schemas/Error'
  /wp/v2/categories/{id}:
    get:
      operationId: getCategoryTerm
      summary: Get one term from newsroom categories
      description: Retrieve a single term by its numeric identifier.
      tags:
      - Taxonomy
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the term.
        schema:
          type: integer
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The term.
          content:
            application/json:
              schema: *id001
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema: *id002
  /wp/v2/tags:
    get:
      operationId: listTagTerms
      summary: List newsroom tags
      description: Retrieve the newsroom tag vocabulary. Verified live at 0 terms on 2026-08-22 — the taxonomy is
        registered and readable but Hydrostor does not tag its newsroom.
      tags:
      - Taxonomy
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        schema:
          type: boolean
          default: false
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: offset
        in: query
        description: Offset the result set by a specific number of items.
        schema:
          type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        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.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        schema:
          type: integer
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: slug
        in: query
        description: Limit result set to terms with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: A page of terms.
          content:
            application/json:
              schema:
                type: array
                items: &id003
                  $ref: '#/components/schemas/Tag'
          headers:
            X-WP-Total:
              description: Total number of items in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the requested page size.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (`rel="next"` / `rel="prev"`).
              schema:
                type: string
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
  /wp/v2/tags/{id}:
    get:
      operationId: getTagTerm
      summary: Get one term from newsroom tags
      description: Retrieve a single term by its numeric identifier.
      tags:
      - Taxonomy
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the term.
        schema:
          type: integer
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The term.
          content:
            application/json:
              schema: *id003
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema: *id002
  /wp/v2/project_category:
    get:
      operationId: listProjectCategoryTerms
      summary: List project categories
      description: Retrieve the hierarchical project category vocabulary attached to the `project` custom post type.
        Verified live at 0 terms on 2026-08-22 — registered but unused.
      tags:
      - Taxonomy
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        schema:
          type: boolean
          default: false
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        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.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: parent
        in: query
        description: Limit result set to terms assigned to a specific parent.
        schema:
          type: integer
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        schema:
          type: integer
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: slug
        in: query
        description: Limit result set to terms with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: A page of terms.
          content:
            application/json:
              schema:
                type: array
                items: &id004
                  $ref: '#/components/schemas/ProjectCategory'
          headers:
            X-WP-Total:
              description: Total number of items in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the requested page size.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (`rel="next"` / `rel="prev"`).
              schema:
                type: string
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
  /wp/v2/project_category/{id}:
    get:
      operationId: getProjectCategoryTerm
      summary: Get one term from project categories
      description: Retrieve a single term by its numeric identifier.
      tags:
      - Taxonomy
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the term.
        schema:
          type: integer
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The term.
          content:
            application/json:
              schema: *id004
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema: *id002
  /wp/v2/project_tag:
    get:
      operationId: listProjectTagTerms
      summary: List project tags
      description: Retrieve the flat project tag vocabulary attached to the `project` custom post type. Verified
        live at 0 terms on 2026-08-22 — registered but unused.
      tags:
      - Taxonomy
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        schema:
          type: boolean
          default: false
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: offset
        in: query
        description: Offset the result set by a specific number of items.
        schema:
          type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        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.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        schema:
          type: integer
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: slug
        in: query
        description: Limit result set to terms with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: A page of terms.
          content:
            application/json:
              schema:
                type: array
                items: &id005
                  $ref: '#/components/schemas/ProjectTag'
          headers:
            X-WP-Total:
              description: Total number of items in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the requested page size.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (`rel="next"` / `rel="prev"`).
              schema:
                type: string
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
  /wp/v2/project_tag/{id}:
    get:
      operationId: getProjectTagTerm
      summary: Get one term from project tags
      description: Retrieve a single term by its numeric identifier.
      tags:
      - Taxonomy
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the term.
        schema:
          type: integer
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The term.
          content:
            application/json:
              schema: *id005
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id002
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema: *id002
components:
  schemas:
    Category:
      type: object
      title: Category
      properties:
        id:
          type: integer
          description: Unique identifier for the term.
          readOnly: true
        count:
          type: integer
          description: Number of published posts for the term.
          readOnly: true
        description:
          type: string
          description: HTML description of the term.
        link:
          type: string
          description: URL of the term.
          format: uri
          readOnly: true
        name:
          type: string
          description: HTML title for the term.
        slug:
          type: string
          description: An alphanumeric identifier for the term unique to its type.
        taxonomy:
          type: string
          description: Type attribution for the term.
          enum:
          - category
          readOnly: true
        parent:
          type: integer
          description: The parent term ID.
        meta:
          type: object
          description: Meta fields.
        acf:
          type: object
          description: ACF field data
    Tag:
      type: object
      title: Tag
      properties:
        id:
          type: integer
          description: Unique identifier for the term.
          readOnly: true
        count:
          type: integer
          description: Number of published posts for the term.
          readOnly: true
        description:
          type: string
          description: HTML description of the term.
        link:
          type: string
          description: URL of the term.
          format: uri
          readOnly: true
        name:
          type: string
          description: HTML title for the term.
        slug:
          type: string
          description: An alphanumeric identifier for the term unique to its type.
        taxonomy:
          type: string
          description: Type attribution for the term.
          enum:
          - post_tag
          readOnly: true
        meta:
          type: object
          description: Meta fields.
    ProjectCategory:
      type: object
      title: ProjectCategory
      properties:
        id:
          type: integer
          description: Unique identifier for the term.
          readOnly: true
        count:
          type: integer
          description: Number of published posts for the term.
          readOnly: true
        description:
          type: string
          description: HTML description of the term.
        link:
          type: string
          description: URL of the term.
          format: uri
          readOnly: true
        name:
          type: string
          description: HTML title for the term.
        slug:
          type: string
          description: An alphanumeric identifier for the term unique to its type.
        taxonomy:
          type: string
          description: Type attribution for the term.
          enum:
          - project_category
          readOnly: true
        parent:
          type: integer
          description: The parent term ID.
        meta:
          type: object
          description: Meta fields.
        acf:
          type: object
          description: ACF field data
    ProjectTag:
      type: object
      title: ProjectTag
      properties:
        id:
          type: integer
          description: Unique identifier for the term.
          readOnly: true
        count:
          type: integer
          description: Number of published posts for the term.
          readOnly: true
        description:
          type: string
          description: HTML description of the term.
        link:
          type: string
          description: URL of the term.
          format: uri
          readOnly: true
        name:
          type: string
          description: HTML title for the term.
        slug:
          type: string
          description: An alphanumeric identifier for the term unique to its type.
        taxonomy:
          type: string
          description: Type attribution for the term.
          enum:
          - project_tag
          readOnly: true
        meta:
          type: object
          description: Meta fields.
        acf:
          type: object
          description: ACF field data
    Error:
      type: object
      title: WordPress REST error
      description: The error envelope returned by every route on this surface. Observed live on 2026-08-22; it is
        a WordPress-native envelope, not RFC 9457 problem+json.
      properties:
        code:
          type: string
          description: Machine-readable error code, e.g. `rest_post_invalid_id`, `rest_invalid_param`, `rest_forbidden`.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          description: Error detail.
          properties:
            status:
              type: integer
              description: HTTP status code, repeated inside the body.
            params:
              type: object
              description: Per-parameter validation messages, present on `rest_invalid_param`.
            details:
              type: object
              description: Per-parameter structured validation detail, present on `rest_invalid_param`.
  securitySchemes:
    applicationPassword:
      type: http
      scheme: basic
      description: WordPress application passwords. Issued from https://hydrostor.ca/wp-admin/authorize-application.php
        and advertised by the API's own root document under `authentication.application-passwords`. Required only
        for write and administrative routes; every read operation described in this document answers anonymously.