DeveloperHub Reader Access API

Grants, lists and revokes access for invited readers of a private documentation project, keyed on email address — 3 operations.

Operations 3

GET /reader-access Get access details of all invited readers #
POST /reader-access Grant access to reader #
PATCH /reader-access Revoke access to reader #

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/developerhub-reader-access-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

developerhub-reader-access-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DeveloperHub.io Documentation Reader Access API
  description: API to manage your %product% resources programmatically. Using these APIs, you are able
    to manage pages, integrate with CI/CD, and retrieve resources among other operations.
  version: 1.1.0
  contact:
    name: DeveloperHub
    url: https://docs.developerhub.io/api/ref
servers:
- url: https://api.developerhub.io/api/v1
  variables: {}
security:
- Api-Key: []
tags: []
paths:
  /reader-access:
    get:
      tags:
      - Reader Access
      summary: Get access details of all invited readers
      description: 'Get access details of all invited readers. Rate limit: 3600 in 60 minutes.'
      operationId: get_reader_access
      responses:
        '200':
          description: OK
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReaderAccess'
                description: Reader access details
        '400':
          description: Client Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDenied'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
      deprecated: false
    post:
      tags:
      - Reader Access
      summary: Grant access to reader
      description: 'Grants access to reader. Only applicable when project is protected by "Email Invite".
        Rate limit: 100 in 60 minutes.'
      operationId: create_reader_access
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Reader access object
              required:
              - email
              properties:
                email:
                  type: string
                  description: Email address of reader
                  example: peter@example.com
                expiresAt:
                  type:
                  - string
                  - 'null'
                  description: Date of expiry in Y-m-d\TH:i:sP format
                  example: 2022-01-01T03:02:01+0000
      responses:
        '200':
          description: OK
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReaderAccess'
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDenied'
        '415':
          description: Unsupported content-type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnsupportedContentType'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
      deprecated: false
    patch:
      tags:
      - Reader Access
      summary: Revoke access to reader
      description: 'Revokes access to reader. Rate limit: 100 in 60 minutes.'
      operationId: revoke_reader_access
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Reader access object
              required:
              - email
              properties:
                email:
                  type: string
                  description: Email address of reader
                  example: peter@example.com
      responses:
        '200':
          description: OK
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReaderAccess'
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDenied'
        '415':
          description: Unsupported content-type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnsupportedContentType'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
      deprecated: false
components:
  headers:
    X-RateLimit-Limit:
      description: Requests permitted until reset time
      schema:
        type: integer
        example: 300
    X-RateLimit-Remaining:
      description: Requests consumed in current period
      schema:
        type: integer
        example: 253
    X-RateLimit-Reset:
      description: Unix timestamp at which requests consumed will reset
      schema:
        type: integer
        example: 1611530395
  schemas:
    AccessDenied:
      title: AccessDenied
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: Message of the error
              example: Access Denied
            httpCode:
              type: number
              description: HTTP code returned
              example: 403
            code:
              type: number
              description: Internal error code
              example: 403
    Error:
      title: Error
      type: object
      properties:
        message:
          type: string
          description: Message of the error
          example: No file provided.
        httpCode:
          type: number
          description: HTTP code returned
          example: 400
        code:
          type: number
          description: Internal error code
          example: 400
    ReaderAccess:
      title: Reader Access
      description: Reader Access
      required:
      - email
      - expiresAt
      - created
      - revoked
      type: object
      properties:
        email:
          type: string
          description: Reader e-mail address
          example: peter@example.com
        expiresAt:
          type:
          - string
          - 'null'
          description: Date when the access expires. Null if it never expires.
          example: 2022-04-20T19:03:14+0000
        created:
          type: string
          description: Date of access creation
          example: 2022-03-20T19:02:14+0000
        revoked:
          type:
          - string
          - 'null'
          description: Date when revoked. Null if not revoked.
          example: 2022-03-22T20:02:15+0000
    TooManyRequests:
      title: TooManyRequests
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: Message of the error
              example: You exceeded the rate limit
            httpCode:
              type: number
              description: HTTP code returned
              example: 429
            code:
              type: number
              description: Internal error code
              example: 9
    UnsupportedContentType:
      title: UnsupportedContentType
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: Message of the error
              example: Unsupported content-type 'form'. Supported content-type is 'application/json'.
            httpCode:
              type: number
              description: HTTP code returned
              example: 415
            code:
              type: number
              description: Internal error code
              example: 415
  securitySchemes:
    Api-Key:
      type: apiKey
      description: 'Generate an API Key from [DeveloperHub.io platform](https://app.developerhub.io) and
        provide it in the header such as `--header "X-Api-Key: <api-key>"` for cURL for all the requests
        requiring this authentication.'
      name: X-Api-Key
      in: header