newsbot-api/docs/swagger.yaml

950 lines
23 KiB
YAML

basePath: /api
definitions:
domain.ArticleAndSourceModel:
properties:
article:
$ref: '#/definitions/domain.ArticleDto'
source:
$ref: '#/definitions/domain.SourceDto'
type: object
domain.ArticleDetailedResponse:
properties:
isError:
type: boolean
message:
type: string
payload:
$ref: '#/definitions/domain.ArticleAndSourceModel'
type: object
domain.ArticleDto:
properties:
authorImage:
type: string
authorName:
type: string
description:
type: string
id:
type: integer
isVideo:
type: boolean
pubDate:
type: string
sourceId:
type: integer
tags:
type: string
thumbnail:
type: string
title:
type: string
url:
type: string
type: object
domain.ArticleResponse:
properties:
isError:
type: boolean
message:
type: string
payload:
items:
$ref: '#/definitions/domain.ArticleDto'
type: array
type: object
domain.BaseResponse:
properties:
isError:
type: boolean
message:
type: string
type: object
domain.DiscordWebHookDto:
properties:
channel:
type: string
enabled:
type: boolean
id:
type: integer
server:
type: string
url:
description: |-
Name string `json:"name"`
Key string `json:"key"`
type: string
type: object
domain.DiscordWebhookResponse:
properties:
isError:
type: boolean
message:
type: string
payload:
items:
$ref: '#/definitions/domain.DiscordWebHookDto'
type: array
type: object
domain.LoginResponse:
properties:
isError:
type: boolean
message:
type: string
refreshToken:
type: string
token:
type: string
type:
type: string
type: object
domain.RefreshTokenRequest:
properties:
refreshToken:
type: string
username:
type: string
type: object
domain.SourceDto:
properties:
enabled:
type: boolean
id:
type: integer
name:
type: string
source:
type: string
tags:
type: string
url:
type: string
type: object
domain.SourcesResponse:
properties:
isError:
type: boolean
message:
type: string
payload:
items:
$ref: '#/definitions/domain.SourceDto'
type: array
type: object
domain.UpdateScopesRequest:
properties:
scopes:
items:
type: string
type: array
username:
type: string
required:
- scopes
type: object
info:
contact: {}
title: NewsBot collector
version: "0.1"
paths:
/v1/articles:
get:
parameters:
- description: page number
in: query
name: page
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ArticleResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Lists the top 25 records ordering from newest to oldest.
tags:
- Articles
/v1/articles/{ID}:
get:
parameters:
- description: int
in: path
name: ID
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ArticleResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Returns an article based on defined ID.
tags:
- Articles
/v1/articles/{ID}/details:
get:
parameters:
- description: int
in: path
name: ID
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ArticleDetailedResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Returns an article and source based on defined ID.
tags:
- Articles
/v1/articles/by/sourceId:
get:
parameters:
- description: source id
in: query
name: id
required: true
type: string
- description: Page to query
in: query
name: page
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ArticleResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Finds the articles based on the SourceID provided. Returns the top
25.
tags:
- Articles
/v1/discord/webhooks:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Returns the top 100
tags:
- DiscordWebhook
/v1/discord/webhooks/{ID}:
delete:
parameters:
- description: id
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Deletes a record by ID.
tags:
- DiscordWebhook
/v1/discord/webhooks/{ID}/disable:
post:
parameters:
- description: id
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Disables a Webhook from being used.
tags:
- DiscordWebhook
/v1/discord/webhooks/{ID}/enable:
post:
parameters:
- description: id
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Enables a source to continue processing.
tags:
- DiscordWebhook
/v1/discord/webhooks/{id}:
get:
parameters:
- description: id
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Returns the top 100 entries from the queue to be processed.
tags:
- DiscordWebhook
/v1/discord/webhooks/by/serverAndChannel:
get:
parameters:
- description: Fancy Server
in: query
name: server
required: true
type: string
- description: memes
in: query
name: channel
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Returns all the known web hooks based on the Server and Channel given.
tags:
- DiscordWebhook
/v1/discord/webhooks/new:
post:
parameters:
- description: url
in: query
name: url
required: true
type: string
- description: Server name
in: query
name: server
required: true
type: string
- description: Channel name
in: query
name: channel
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.DiscordWebhookResponse'
security:
- Bearer: []
summary: Creates a new record for a discord web hook to post data to.
tags:
- DiscordWebhook
/v1/sources:
get:
parameters:
- description: page number
in: query
name: page
type: string
produces:
- application/json
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Unable to reach SQL or Data problems
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Lists the top 50 records
tags:
- Source
/v1/sources/{id}:
get:
parameters:
- description: uuid
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Returns a single entity by ID
tags:
- Source
post:
parameters:
- description: id
in: path
name: id
required: true
type: integer
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Marks a source as deleted based on its ID value.
tags:
- Source
/v1/sources/{id}/disable:
post:
parameters:
- description: id
in: path
name: id
required: true
type: integer
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Disables a source from processing.
tags:
- Source
/v1/sources/{id}/enable:
post:
parameters:
- description: id
in: path
name: id
required: true
type: string
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Enables a source to continue processing.
tags:
- Source
/v1/sources/by/source:
get:
parameters:
- description: Source Name
in: query
name: source
required: true
type: string
- description: page number
in: query
name: page
type: string
produces:
- application/json
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: 'Lists the top 50 records based on the name given. Example: reddit'
tags:
- Source
/v1/sources/by/sourceAndName:
get:
parameters:
- description: dadjokes
in: query
name: name
required: true
type: string
- description: reddit
in: query
name: source
required: true
type: string
produces:
- application/json
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Returns a single entity by ID
tags:
- Source
/v1/sources/new/reddit:
post:
parameters:
- description: name
in: query
name: name
required: true
type: string
- description: url
in: query
name: url
required: true
type: string
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Creates a new reddit source to monitor.
tags:
- Source
/v1/sources/new/rss:
post:
parameters:
- description: Site Name
in: query
name: name
required: true
type: string
- description: RSS Url
in: query
name: url
required: true
type: string
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Creates a new rss source to monitor.
tags:
- Source
/v1/sources/new/twitch:
post:
parameters:
- description: name
in: query
name: name
required: true
type: string
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Creates a new twitch source to monitor.
tags:
- Source
/v1/sources/new/youtube:
post:
parameters:
- description: name
in: query
name: name
required: true
type: string
- description: url
in: query
name: url
required: true
type: string
responses:
"200":
description: ok
schema:
$ref: '#/definitions/domain.SourcesResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.SourcesResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.SourcesResponse'
security:
- Bearer: []
summary: Creates a new youtube source to monitor.
tags:
- Source
/v1/users/login:
post:
parameters:
- in: formData
name: password
type: string
- in: formData
name: username
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.LoginResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.LoginResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.LoginResponse'
summary: Logs into the API and returns a bearer token if successful
tags:
- Users
/v1/users/refresh/sessionToken:
post:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BaseResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Revokes the current session token and replaces it with a new one.
tags:
- Users
/v1/users/refresh/token:
post:
parameters:
- description: body
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.RefreshTokenRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.LoginResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Generates a new token
tags:
- Users
/v1/users/register:
post:
parameters:
- in: formData
name: password
type: string
- in: formData
name: username
type: string
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.BaseResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
summary: Creates a new user
tags:
- Users
/v1/users/scopes/add:
post:
consumes:
- application/json
parameters:
- description: body
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.UpdateScopesRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BaseResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Adds a new scope to a user account
tags:
- Users
/v1/users/scopes/remove:
post:
consumes:
- application/json
parameters:
- description: body
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.UpdateScopesRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BaseResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.BaseResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.BaseResponse'
security:
- Bearer: []
summary: Adds a new scope to a user account
tags:
- Users
securityDefinitions:
Bearer:
description: Type "Bearer" followed by a space and JWT token.
in: header
name: Authorization
type: apiKey
swagger: "2.0"