docxTemplater/openapi.yaml

244 lines
8.0 KiB
YAML
Raw Normal View History

openapi: 3.0.0
info:
description: "Шаблонизатор документов PenaHub для AMO CRM"
version: 1.0.2
title: "PenaHub Template generator"
servers:
- url: https://tempgen.pena.digital
tags:
- name: amo
description: "Все что связано с amo"
paths:
/amo:
get:
tags:
- amo
summary: "Сохранение amo токена аккаунта"
description: "Вебхук предназначен для получения токена, после перехода по ссылке и подтверждения прав пользователем.
После успешного выполнения перенаправляет на страницу настроек плагина в AMO CRM"
operationId: AmoSaveToken
parameters:
- $ref: "#/components/parameters/access_token"
- $ref: "#/components/parameters/code"
- $ref: "#/components/parameters/client_id"
- $ref: "#/components/parameters/expires_in"
- $ref: "#/components/parameters/token_type"
- $ref: "#/components/parameters/refresh_token"
- $ref: "#/components/parameters/state"
- $ref: "#/components/parameters/from_widget"
- $ref: "#/components/parameters/referer"
responses:
308:
description: "Permanent Redirect. Успешно"
400:
description: "Bad Request. Ошибка в запросе"
401:
description: "Unauthorized. State-токен не совпадает с ожидаемым"
403:
description: "Forbidden. Amo клиент выдал ошибку"
500:
$ref: "#/components/responses/InternalServerError"
/amo/state:
get:
tags:
- amo
summary: "Получить состояние аккаунта пользователя в Amo"
description: "Возвращает актуальное состояние аккаунта пользователя в AMO CRM. Авторизация происходит либо по jwt
«AMO CRM» или «PenaHub»"
responses:
200:
description: "Успешно"
content:
application/json:
schema:
$ref: "#/components/schemas/AmoState"
components:
parameters:
access_token:
name: access_token
in: query
required: true
schema:
type: string
code:
name: code
in: query
schema:
type: string
client_id:
name: client_id
in: query
schema:
type: string
expires_in:
name: expires_in
in: query
schema:
type: integer
format: timestamp
token_type:
name: token_type
in: query
schema:
type: string
refresh_token:
name: refresh_token
in: query
schema:
type: string
state:
name: state
in: query
required: true
schema:
type: string
from_widget:
name: from_widget
in: query
schema:
type: string
referer:
name: referer
in: query
schema:
type: string
schemas:
InternalServerError:
type: string
title: Internal server
example: "Something wrong! Ow ow ow!"
AmoState:
type: object
properties:
gen_count:
description: "Количество оставшихся генераций на аккаунте"
type: integer
example: 97
auth_yandex_url:
type: string
description: "Ссылка для авторизации приложения в Yandex Disk"
example: "https://oauth.yandex.ru/authorize?..."
auth_google_url:
type: string
description: "Ссылка для авторизации приложения в Google Disk"
example: "https://accounts.google.com/o/oauth2/auth?..."
storages:
type: object
description: "Данные по хранилищам"
properties:
gdisk:
type: array
description: "Авторизованные Google Disk хранилища"
items:
$ref: "#/components/schemas/GDisk"
yadisk:
type: array
description: "Авторизованные Yandex Disk хранилища"
items:
$ref: "#/components/schemas/YaDisk"
GDisk:
type: object
description: "Google Disk"
properties:
id:
$ref: "#/components/schemas/id"
user_id:
$ref: "#/components/schemas/user_id"
email:
type: string
description: "E-mail профиля Google"
example: "johndoe@gmail.com"
display_name:
type: string
description: "Отображаемое имя профиля Google"
example: "John Doe"
photo_link:
type: string
description: "Аватарка профиля Google"
example: "https://lh3.googleusercontent.com/a/default-user=s64"
name:
type: string
description: "Пользовательское название хранилища"
example: "Google Disk (johndoe@gmail.com)"
default_folder:
type: string
description: "Название стандартной папки приложения"
example: "Template Generator"
default_folder_id:
type: string
description: "Идентификатор папки в Google Disk"
example: "1Qi0a0gEiuyZfgNm_DMg2-YAS9wtkZ3oQ"
template_folder:
type: string
description: "Название папки с шаблонами"
example: "templates"
template_folder_id:
type: string
description: "Идентификатор папки с шаблонами в Google Disk"
example: "Q230gEiuyASasdgNm_DMg2-YAS9wtkZadf"
save_folder:
type: string
description: "Название папки с сгенерированными файлами"
example: "saved"
save_folder_id:
type: string
description: "Идентификатор папки с сгенерированными файлами в Google Disk"
example: "a230gEiuyAaser1Nm_DMg2-YAS9wtfadtr"
is_deleted:
type: boolean
description: "Флаг удалено хранилище пользователем"
example: false
created_at:
$ref: "#/components/schemas/created_at"
updated_at:
$ref: "#/components/schemas/updated_at"
YaDisk:
type: object
description: "Yandex Disk"
properties:
id:
type: string
description: "Уникальный идентификатор"
example: "635520d143ebb05286f4fba6"
user_id:
type: string
description: "Уникальный идентификатор пользователя"
example: "62ac67a1471fd0f7892353bf"
id:
type: string
description: "Уникальный идентификатор"
example: "635520d143ebb05286f4fba6"
user_id:
type: string
description: "Уникальный идентификатор пользователя"
example: "62ac67a1471fd0f7892353bf"
created_at:
type: string
format: date-time
description: "Время создания записи"
example: "2022-10-23T11:09:05.35Z"
updated_at:
type: string
format: date-time
description: "Время последнего обновления записи"
example: "2022-10-23T11:09:05.35Z"
responses:
InternalServerError:
description: "Internal Server Error. Непредвиденная ошибка."
content:
application/json:
schema:
$ref: "#/components/schemas/InternalServerError"