Programming Quotes Authentication API

Programming Quotes — JWT login / register exchange.

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-schema/programming-quotes-quote-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-schema/programming-quotes-quote-input-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-schema/programming-quotes-quote-update-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-schema/programming-quotes-vote-input-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-schema/programming-quotes-auth-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-schema/programming-quotes-auth-response-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-structure/programming-quotes-quote-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-structure/programming-quotes-quote-input-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-structure/programming-quotes-quote-update-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-structure/programming-quotes-vote-input-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-structure/programming-quotes-auth-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/programming-quotes/refs/heads/main/json-structure/programming-quotes-auth-response-structure.json

Other Resources

OpenAPI Specification

programming-quotes-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Programming Quotes Authentication API
  description: 'Free, open-source REST API serving a curated collection of programming-related

    quotes. Public endpoints return random quotes, paginated lists, author filters,

    and single-quote lookups. Authenticated endpoints support voting, favoriting,

    and quote CRUD for contributors.


    Canonical source: https://github.com/skolakoda/programming-quotes-api

    '
  version: 1.0.0
  contact:
    name: Programming Quotes API (skolakoda)
    url: https://github.com/skolakoda/programming-quotes-api
  license:
    name: Community / Unlicensed
    url: https://github.com/skolakoda/programming-quotes-api
  x-generated-from: documentation
  x-last-validated: '2026-05-30'
servers:
- url: https://programming-quotes-api.azurewebsites.net/api
  description: Primary Azure-hosted deployment (canonical)
- url: https://programming-quotesapi.vercel.app/api
  description: Community Vercel mirror (legacy / unofficial)
- url: https://api.programming-quotes.onrender.com/api
  description: Community Render mirror (legacy / unofficial)
- url: https://programming-quotes-api.herokuapp.com/api
  description: Legacy Heroku deployment (deprecated)
tags:
- name: Authentication
  description: Programming Quotes — JWT login / register exchange.
paths:
  /auth/token:
    post:
      summary: Programming Quotes Issue Auth Token
      description: 'Exchange email and password credentials for a JWT bearer token used to

        authenticate write endpoints (create / update / delete / vote / favorite).

        If the email is not registered, a new user is created.

        '
      operationId: issueAuthToken
      tags:
      - Authentication
      requestBody:
        description: User credentials (email + password).
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthRequest'
      responses:
        '200':
          description: JWT issued for the user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '400':
          description: Missing or invalid credentials payload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication failed (bad password).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    AuthResponse:
      type: object
      title: AuthResponse
      description: JWT bearer token response.
      properties:
        token:
          type: string
          description: 'JWT bearer token. Use as `Authorization: Bearer <token>`.'
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjb250cmlidXRvckBleGFtcGxlLmNvbSJ9.signature
      required:
      - token
    AuthRequest:
      type: object
      title: AuthRequest
      description: Credentials for the auth/token exchange.
      properties:
        email:
          type: string
          format: email
          description: Account email address.
          example: contributor@example.com
        password:
          type: string
          format: password
          description: Account password.
          example: s3cret-correct-horse-battery
      required:
      - email
      - password
    ErrorResponse:
      type: object
      title: ErrorResponse
      description: Standard error payload.
      properties:
        message:
          type: string
          description: Human-readable error message.
          example: Quote not found
        error:
          type: string
          description: Short error code or class name.
          example: NotFoundError
      required:
      - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'JWT token issued by `POST /auth/token`. Send as `Authorization: Bearer <token>`.'