Hydrostor Discovery API

Public, unauthenticated discovery metadata for hydrostor.ca — the self-describing route index (340 routes across 18 namespaces at capture), the registered content types and taxonomies, the publication statuses, and the public author records. This is the surface that makes the rest of the API machine-readable in the complete absence of any published documentation.

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-discovery-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-discovery-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Hydrostor Discovery API
  version: wp/v2
  description: Public, unauthenticated discovery metadata for hydrostor.ca — the self-describing route index (340
    routes across 18 namespaces at capture), the registered content types and taxonomies, the publication statuses,
    and the public author records. This is the surface that makes the rest of the API machine-readable in the complete
    absence of any published documentation, and it is what every other artifact in this profile was derived from
    on 2026-08-22.
  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: Discovery
  description: 'Self-describing metadata: routes, types, taxonomies, statuses, authors.'
paths:
  /:
    get:
      operationId: getApiIndex
      summary: Get the API root index
      description: 'Retrieve the self-describing root document: site name and description, the registered namespaces,
        the advertised authentication scheme, and the full route index with per-route methods and argument schemas.
        Verified live at 340 routes across 18 namespaces on 2026-08-22. This is the document every other artifact
        in this profile was derived from.'
      tags:
      - Discovery
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made.
        schema:
          type: string
          enum:
          - view
          - embed
          - help
          default: view
      responses:
        '200':
          description: The root index document.
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  description:
                    type: string
                  url:
                    type: string
                    format: uri
                  home:
                    type: string
                    format: uri
                  gmt_offset:
                    type: number
                  timezone_string:
                    type: string
                  namespaces:
                    type: array
                    items:
                      type: string
                  authentication:
                    type: object
                  routes:
                    type: object
                  site_icon_url:
                    type: string
                    format: uri
  /wp/v2/types:
    get:
      operationId: listContentTypes
      summary: List registered content types
      description: Retrieve every registered post type with its REST base, namespace and attached taxonomies. Verified
        live at 12 types on 2026-08-22, of which `project` is the only Hydrostor-specific one.
      tags:
      - Discovery
      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
      responses:
        '200':
          description: A map of content type name to definition.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/ContentType'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: &id001
                $ref: '#/components/schemas/Error'
  /wp/v2/types/{type}:
    get:
      operationId: getContentType
      summary: Get one content type
      description: Retrieve a single registered post type definition.
      tags:
      - Discovery
      parameters:
      - name: type
        in: path
        required: true
        description: An alphanumeric identifier for the post type.
        schema:
          type: string
      - 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 content type definition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentType'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id001
        '404':
          description: No such post type (`rest_type_invalid`).
          content:
            application/json:
              schema: *id001
  /wp/v2/taxonomies:
    get:
      operationId: listTaxonomyDefinitions
      summary: List registered taxonomies
      description: Retrieve every registered taxonomy with its REST base, the post types it applies to, and whether
        it is hierarchical. Verified live at 6 taxonomies on 2026-08-22.
      tags:
      - Discovery
      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: type
        in: query
        description: Limit results to taxonomies associated with a specific post type.
        schema:
          type: string
      responses:
        '200':
          description: A map of taxonomy name to definition.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/TaxonomyDefinition'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id001
  /wp/v2/statuses:
    get:
      operationId: listPostStatuses
      summary: List publication statuses
      description: Retrieve the publication statuses visible to an anonymous caller. Verified live at `publish`
        and `acf-disabled` on 2026-08-22.
      tags:
      - Discovery
      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
      responses:
        '200':
          description: A map of status name to definition.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/PostStatus'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id001
  /wp/v2/users:
    get:
      operationId: listAuthors
      summary: List public authors
      description: Retrieve the public author records that have published content. Verified live at 3 authors on
        2026-08-22. Anonymous callers see the public `view` projection only — email and role fields require authentication.
      tags:
      - Discovery
      parameters:
      - name: capabilities
        in: query
        description: Limit result set to users matching at least one specific capability provided. Accepts csv list
          or single capability.
        schema:
          type: array
          items:
            type: string
      - 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: has_published_posts
        in: query
        description: Limit result set to users who have published posts.
        schema:
          type:
          - boolean
          - array
          items:
            type: string
            enum:
              post: post
              page: page
              attachment: attachment
              nav_menu_item: nav_menu_item
              wp_block: wp_block
              wp_template: wp_template
              wp_template_part: wp_template_part
              wp_global_styles: wp_global_styles
              wp_navigation: wp_navigation
              wp_font_family: wp_font_family
              wp_font_face: wp_font_face
              project: project
      - 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 user attribute.
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - registered_date
          - slug
          - include_slugs
          - email
          - url
          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: roles
        in: query
        description: Limit result set to users matching at least one specific role provided. Accepts csv list or
          single role.
        schema:
          type: array
          items:
            type: string
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: search_columns
        in: query
        description: Array of column names to be searched.
        schema:
          type: array
          items:
            type: string
            enum:
            - email
            - name
            - id
            - username
            - slug
          default: []
      - name: slug
        in: query
        description: Limit result set to users with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      - name: who
        in: query
        description: Limit result set to users who are considered authors.
        schema:
          type: string
          enum:
          - authors
      responses:
        '200':
          description: A page of author records.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Author'
          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: *id001
  /wp/v2/users/{id}:
    get:
      operationId: getAuthor
      summary: Get one public author
      description: Retrieve a single public author record by identifier.
      tags:
      - Discovery
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the author.
        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 author record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Author'
        '400':
          description: Invalid request parameter (`rest_invalid_param`).
          content:
            application/json:
              schema: *id001
        '404':
          description: No such author (`rest_user_invalid_id`).
          content:
            application/json:
              schema: *id001
