Files
kjv_api/doc/openapi.yaml
2024-05-13 14:41:35 -07:00

247 lines
6.8 KiB
YAML

openapi: 3.0.0
info:
title: Bible API
description: API for accessing and searching biblical information.
version: 1.0.0
servers:
- url: https://api.1611.social
# Add security definitions for authorization tokens
security:
- bearerAuth:
type: apiKey
name: Authorization
in: header
paths:
/verses:
get:
summary: Get verses by reference.
description: Retrieve a list of verses by providing a verse reference or range.
parameters:
- name: verse_reference
in: query
description: The verse reference, e.g., "1cor5:1,2cor1:2-5".
required: true
schema:
type: string
responses:
'200':
description: List of verses in JSON format.
content:
application/json:
schema:
type: array
items:
type: object
properties:
book:
type: string
chapter:
type: integer
verse:
type: integer
text:
type: string
post:
summary: Submit sermon information.
description: Submit details of a sermon for review. Requires authorization.
security:
- bearerAuth: []
parameters:
- name: Authorization
in: header
description: Bearer token for authorization.
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
title:
type: string
url:
type: string
preacher:
type: string
date_preached:
type: string
format: date
church_name:
type: string
denomination:
type: string
responses:
'201':
description: Sermon submitted successfully.
content: {}
'401':
description: Unauthorized access.
/verses/{verse_id}:
get:
summary: Get verse by internal ID.
description: Retrieve a specific verse using its internal ID.
parameters:
- name: verse_id
in: path
description: The internal ID of the verse.
required: true
schema:
type: string
responses:
'200':
description: Verse details in JSON format.
content:
application/json:
schema:
type: object
properties:
book:
type: string
chapter:
type: integer
verse:
type: integer
text:
type: string
/search:
get:
summary: Search verses by keyword.
description: Return a list of verses matching a keyword search.
parameters:
- name: query
in: query
description: The keyword to search for.
required: true
schema:
type: string
responses:
'200':
description: List of verses in JSON format.
content:
application/json:
schema:
type: array
items:
type: object
properties:
book:
type: string
chapter:
type: integer
verse:
type: integer
text:
type: string
/search/semantic:
get:
summary: Search verses using semantic search.
description: Return a list of verses "most like" a query text. Requires authorization.
security:
- bearerAuth: []
parameters:
- name: Authorization
in: header
description: Bearer token for authorization.
required: true
schema:
type: string
- name: query
in: query
description: The query text.
required: true
schema:
type: string
responses:
'200':
description: List of verses in JSON format.
content:
application/json:
schema:
type: array
items:
type: object
properties:
book:
type: string
chapter:
type: integer
verse:
type: integer
text:
type: string
/verses/{verse_reference}/like:
get:
summary: Find similar verses.
description: Return a list of verses similar to the provided reference.
parameters:
- name: verse_reference
in: path
description: The verse reference for comparison.
required: true
schema:
type: string
responses:
'200':
description: List of similar verses in JSON format.
content:
application/json:
schema:
type: array
items:
type: object
properties:
book:
type: string
chapter:
type: integer
verse:
type: integer
text:
type: string
similarity_score:
type: number
description: Measure of similarity with the reference verse.
/sermons:
get:
summary: Get sermons referencing a verse.
description: Retrieve sermons containing a specific verse reference.
parameters:
- name: verse_reference
in: query
description: The verse reference to search for.
required: true
schema:
type: string
responses:
'200':
description: List of sermons in JSON format.
content:
application/json:
schema:
type: array
items:
type: object
properties:
title:
type: string
url:
type: string
preacher:
type: string
date_preached:
type: string
format: date
church_name:
type: string
denomination:
type: string