openapi: 3.0.3 info: title: Chuck Norris jokes API description: Free REST API providing random Chuck Norris jokes, categories, and the ability to search the joke database with no authentication required. version: 1.0.0 contact: url: https://api.chucknorris.io license: name: Free to use url: https://api.chucknorris.io servers: - url: https://api.chucknorris.io description: Production server tags: - name: jokes description: Chuck Norris joke operations paths: /jokes/random: get: tags: - jokes summary: Get a random joke description: Returns a random Chuck Norris joke. Optionally filter by category or personalize by substituting a custom name. operationId: getRandomJoke parameters: - name: category in: query description: One or more comma-separated categories to filter the random joke required: false schema: type: string example: science - name: name in: query description: A custom name to substitute in the joke text instead of 'Chuck Norris' required: false schema: type: string example: John Doe responses: '200': description: A random Chuck Norris joke content: application/json: schema: $ref: '#/components/schemas/Joke' example: categories: [] created_at: '2020-01-05 13:42:28.143137' icon_url: https://api.chucknorris.io/img/avatar/chuck-norris.png id: XsZF_OwkSK2dXb7Cuzubmg updated_at: '2020-01-05 13:42:28.143137' url: https://api.chucknorris.io/jokes/XsZF_OwkSK2dXb7Cuzubmg value: Chuck Norris can divide by zero. text/plain: schema: type: string example: Chuck Norris can divide by zero. '404': description: No joke found for the given category or name content: application/json: schema: $ref: '#/components/schemas/Error' /jokes/categories: get: tags: - jokes summary: List joke categories description: Returns an array of all available joke categories. operationId: getCategories responses: '200': description: Array of category name strings content: application/json: schema: type: array items: type: string example: - animal - career - celebrity - dev - explicit - fashion - food - history - money - movie - music - political - religion - science - sport - travel text/plain: schema: type: string example: 'animal career celebrity dev explicit ' /jokes/{id}: get: tags: - jokes summary: Get joke by ID description: Returns a specific Chuck Norris joke by its unique identifier. operationId: getJokeById parameters: - name: id in: path description: The unique joke identifier required: true schema: type: string example: XsZF_OwkSK2dXb7Cuzubmg responses: '200': description: The requested joke content: application/json: schema: $ref: '#/components/schemas/Joke' example: categories: [] created_at: '2020-01-05 13:42:28.143137' icon_url: https://api.chucknorris.io/img/avatar/chuck-norris.png id: XsZF_OwkSK2dXb7Cuzubmg updated_at: '2020-01-05 13:42:28.143137' url: https://api.chucknorris.io/jokes/XsZF_OwkSK2dXb7Cuzubmg value: Chuck Norris can divide by zero. text/plain: schema: type: string example: Chuck Norris can divide by zero. '404': description: Joke not found content: application/json: schema: $ref: '#/components/schemas/Error' /jokes/search: get: tags: - jokes summary: Search jokes description: Performs a free text search across the curated joke database. Query must be between 3 and 120 characters. operationId: searchJokes parameters: - name: query in: query description: The search query string (3-120 characters) required: true schema: type: string minLength: 3 maxLength: 120 example: computer responses: '200': description: Search results containing matching jokes content: application/json: schema: $ref: '#/components/schemas/JokeSearchResult' example: total: 1 result: - categories: - dev created_at: '2020-01-05 13:42:28.143137' icon_url: https://api.chucknorris.io/img/avatar/chuck-norris.png id: abc123 updated_at: '2020-01-05 13:42:28.143137' url: https://api.chucknorris.io/jokes/abc123 value: Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris. text/plain: schema: type: string example: 'Chuck Norris''s keyboard doesn''t have a Ctrl key because nothing controls Chuck Norris. ' '400': description: Invalid query (too short or too long) content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: Joke: type: object description: A Chuck Norris joke required: - categories - created_at - icon_url - id - updated_at - url - value properties: categories: type: array description: List of categories this joke belongs to items: type: string example: - dev created_at: type: string description: Timestamp when the joke was created example: '2020-01-05 13:42:28.143137' icon_url: type: string format: uri description: URL to the Chuck Norris avatar image example: https://api.chucknorris.io/img/avatar/chuck-norris.png id: type: string description: Unique identifier for the joke example: XsZF_OwkSK2dXb7Cuzubmg updated_at: type: string description: Timestamp when the joke was last updated example: '2020-01-05 13:42:28.143137' url: type: string format: uri description: Permalink URL to this joke example: https://api.chucknorris.io/jokes/XsZF_OwkSK2dXb7Cuzubmg value: type: string description: The joke text example: Chuck Norris can divide by zero. JokeSearchResult: type: object description: Result set from a joke search required: - total - result properties: total: type: integer description: Total number of jokes matching the search query example: 1 result: type: array description: Array of matching jokes items: $ref: '#/components/schemas/Joke' Error: type: object description: API error response properties: timestamp: type: string description: Timestamp of the error status: type: integer description: HTTP status code error: type: string description: Error type message: type: string description: Human-readable error message path: type: string description: Request path that triggered the error