Skip to content
Pavel Zagrebelin edited this page Dec 23, 2018 · 1 revision

swagger: "2.0" info: version: '0.1' title: "croinc customer api"

description: | Список API для реализации клинетской часть CROINC. Формат и количество отдаваемых данных необходимо обсуждать с front-end. Например, отдавая список услуг, нужно ли сразу отдавать все опции для каждой услуги, или для выбора опций будет отдельный запрос? Отдавая дерево категорий для салона, нужно ли включать в этот список услуги для каждой категории, или за услугами будет отдельный запрос? Экономим трафик, увеличиваем latency.

tags:

  • name: Service description: API для выбора услуги, салона и всего такого.
  • name: Employee description: API для выбора мастера, свободного времени и т.п.
  • name: Finish description: API для создания записи paths: /employees/findByService: get: summary: "список Мастеров (Employee), умеющих какую-то Услуги и работающих в какому-то Салоне" parameters:
    • name: 'salon_id' in: query description: "ID of the salon" required: true type: integer
    • in: query name: service_id description: 'ID of the Service' required: True type: integer responses: 200: description: "ok" tags:
      • Employee

/employee/{id}/availableTimes: get: summary: список свободных диапазонов времён для какого-то Мастера в определённую дату для определённой Услуги description: | список свободных диапазонов времён для какого-то Мастера в определённую дату для определённой Услуги. Нужно, если выбран приоритет по Мастеру, "хочу подстричься только у Маргариты, во сколько она может?"

  parameters:
  - name: id
    in: path
    description: 'ID of employee'
    type: integer
    required: true
  - name: service_id
    in: query
    description: 'ID of the service'
    type: integer
    required: True
  - name: date
    in: query
    description: необходимая дата, в формате YYYY-MM-DD.
    type: string
    format: date
    required: True
  responses:
    200: 
      description: ok
  tags:
    - Employee

/employees/availableAtTime: get: summary: "список свободных Мастеров какого-то Салона, которые умеют какую-то услугу и которые свободны в какой-то момент времени." description: | список свободных Мастеров какого-то Салона, которые умеют какую-то услугу и которые свободны до или после какого-то времени. Нужно для второй/третей услуги в заказе. "С 12 до 13 я подстригаюсь, а ещё хочу побриться, кто свободен из мастеров до или после стрижки?"

    Если в заказе сформированы две услуги в интервале 14:00-16:00, и клиент
    добавляет услугу длительностью в 30 минут, то нужно вызать этот метод два раза:
    на время 16:00 и на время 13:30.
    
    **TODO**: Можно передать параметр `XXX`, который позволит искать свободных
    мастеров не ровно в какое-то время, а с небольшим зазором. В примере выше,
    мастера будут искаться в диапазоне 13:00-13:30 (xxx=before)
    или в диапазоне 16:00-16:30 (xxx=after). Подлежит обсуждению.
  
  parameters:
  - name: salon_id
    in: query
    description: "ID of the salon"
    required: true
    type: integer
  - name: service_id
    in: query
    description: 'ID of the service'
    type: integer
  - name: time
    in: query
    description: 'Время, когда мастера должны быть свободны'
    type: string
  responses: 
    200:
      description: 'ok'
  tags:
    - Employee

/salon: get: summary: Список всех салонов responses: 200: description: Список салонов. Формт списка необходми обсудить с фронтом. tags: - Service /salon/{id}/categories: get: summary: Список всех залов/категорий салона. parameters: - name: id in: path description: salon_id type: integer required: True responses: 200: description: Список залов данного салона. Формт списка необходми обсудить с фронтом. tags: - Service

/salon/{id}/popularServices: get: summary: список популярных Услуг для Салона parameters: - name: id in: path description: salon_id type: integer required: True responses: 200: description: Список услуг популярных в данном салоне. Формт списка необходми обсудить с фронтом. tags: - Service

/service/findByCategory: get: summary: Список услуг, которые предоставляются в какой-то категорри parameters: - name: category_id in: query description: ID категории required: True type: integer responses: 200: description: Список услуг в каком-то зале. Формт списка необходми обсудить с фронтом. tags: - Service

/service/findByCustomerIp: get: summary: список услуг, которые были заказаны в последнее время с IP адреса клиента responses: 200: description: Список услуг в каком-то зале. Формт списка необходми обсудить с фронтом. tags: - Service

/service/{id}/related: get: summary: список услг, которые берут чаще всего одновременно с заказываемой parameters: - name: id in: path description: ID категории required: True type: integer - name: count in: query required: False type: integer description: Количество related услуг responses: 200: description: список услуг, которые берут чаще всего с этой tags: - Service

/done: post: summary: Создание записи со всеми выбранными услугами, мастерами и опциями description: | сюда надо передать все выбранные услуги, опции, мастеров, времена, контактные данные, и т.п. Формат передаваемых данных зависит от количества собранной информации на фронте.

  responses:  
    201:
      description: запись была создана
  tags:
    - Finish
Clone this wiki locally