components:
  schemas:
    ContentType:
      type: object
      title: ContentType
      properties:
        capabilities:
          type: object
          description: All capabilities used by the post type.
          readOnly: true
        description:
          type: string
          description: A human-readable description of the post type.
          readOnly: true
        hierarchical:
          type: boolean
          description: Whether or not the post type should have children.
          readOnly: true
        viewable:
          type: boolean
          description: Whether or not the post type can be viewed.
          readOnly: true
        labels:
          type: object
          description: Human-readable labels for the post type for various contexts.
          readOnly: true
        name:
          type: string
          description: The title for the post type.
          readOnly: true
        slug:
          type: string
          description: An alphanumeric identifier for the post type.
          readOnly: true
        supports:
          type: object
          description: All features, supported by the post type.
          readOnly: true
        has_archive:
          type:
          - string
          - boolean
          description: If the value is a string, the value will be used as the archive slug. If the value is false
            the post type has no archive.
          readOnly: true
        taxonomies:
          type: array
          description: Taxonomies associated with post type.
          items:
            type: string
          readOnly: true
        rest_base:
          type: string
          description: REST base route for the post type.
          readOnly: true
        rest_namespace:
          type: string
          description: REST route's namespace for the post type.
          readOnly: true
        visibility:
          type: object
          description: The visibility settings for the post type.
          properties:
            show_ui:
              type: boolean
              description: Whether to generate a default UI for managing this post type.
            show_in_nav_menus:
              type: boolean
              description: Whether to make the post type available for selection in navigation menus.
          readOnly: true
        icon:
          type:
          - string
          - 'null'
          description: The icon for the post type.
          readOnly: true
        template:
          type: array
          description: The block template associated with the post type.
          readOnly: true
        template_lock:
          type:
          - string
          - boolean
          description: The template_lock associated with the post type, or false if none.
          enum:
          - all
          - insert
          - contentOnly
          - false
          readOnly: true
    TaxonomyDefinition:
      type: object
      title: TaxonomyDefinition
      properties:
        capabilities:
          type: object
          description: All capabilities used by the taxonomy.
          readOnly: true
        description:
          type: string
          description: A human-readable description of the taxonomy.
          readOnly: true
        hierarchical:
          type: boolean
          description: Whether or not the taxonomy should have children.
          readOnly: true
        labels:
          type: object
          description: Human-readable labels for the taxonomy for various contexts.
          readOnly: true
        name:
          type: string
          description: The title for the taxonomy.
          readOnly: true
        slug:
          type: string
          description: An alphanumeric identifier for the taxonomy.
          readOnly: true
        show_cloud:
          type: boolean
          description: Whether or not the term cloud should be displayed.
          readOnly: true
        types:
          type: array
          description: Types associated with the taxonomy.
          items:
            type: string
          readOnly: true
        rest_base:
          type: string
          description: REST base route for the taxonomy.
          readOnly: true
        rest_namespace:
          type: string
          description: REST namespace route for the taxonomy.
          readOnly: true
        visibility:
          type: object
          description: The visibility settings for the taxonomy.
          properties:
            public:
              type: boolean
              description: Whether a taxonomy is intended for use publicly either via the admin interface or by
                front-end users.
            publicly_queryable:
              type: boolean
              description: Whether the taxonomy is publicly queryable.
            show_ui:
              type: boolean
              description: Whether to generate a default UI for managing this taxonomy.
            show_admin_column:
              type: boolean
              description: Whether to allow automatic creation of taxonomy columns on associated post-types table.
            show_in_nav_menus:
              type: boolean
              description: Whether to make the taxonomy available for selection in navigation menus.
            show_in_quick_edit:
              type: boolean
              description: Whether to show the taxonomy in the quick/bulk edit panel.
          readOnly: true
    PostStatus:
      type: object
      title: PostStatus
      properties:
        name:
          type: string
          description: The title for the status.
          readOnly: true
        private:
          type: boolean
          description: Whether posts with this status should be private.
          readOnly: true
        protected:
          type: boolean
          description: Whether posts with this status should be protected.
          readOnly: true
        public:
          type: boolean
          description: Whether posts of this status should be shown in the front end of the site.
          readOnly: true
        queryable:
          type: boolean
          description: Whether posts with this status should be publicly-queryable.
          readOnly: true
        show_in_list:
          type: boolean
          description: Whether to include posts in the edit listing for their post type.
          readOnly: true
        slug:
          type: string
          description: An alphanumeric identifier for the status.
          readOnly: true
        date_floating:
          type: boolean
          description: Whether posts of this status may have floating published dates.
          readOnly: true
    Author:
      type: object
      title: Author
      properties:
        id:
          type: integer
          description: Unique identifier for the user.
          readOnly: true
        username:
          type: string
          description: Login name for the user.
        name:
          type: string
          description: Display name for the user.
        first_name:
          type: string
          description: First name for the user.
        last_name:
          type: string
          description: Last name for the user.
        email:
          type: string
          description: The email address for the user.
          format: email
        url:
          type: string
          description: URL of the user.
          format: uri
        description:
          type: string
          description: Description of the user.
        link:
          type: string
          description: Author URL of the user.
          format: uri
          readOnly: true
        locale:
          type: string
          description: Locale for the user.
          enum:
          - ''
          - en_US
        nickname:
          type: string
          description: The nickname for the user.
        slug:
          type: string
          description: An alphanumeric identifier for the user.
        registered_date:
          type: string
          description: Registration date for the user.
          format: date-time
          readOnly: true
        roles:
          type: array
          description: Roles assigned to the user.
          items:
            type: string
        password:
          type: string
          description: Password for the user (never included).
        capabilities:
          type: object
          description: All capabilities assigned to the user.
          readOnly: true
        extra_capabilities:
          type: object
          description: Any extra capabilities assigned to the user.
          readOnly: true
        meta:
          type: object
          description: Meta fields.
          properties:
            persisted_preferences:
              type: object
              properties:
                _modified:
                  type: string
                  description: The date and time the preferences were updated.
                  format: date-time
        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.