Categorygithub.com/tclutin/classconnect-api
module
0.0.0-20240528145009-3e8a178def01
Repository: https://github.com/tclutin/classconnect-api.git
Documentation: pkg.go.dev

# README

сlassconnect-api

Описание

Основное API для ClassConnect

classconnect-api позволяет создавать группы, загружать расписания группам, рассылать уведомления о скороv старте занятий, а также позволяет удобно узнавать расписание группы.

Установка

  1. Склонируйте репозиторий
git clone github.com/tclutin/classconnect-api
cd classconnect-api
  1. После этого, переименуйте файл .env_example в .env и настройте его, если это необходимо.
  2. Запустите приложение
docker-compose up
  1. Затем подключитесь к контейнеру c приложением и выполните миграцию
docker exec <name of container with app> goose -dir ./migrations postgres "postgresql://postgres:postgres@db:5432/classconnect-api" up
  1. По умолчанию сервис будет доступен по адресу http://localhost:8080.

Использование API

[auth] Регистрация пользователя

  • URL: /api/v1/auth/signup
  • Метод: POST
  • Коды ответов:
    • 201 Created - успех
    • 400 Bad Request - неверный формат запроса
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "username": "example_user",
      "email": "[email protected]",
      "password": "example_password"
    }
    
  • Тело ответа:
    {
      "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    }
    

[auth] Аутентификация пользователя

  • URL: /api/v1/auth/login
  • Метод: POST
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "username": "example_user",
      "password": "example_password"
    }
    
  • Тело ответа:
    {
      "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    }
    

[auth] Получение информации о пользователе

  • URL: /api/v1/auth/me
  • Метод: GET
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа без группы:
    {
      "id": 1,
      "username": "example_user",
      "email": "[email protected]",
      "access_token": false,
      "group": null
    }
    
  • Тело ответа с группой:
    {
      "id": 1,
      "username": "example_user",
      "email": "[email protected]",
      "access_token": false,
      "group": {
          "id": 1,
          "name": "example_user",
          "code": "KkDM",
          "is_exists_schedule": false,
          "members_count": 1,
          "created_at": "2024-05-03T20:16:00.113233+05:00"
      }
    }
    

[subscribers] Регистрация подписчика с телеграма

  • URL: /api/v1/subscribers/telegram
  • Метод: POST
  • Коды ответов:
    • 200 Created - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "chat_id": 1,
    }
    
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[subscribers] Регистрация подписчика с девайсов

  • URL: /api/v1/subscribers/device
  • Метод: POST
  • Коды ответов:
    • 201 Created - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "device_id": 1,
    }
    
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[subscribers] Получение подписчика с девайса

  • URL: /api/v1/subscribers/device/:deviceID
  • Метод: GET
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа:
    {
      "id": 1,
      "group_id": null,
      "tg_chat_id": null,
      "device_id": 123,
      "notification_enabled": false
    }
    

[subscribers] Получение подписчика с телеграма

  • URL: /api/v1/subscribers/telegram/:chatID
  • Метод: GET
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа:
    {
      "id": 1,
      "group_id": null,
      "tg_chat_id": 123,
      "device_id": null,
      "notification_enabled": false
    }
    
    

[subscribers] Включение уведомлений у подписчика

  • URL: /api/v1/subscribers/:subID
  • Метод: PATCH
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
       "notification": true
    }
    
  • Тело ответа:
    {
      "message": "Successfully"
    }
    
    

[groups] Создание группы

  • URL: /api/v1/groups
  • Метод: POST
  • Коды ответов:
    • 201 Created - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "name": "name_group",
    }
    
  • Тело ответа:
    {
      "ID": 1,
      "Name": "name_group",
      "Code": "ZPlz",
      "IsExistsSchedule": false,
      "MembersCount": 1,
      "CreatedAt": "2024-05-03T20:27:07.889702Z"
    }
    

[groups] Удаление группы

  • URL: /api/v1/groups
  • Метод: DELETE
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[groups] Получение всех групп

  • URL: /api/v1/groups
  • Метод: GET
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа:
    [{
      "id": 1,
      "name": "name_group",
      "is_exists_schedule": false,
      "members_count": 1,
      "created_at": "2024-05-03T20:27:07.889702Z"
    }]
    

[groups] Получение группы по ID

  • URL: /api/v1/groups/:groupID
  • Метод: GET
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа:
    {
      "id": 3,
      "name": "йцу",
      "is_exists_schedule": true,
      "members_count": 2,
      "created_at": "2024-05-03T20:29:24.709429Z"
    }
    

[groups] Вступление в группу

  • URL: /api/v1/groups/:groupID/join
  • Метод: POST
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "sub_id": 1,
      "code": "your_code_of_group"
    }
    
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[groups] Выход из группы

  • URL: /api/v1/groups/:groupID/leave
  • Метод: POST
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "sub_id": 1,
    }
    
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[schedules] Загрузка расписания

  • URL: /api/v1/schedules
  • Метод: POST
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
{
  "weeks": [
    {
      "is_even": true,
      "days": [
        {
          "day_number": 1,
          "subjects": [
            {
              "name": "Java",
              "cabinet": "remote",
              "teacher": "Vladimir Polyakov && Alexandr-Dolgov",
              "description": "There may be a description here",
              "start_time": "08:00",
              "end_time": "09:30"
            }
          ]
        },
        {
          "day_number": 2,
          "subjects": [
            {
              "name": "Management",
              "cabinet": "A-15",
              "teacher": "...",
              "description": "There may be a description here",
              "start_time": "09:40",
              "end_time": "11:10"
            }
          ]
        }
      ]
    }
  ]
}
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[schedules] Удаление расписания

  • URL: /api/v1/schedules
  • Метод: DELETE
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело ответа:
    {
      "message": "Successfully"
    }
    

[schedules] Получение расписания на день

  • URL: /api/v1/schedules
  • Метод: GET
  • Коды ответов:
    • 200 Success - успех
    • 400 Bad Request - неверный формат запроса
    • 401 Unauthorized - требуется аутентификация
    • 500 Internal Server Error - ошибка сервера
  • Тело запроса:
    {
      "sub_id": 1,
    }
    
  • Тело ответа:
      [{
          "Name": "Operating systems",
          "Cabinet": "132A",
          "Teacher": "...",
          "Description": "There may be a description here",
          "StartTime": "09:40",
          "EndTime": "11:10"
      }]
    

# Packages

No description provided by the author
No description provided by the author