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.

Operations 8

GET /wp/v2/categories List newsroom categories #
GET /wp/v2/categories/{id} Get one term from newsroom categories #
GET /wp/v2/tags List newsroom tags #
GET /wp/v2/tags/{id} Get one term from newsroom tags #
GET /wp/v2/project_category List project categories #
GET /wp/v2/project_category/{id} Get one term from project categories #
GET /wp/v2/project_tag List project tags #
GET /wp/v2/project_tag/{id} Get one term from project tags #

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 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

hydrostor-taxonomy-api-openapi.yml Raw ↑
openapi: 3.2.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:
                  $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:
                $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:
                $ref: '#/components/schemas/Category'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /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:
                  $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:
                $ref: '#/components/schemas/Error'
  /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:
                $ref: '#/components/schemas/Tag'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /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:
                  $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:
                $ref: '#/components/schemas/Error'
  /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:
                $ref: '#/components/schemas/ProjectCategory'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /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:
                  $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:
                $ref: '#/components/schemas/Error'
  /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:
                $ref: '#/components/schemas/ProjectTag'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No term exists with that identifier (`rest_term_invalid`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    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
    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
    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.
    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
    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.