awesome-privacy/api/open-api-spec.yml

166 lines
4.4 KiB
YAML

openapi: 3.0.0
info:
title: Awesome Privacy API
description: API for accessing information on privacy-focused services.
version: 1.0.0
servers:
- url: https://api.awesome-privacy.xyz
paths:
/services:
get:
summary: Returns an array of all service objects
responses:
'200':
description: A list of services
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Service'
/categories:
get:
summary: Returns an array of all categories IDs
responses:
'200':
description: A list of category slugs
content:
application/json:
schema:
type: array
items:
type: string
/search/{searchTerm}:
get:
summary: Returns an array of listings matching the given search term
parameters:
- in: path
name: searchTerm
required: true
schema:
type: string
description: The term to search for
responses:
'200':
description: A list of services matching the search term
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Service'
'404':
description: Search term not specified
/{category}:
get:
summary: Returns an array of all section IDs within a given category
parameters:
- in: path
name: category
required: true
schema:
type: string
description: The slug of the category
responses:
'200':
description: A list of section slugs within the given category
content:
application/json:
schema:
type: array
items:
type: string
'404':
description: Category not found
/{category}/{section}:
get:
summary: Returns an array of all service objects within a given section
parameters:
- in: path
name: category
required: true
schema:
type: string
description: The slug of the category
- in: path
name: section
required: true
schema:
type: string
description: The slug of the section
responses:
'200':
description: A list of services within the specified section
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Service'
'404':
description: Category or section not found
/{category}/{section}/{service}:
get:
summary: Returns a single service object for a given category, section, and service
parameters:
- in: path
name: category
required: true
schema:
type: string
description: The slug of the category
- in: path
name: section
required: true
schema:
type: string
description: The slug of the section
- in: path
name: service
required: true
schema:
type: string
description: The slug of the service
responses:
'200':
description: A single service object
content:
application/json:
schema:
$ref: '#/components/schemas/Service'
'404':
description: Category, section, or service not found
components:
schemas:
ShortService:
type: object
properties:
name:
type: string
description:
type: string
url:
type: string
required:
- name
- description
- url
Service:
allOf:
- $ref: '#/components/schemas/ShortService'
- type: object
properties:
github:
type: string
icon:
type: string
followWith:
type: string
securityAudited:
type: boolean
openSource:
type: boolean
acceptsCrypto:
type: boolean
tosdrId:
type: number