NAV Navbar
Solar Staff

Обзор

API используется для того, чтобы интегрировать возможности сервиса Solar Staff в ваш проект. Описание API предназначено для разработчиков и включает в себя детальное описание всех доступных запросов.

Общая информация

Solar Staff API включает в себя методы работы с заданиями и фрилансерами. После регистрации в качестве администратора компании, вы можете приглашать и создавать фрилансеров, управлять заданиями, инициировать выводы средств на платежные инструменты фрилансеров.

В быстром старте описан наиболее популярный сценарий использования API.

API работает по протоколу HTTP и представляет собой набор методов, с помощью которых совершаются запросы и возвращаются ответы для каждой операции. Все ответы приходят в виде JSON структур. Для работы с API вы можете использовать любую удобную технологию и язык. В данном руководстве приведены примеры работы с API на языке PHP.

Для удобства разработчиков Solar Staff предоставляет песочницу (sandbox), где вы можете тестировать ваше решение до его развёртывания в production. Для начала работы с песочницей обратитесь в отдел продаж Solar Staff.

Основной URL

Текущая версия API - v2. Так, все ссылки на запросы к API в данной документации включают обязательный основной URL: https://my.solarstaff.com/api

В заголовке любого запроса необходимо передавать следующее: Accept: application/json.

Авторизация

Для аутентификации используется JWT токен. После получения JWT токена его необходимо передавать в заголовке запросов: Authorization: Bearer TOKEN_HERE.

Если у вас несколько компаний, то в заголовке запросов можно передавать параметр x-company-id - ID компании. В этом случае можно параллельно выполнять запросы для всех компаний без обновления токена - передавая в каждый запрос ID компании.

Процесс аутентификации имеет вид:

Authentication

Запрос JWT токена

Пример запроса

curl --location 
    --request POST 'https://my.solarstaff.com/api/login' \
    --data-raw '{
        "username": "Ivan",
        "password": "123123",
        "code": 0
    }'

Пример ответа Если параметр code был передан корректно или у пользователя не настроена двухфакторная аутентификация:

HTTP status 200 OK

{
  "token": "eyJhbGciOiJIUzUxMiIsI...",
  "refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}

Если параметр code не был передан, а у пользователя настроена двухфакторная аутентификация:

HTTP status 200 OK

{
    "2FA": {
        "type": "SMS" | "Google",
        "number": "+8279823472"
    }
}

Запрос позволяет получить JWT токен, который используется для аутентификации для всех остальных запросов.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
username string Да Имя пользователя
password string Да Пароль
code string нет Код двухфакторной аутентификации. В зависимости от настроек профиля пользователя:
  • если включена двухфакторная аутентификация, то параметр является обязательным для получения токена. Если значение не передано, то будет инициирована отправка смс. После получения кода необходимо еще раз вызвать данный запрос.
  • если двухфакторная аутентификация не включена, то параметр передавать не требуется.

Ответ

Название свойства Тип Описание
token string JWT токен
refreshToken string JWT токен, который используется для обновления токена

Обновление JWT токена

Пример запроса

curl --location 
    --request POST 'https://my.solarstaff.com/api/token/refresh' \
    --data-raw '{
        "refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
    }'

Пример ответа

HTTP status 200 OK

{
  "token": "eyJhbGciOiJIUzUxMiIsI...",
  "refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}

Запрос позволяет получить обновленный JWT токен, который используется для аутентификации для всех остальных запросов.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
refreshToken string Да JWT токен

Ответ

Название свойства Тип Описание
token string JWT токен
refreshToken string JWT токен, который используется для обновления токена

Ответ от API

Ответ от API передаётся в формате JSON.

Коды ошибок и их описание

Далее описаны все возможные коды ответов на запросы.

HTTP Код Тип ошибки Описание
200 Success Запрос выполнен успешно
401 Error: Unauthorized Неверные данные для аутентификации
403 Forbidden Доступ запрещен, ошибка авторизации
422 Validation error Ошибка валидации. Подробности ошибки содержатся в в теле ответа в виде {fieldName: errorText}
409 Error while executing request Ошибка в процессе выполнения запроса. Подробности содержатся в теле ответа в виде {"error description"}

Быстрый старт

В быстром старте описано как начать работу с Solar Staff API и выполнить наиболее популярные действия в системе:

Quickstart

Перед началом

Авторизация

Для аутентификации используется JWT токен. После получения JWT токена его необходимо передавать в заголовке запросов: Authorization: Bearer TOKEN_HERE.

Для запроса JWT токена необходимо выполнить запрос генерации JWT токена, передав логин, пароль и при необходимости код 2FA аутентификаации.

Адрес и тип запроса: POST https://my.solarstaff.com/api​/login

Далее полученный код необходимо передавать в заголовке всех дальнейших запросов.

Подробнее см. раздел Авторизация.

Сценарии работы с API

Основные сценарии использования API различаются в зависимости от способа работы с фрилансерами:

  • Вы работаете с фрилансерами, которые имеют возможность зарегистрироваться и выполнять основные операции в сервисе Solar-staff.
  • Ваши фрилансеры не будут создавать аккаунты в сервисе Solar-staff и вы будете инициировать выплаты им самостоятельно.

Если ваши фрилансеры самостоятельно зарегистрируются и будут работать в сервисе Solar-staff, то рекомендуемые шаги следующие:

Use_case_1

  1. Найти или пригласить фрилансера. Приглашение со ссылкой на регистрацию будет отправлено на email фрилансера. Для проверки статуса регистрации необходимо выполнить запрос поиска фрилансера с фильтром по email - для пользователей, выполнивших и подтвердивших регистрацию, параметр isRegistered должен быть true. Далее фрилансер самостоятельно должен выполнить верификацию.
  2. Создать новую задачу.
  3. Фрилансер подтверждает и выполняет задачу.
  4. Принять задачу.
  5. Оплатить задачу. Оплата за задачу будет списана с баланса заказчика и переведена на баланс фрилансера.

Если фрилансеры, работающие с вами, не будут самостоятельно работать в сервисе Solar-staff (изменять статусы задач, добавлять платежные инструменты или выводить полученную оплату за задачи), то рекомендуемые шаги следующие:

Use_case_1

  1. Найти или пригласить фрилансера. Фрилансеру необходимо будет заполнить данные и подтвердить регистрацию в сервисе, пройдя по ссылке из полученного письма.
  2. Создать новую задачу
  3. Последовательно изменить статусы задачи: принята фрилансером, выполнена.
  4. Принять задачу.
  5. Оплатить задачу.
  6. Найти платежный инструмент фрилансера или добавить новый. Добавить новый платежный инструмент может только фрилансер. Для добавления платежного инструмента необходимо отправить код подтверждения операции фрилансеру и далее сгенерировать ссылку на терминал, где фрилансер сможет ввести данные нового платежного инструмента.
  7. Создать выплату на платежный инструмент фрилансера за оплаченную задачу.

Приглашение фрилансера

Для добавления фрилансера в вашу команду выполните запрос приглашения фрилансера.

Адрес и тип запроса: POST https://my.solarstaff.com/api/customer/freelancers

При успешном выполнении запроса возвращается пустой ответ с кодом 200.

Создание задачи

Для создания задачи используется данный запрос, куда необходимо передать все обязательные параметры задачи: категорию, атрибуты, название, описание и стоимость.

Адрес и тип запроса: POST https://my.solarstaff.com/api​/tasks

При успешном выполнении запроса возвращается пустой ответ с кодом 200.

Изменение статуса задачи

Жизненный цикл задачи имеет вид:

  • создать задачу
  • принять задачу в работу
  • выполнить задачу
  • принять/отклонить результат работы
  • оплатить задачу

При работе через API необходимо все данные шаги выполнить последовательно. Для оплаты задачи используется отдельный запрос (оплата выполняется только на баланс фрилансера). Все остальные переходы между статусами выполняются запросом изменения статуса задач. То есть, последовательно необходимо выполнить запрос для следующих статусов:

  • принять задачу в работу (ID=2)
  • выполнить задачу (ID=3)
  • принять результат работы (ID=4)

Адрес и тип запроса: PUT https://my.solarstaff.com/api/customer/tasks/{taskId||uuid}

При успешном выполнении запроса возвращается пустой ответ с кодом 200.

Оплата задачи

Для оплаты задачи используется данный запрос, куда необходимо передать только ID задачи.

Адрес и тип запроса: POST https://my.solarstaff.com/api/customer/tasks/pay

При успешном выполнении запроса возвращается пустой ответ с кодом 200.

Задачи

API включает в себя запросы для управления задачами.

Статусы задач

Доступные статусы задач в системе (на схеме только основные статусы, полный список статусов в таблице ниже):

Статусы задач

Название статуса ID Описание Инициатор перевода в статус
Не подтверждена ID=1 Задача создана Заказчик
В работе ID=2 Фрилансер принял задачу в работу Фрилансер
Ждет приёмки ID=3 Фрилансер выполнил задачу и теперь она ожидает приёмки заказчика Фрилансер
Ждет оплату ID=4 Задача принята заказчиком и ожидает оплаты Заказчик
Завершена ID=5 Задача оплачена Заказчик
Отклонена исполнителем ID=6 Фрилансер отклонил задачу Фрилансер
Отклонена заказчиком ID=8 Заказчик отклонил задачу, выполненную фрилансером Заказчик
Ждет подтверждения отмены от фрилансера ID=11 Заказчик отклонил задачу и далее ожидается подтверждение отмены от фрилансера Заказчик
В очереди на оплату ID=12 Заказчик инициировал оплату, но оплата еще в процессе. После обработки статус задачи автоматически изменится на Завершена (ID=5). Если задача находится в этом статусе слишком долго, обратитесь, пожалуйста, в тех. поддержку Заказчик
Инициирован спор ID=13 Фрилансер нажал Оспорить задачу и ожидает ответа от заказчика Фрилансер
Согласование заказчиком ID=14 Если фрилансер не выполнил задачу до наступления дедлайна, заказчик должен выбрать что делать дальше: продлить дедлайн или отменить задачу Автоматически по наступлению дедлайна
Согласование изменений ID=13 Заказчик предложил изменить какие-то параметры задачи и ждет ответа от фрилансера Заказчик

Управление задачами

Раздел включает запросы получения, создания задач и изменения статуса задач.

Получить список задач

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/tasks?filter[creatorId]=123" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

{
  "items": [
    {
      "additionalAttributes": null,
      "category": {
        "id": 20,
        "title": "Управление размещением медийной рекламы",
        "titleEn": "ATL advertising management",
        "titleDoc": "Услуги по управлению размещением рекламных материалов  на интернет сайтах",
        "titleDocEn": "Services on managing  advertising materials' placement at websites"
      },
      "parentCategory": {
        "id": 2,
        "title": "Интернет-реклама",
        "titleEn": "Internet advertising"
      },
      "commissionAmount": 7.29,
      "commissionPercent": 9,
      "copyright": false,
      "createType": "API",
      "currency": {
        "currency": "EUR",
        "id": 3
      },
      "customer": {
        "id": 2955,
        "title": "ааап"
      },
      "creator": {
        "id": 100740,
        "fullName": "кепуе авпвп"
      },
      "worker": {
        "id": 100871,
        "email": "[email protected]",
        "firstName": "Нина",
        "lastName": "Малина",
        "isVerified": true
      },
      "dateCreated": "2021-08-06 11:17:13",
      "dateAccepted": null,
      "dateEnd": "2021-08-07 14:17:13",
      "dateFinished": null,
      "datePaid": "2021-08-06 14:17:13",
      "datePayAt": null,
      "documentDate": "2021-08-06 14:17:13",
      "description": "Some task description",
      "uuid": "123e4567-e89b-12d3-a456-426655440000",
      "files": [
        {
          "id": 252479,
          "name": "0cbb62da64de73d3bb82b366d37b573f.pdf",
          "typeId": 5,
          "ownerId": 100556
        }
      ],
      "id": 583689,
      "needReport": false,
      "price": 81,
      "state": 5,
      "title": "freel tailand",
      "deadline": {
        "type": 0,
        "triggerDate": null,
        "isComingUp": false
      },
      "hold": {
        "type": "without_hold",
        "isActive": false
      },
      "insurance": {
        "status": 0
      },
      "group": {
        "id": 654,
        "title": "группа 654"
      },
      "messageCount": 0,
      "activeDispute": null,
      "activeChangesetId": null
    }
  ]
  "pagination": {
    "count": 20,
    "total": 102,
    "perPage": 20,
    "page": 1,
    "pages": 6
  }
}

Метод используется для поиска задач по различным фильтрам.

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
filter[creatorId] integer Нет ID пользователя, создавшего задачу
filter[workerId] integer Нет ID исполнителя. Для получения списка фрилансеров используйте данный запрос
filter[companyId] integer Нет ID компании. Для получения списка компаний используйте данный запрос
filter[dateCreatedFrom] string Нет Дата создания задачи (начало интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 00:00:00
filter[dateCreatedTo] string Нет Дата создания задачи (окончание интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 23:59:59
filter[dateEndFrom] string Нет Дата дедлайна задачи (начало интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 00:00:00
filter[dateEndTo] string Нет Дата дедлайна задачи (окончание интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 23:59:59
filter[dateFinishedFrom] string Нет Дата выполнения задачи (начало интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 00:00:00
filter[dateFinishedTo] string Нет Дата выполнения задачи (окончание интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 23:59:59
filter[dateReportFrom] string Нет Дата генерации акта (начало интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 00:00:00
filter[dateReportTo] string Нет Дата генерации акта (окончание интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 23:59:59
filter[dateAcceptedFrom] string Нет Дата принятия задачи заказчиком (начало интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 00:00:00
filter[dateAcceptedTo] string Нет Дата принятия задачи заказчиком (окончание интервала дат). Формат - `YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться23:59:59`
filter[datePaidFrom] string Нет Дата оплаты задачи (начало интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 00:00:00
filter[datePaidTo] string Нет Дата оплаты задачи (окончание интервала дат). Формат - YYYY-MM-DD(например, 2020-09-03), время в этом случае будет считаться 23:59:59
filter[hasPayout] boolean Нет Признак необходимости возврата только оплаченных задач. Если передан 0, то будут возвращены задачи без выплат (запрос для создания выплат см. здесь).
filter[priceFrom] integer Нет Стоимость задачи (начало интервала)
filter[priceTo] integer Нет Стоимость задачи (окончание интервала)
filter[search] string Нет Название или описание задачи. Поиск будет выполнен по любому тексту, входящему в название или описание.
filter[state] integer Нет Статус задачи. Может быть передано как одно, так и несколько значений (например, state[]=2&state[]=3)
filter[currencyId] integer Нет ID валюты. Возможные значения:
  • 1 - RUB
  • 2 - USD
  • 3 - EUR
filter[groupId] integer Нет ID группы задач
filter[deadlineType] integer Нет ID типа дедлайна. Возможные значения:
  • 1 - мягкий дедлайн
  • 2 - жесткий дедлайн
filter[workerTaxationStatus] integer Нет Налоговый статус фрилансера. Возможные значения:
  • 1 - физическое лицо
  • 3 - самозанятый
  • 4 - индивидуальный предприниматель
filter[hasCopyright] boolean Нет Признак необходимости передачи интеллектуальных прав.
filter[hasReport] boolean Нет Признак необходимости наличия отчета для выполнения задачи.
filter[payedBy] integer Нет ID пользователя, который оплатил задачу
sort string Нет Атрибут, по которому будет выполнена сортировка. Возможные значения:
  • date_end - дедлайн задачи
  • date_finished - дата выполнения задачи
  • price - стоимость
direction string Нет Направление сортировки. Возможные значения:
  • asc - по возрастанию
  • desc - по убыванию
page integer Нет Номер страницы для постраничного вывода
size integer Нет Количество элементов на странице (по умолчанию значение - 20, максимальное значение - 500)
Ответ

При успешном выполнении запроса возвращается следующий ответ:

Название свойства Тип Описание
items list Список элементов
id integer ID задачи
additionalAttributes object Дополнительные атрибуты задачи
category object Категория задачи
category.id integer ID категории
category.title string Название категории
category.titleEn string Название категории (на английском)
category.titleDoc string Название категории для отчетных документов
category.titleDocEn string Название категории для отчетных документов (на английском)
parentCategory object Категория задачи (родительская)
category.id string ID категории задачи
category.title string Название категории задачи
category.title_en string Название категории задачи (на английском)
commissionAmount float Сумма комиссии
commissionPercent float Процент комиссии
copyright string Признак передачи прав на интеллектуальную собственность
createType string Способ создания задачи (через API или через интерфейс)
currency object Валюта задачи
currency.currency string Название валюты задачи
currency.id integer ID валюты задачи
customer object Заказчик
customer.id string ID компании
customer.title string Название компании
creator object Пользователь, создавший задачу
creator.id integer ID пользователя, создавшего задачу
creator.fullName string ФИО пользователя, создавшего задачу
worker object Фрилансер
worker.id integer ID фрилансера (возвращается в запросе поиска фрилансера)
worker.email string Email фрилансера
worker.firstName string Имя фрилансера
worker.lastName string Фамилия фрилансера
worker.isVerified boolean Признак пройдена ли верификация у фрилансера
dateCreated string Дата создания задачи
dateAccepted string Дата принятия задачи заказчиком
dateEnd string Дата дедлайна по задаче
dateFinished string Дата выполнения задачи фрилансером
datePaid string Дата получения оплаты задачи
datePayAt string Дата, в которую платеж был инициирован
documentDate string Дата генерации отчетных документов
description string Описание задачи
uuid uuid uuid задачи
needReport boolean Необходим ли отчет по задаче
price float Стоимость задачи
state integer Статус задачи
title string Название задачи
hasPayout boolean Признак наличие выплаты по задаче
files object Файлы, приложенные к задаче
files.id string ИД файла
files.name string Название файла
files.typeId string Тип файла
files.ownerId string ИД пользователя, добавившего файл (файлы могут добавлять и заказчики, и фрилансеры)
deadline object Дедлайн
deadline.type integer Тип дедлайна (мягкий 1 или жесткий 2)
deadline.triggerDate string Дата дедлайна
deadline.isComingUp boolean Признак того, что до дедлайна сталось менее 3 суток
group object Группа задач
group.id integer Ид группы задач
group.title string Название группы задач
hold object Холдирование средств
hold.type string Тип холдирования
hold.isActive boolean Активно ли холдирование средств для данной задачи
insurance object Страховка
insurance.status integer Наличие страховки
messageCount integer Количество сообщений
activeDispute boolean Есть ли открытый спор
activeChangesetId integer Есть ли открытое согласование изменений по данной задаче
issueCode string Ошибка при обработке задачи (например, если у заказчика включена безопасная сделка и он принял задачу, но денег для холдирования на балансе недостаточно)
pagination list Постраничный вывод элементов
pagination.count integer Количество возвращенных элементов
pagination.total integer Всего элементов, доступных по запрашиваемому фильтру
pagination.perPage integer Количество элементов на странице
pagination.page integer Номер страницы
pagination.pages integer Всего страниц

Получить задачу по ID

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/tasks/c6e8e285-1e0a-4a11-a676-89211c0adccc" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

{
  "attributes": [
    {
      "attribute": {
        "title": "URL-адрес ",
        "titleEn": "URL-address",
        "type": "1"
      },
      "attributeType": {
        "title": "Адрес сайта",
        "titleEn": "URL adress ",
        "type": "text"
      },
      "values": [
        {
          "title": "http://some.domain.com"
        }
      ]
    }
  ],
  "messages": [],
  "creator": {
    "id": 100740,
    "fullName": "кепуе авпвп"
  },
  "worker": {
    "id": 100871,
    "email": "[email protected]",
    "firstName": "Нина",
    "lastName": "Малина",
    "isVerified": true
  },
  "files": [],
  "links": [],
  "messageCount": 0,
  "additionalAttributes": null,
  "category": {
    "id": 20,
    "title": "Управление размещением медийной рекламы",
    "titleEn": "ATL advertising management",
    "titleDoc": "Услуги по управлению размещением рекламных материалов  на интернет сайтах",
    "titleDocEn": "Services on managing  advertising materials' placement at websites"
  },
  "parentCategory": {
    "id": 2,
    "title": "Интернет-реклама",
    "titleEn": "Internet advertising"
  },
  "commissionAmount": 7.29,
  "commissionPercent": 9,
  "copyright": false,
  "createType": "API",
  "currency": {
    "currency": "EUR",
    "id": 3
  },
  "customer": {
    "id": 2955,
    "title": "ФИО заказчика"
  },
  "dateCreated": "2021-08-06 11:17:13",
  "dateAccepted": null,
  "dateEnd": "2021-08-07 14:17:13",
  "dateFinished": null,
  "datePaid": "2021-08-06 14:17:13",
  "datePayAt": null,
  "documentDate": "2021-08-06 14:17:13",
  "description": "Some task description",
  "uuid": "123e4567-e89b-12d3-a456-426655440000",
  "id": 583689,
  "needReport": false,
  "price": 81,
  "state": 5,
  "title": "freel tailand",
  "deadline": {
    "type": 0,
    "triggerDate": null,
    "isComingUp": false
  },
  "hold": {
    "type": "without_hold",
    "isActive": false
  },
  "insurance": {
    "status": 0
  },
  "activeDispute": null,
  "activeChangesetId": null,
  "serviceFeeCompensation": 50,
  "serviceFeeCompensationPercent": 0
}

Метод используется для получения подробностей задачи по ее ID.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать taskId или taskUuid, которые можно получить в данном запрос

Ответ

При успешном выполнении запроса возвращается следующий ответ:

Название свойства Тип Описание
id integer ID задачи
additionalAttributes object Дополнительные атрибуты задачи
category object Категория задачи
category.id integer ID категории
category.title string Название категории
category.titleEn string Название категории (на английском)
category.titleDoc string Название категории для отчетных документов
category.titleDocEn string Название категории для отчетных документов (на английском)
parentCategory object Категория задачи (родительская)
category.id string ID категории задачи
category.title string Название категории задачи
category.title_en string Название категории задачи (на английском)
commissionAmount float Сумма комиссии
commissionPercent float Процент комиссии
copyright string Признак передачи прав на интеллектуальную собственность
createType string Способ создания задачи (через API или через интерфейс)
currency object Валюта задачи
currency.currency string Название валюты задачи
currency.id integer ID валюты задачи
customer object Заказчик
customer.id string ID компании
customer.title string Название компании
creator object Пользователь, создавший задачу
creator.id integer ID пользователя, создавшего задачу
creator.fullName string ФИО пользователя, создавшего задачу
worker object Фрилансер
worker.id integer ID фрилансера (возвращается в запросе поиска фрилансера)
worker.email string Email фрилансера
worker.firstName string Имя фрилансера
worker.lastName string Фамилия фрилансера
worker.isVerified boolean Признак пройдена ли верификация у фрилансера
dateCreated string Дата создания задачи
dateAccepted string Дата принятия задачи заказчиком
dateEnd string Дата дедлайна по задаче
dateFinished string Дата завершения задачи
datePaid string Дата получения оплаты задачи
datePayAt string Дата, в которую платеж был инициирован
documentDate string Дата генерации отчетных документов
needReport boolean Необходим ли отчет по задаче
description string Описание задачи
uuid uuid uuid задачи
price float Стоимость задачи
state integer Статус задачи
title string Название задачи
files object Файлы, приложенные к задаче
files.id string ИД файла
files.name string Название файла
files.typeId string Тип файла
files.ownerId string ИД пользователя, добавившего файл (файлы могут добавлять и заказчики, и фрилансеры)
deadline object Дедлайн
deadline.type integer Тип дедлайна (мягкий 1 или жесткий 2). Сейчас для всех задач применяется мягкий дедлайн.
deadline.triggerDate string Дата дедлайна
deadline.isComingUp boolean Признак того, что до дедлайна сталось менее 3 суток
hold object Холдирование средств
hold.type string Тип холдирования
hold.isActive boolean Активно ли холдирование средств для данной задачи
insurance object Страховка
insurance.status integer Наличие страховки
hasPayout boolean Признак наличие выплаты по задаче
messageCount integer Количество сообщений
activeDispute boolean Есть ли открытый спор
activeChangesetId integer ID открытого согласования изменений по данной задаче
serviceFeeCompensation integer Сумма компенсации комиссии за фрилансера
serviceFeeCompensationPercent integer Процент от стоимости задачи, определяющий сумму компенсации комиссии за фрилансера

Создать задачу

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "uuid": "123e4567-e89b-12d3-a456-426655440000",
      "categoryId": 37,
      "attributes": [
        {
          "id": 37,
          "value": "1"
        }
      ],
      "acceptanceFileIds": [
        100
      ],
      "copyright": true,
      "needReport": true,
      "title": "string",
      "description": "string",
      "externalId": "string",
      "fileIds": [
        100
      ],
      "workerId": 1,
      "editGroup": [
        100
      ],
      "deadline": "2022-06-22T08:57:53.299Z",
      "price": 1000,
      "validateOnly": false,
      "needInsurance": false,
      "compensateWorkerServiceFee": false,
      "compensationType": 1,
      "advData": {
        "endContracts": [
          {
            "uuid": "73d13481-e71c-4edb-b251-a48bbcfa4133",
            "sum": 100
          },
          {
            "uuid": "e923e2f9-f1ed-4cb4-a293-e2d1b21fdac1",
            "sum": 200
          },
          {
            "uuid": "38f680a8-53e8-4bf1-bfde-04bea8351022",
            "sum": 250
          }
        ]
      }
    }'

Пример ответа

HTTP status code: 200 OK

Метод используется для создания новой задачи.

Для интернет-рекламы, которая показывается на территории РФ, действует закон о маркировке рекламы. Поэтому, если вы создаете задачи соответствующей категории услуг, то необходимо обязательно передать дополнительные атрибуты. Подробности см. здесь.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
uuid string Нет UUID задачи (если параметр не передан, то будет определен автоматически)
categoryId integer Да ID услуги и работы для задачи. Для получения всех доступных услуг и работ для задач используйте данный запрос
attributes object Да Атрибуты задачи. Обязателен хотя бы 1 атрибут. Для получения всех доступных атрибутов задач используйте данный запрос
attributes.id integer Да ID атрибута
attributes.value string Да Значение атрибута задачи. Для атрибутов типа select необходимо передавать текстовое значение атрибута
acceptanceFileIds array Нет Файлы, которые фрилансер должен подписать, чтобы принять задачу
copyright boolean Нет Признак необходимости передачи прав интеллектуальной собственности
needReport boolean Нет Признак необходимости приложить отчет к выполненной задаче
title string Да Название задачи
description string Да Описание задачи
fileIds string Нет Файлы, которые будут приложены к задаче
workerId integer Да ID фрилансера. Для получения списка фрилансеров используйте данный запрос
editGroup array Нет Группа задачи. Для получения доступных групп используйте данный запрос
externalId integer Нет ID, который можно задать при создании задачи (merchant_txid)
deadline date Да Дедлайн задачи (например, 2022-05-19 11:53:03)
price float Да Стоимость задачи
needInsurance boolean Нет Наличие страховки к задаче
validateOnly boolean Нет Параметр, который определяет будет ли создана задача. Если значение true, то будут выполнены все проверки для создания задачи и возвращен ответ можно ли создавать задачу, однако, сама задача создана не будет.
advData object Нет Данные для выполнения закона о маркировке рекламы. Подробнее см. здесь. Если вам нужна разаллокация, то для каждой задачи можно добавить несколько договоров. При этом, если общая сумма задачи больше суммы во всех договорах, то остаток будет считаться Производством рекламы. Если меньше, то задача не будет создана и будет возвращена ошибка.
advData.endContracts.uuid Uuid Нет ID договора для выполнения закона о маркировке рекламы. Подробнее см. здесь
advData.endContracts.sum integer Нет Сумма в договоре. Параметр обязательный, если в задаче более одного договора (несколько контрагентов). Для одного договора параметр необязательный. Подробнее см. здесь
compensateWorkerServiceFee boolean Нет Признак компенсации комиссии фрилансера (если true, то комиссия фрилансера будет компенсирована заказчиком). Если параметр не указан, то будет применена настройка компенсации, которая применяется для вашей компании по умолчанию.
compensationType integer Нет Тип платежного средства фрилансера, куда будет выполняться вывод средств. Применяется, чтобы полностью компенсировать комиссию фрилансера. Чтобы применить комиссию значение параметра compensateWorkerServiceFee должно быть true. Возможные значения:
  • 1 - физическое лицо из РФ (для карт visa и mastercard Казахстана и Беларуси)
  • 2 - физическое лицо из РФ (для карт visa, mastercard и МИР)
  • 3 - физическое лицо из РФ (для кошельков WMZ)
  • 4 - физическое лицо из РФ (для расчетного счета ИП)
  • 5 - физическое лицо не из РФ (для карт visa и mastercard)
  • 6 - физическое лицо не из РФ (для карт, выпущенными банками из РФ)
  • 7 - физическое лицо не из РФ (для электронных кошельков и счетов в национальных валютах)
Ответ

При успешном выполнении запроса возвращается UUID созданной задачи.

Получить информацию о страховке

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/insurance/info" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

Метод используется для получения информации о страховке задач для запрашиваемого фрилансера.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
workerId integer Да ID фрилансера (возвращается в запросе поиска фрилансера)
categoryId integer Да Категория задач (подробнее см. запрос получения списка категорий задач)
Ответ
Название свойства Тип Описание
canBeInsured boolean Признак того, что задача может быть застрахована
acceptanceRequired boolean Необходимо ли подтверждение фрилансера для страхования задачи
cost float Стоимость страховки (в рублях)
insureByDefault boolean Признак того, что задачи будут застрахованы автоматически

Изменить статус задачи

Пример запроса

curl -X PUT "https://my.solarstaff.com/api/customer/tasks/c6e8e285-1e0a-4a11-a676-89211c0adccc" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

Метод используется для изменения статуса задачи для действий фрилансера. Перед использованием данного запроса обратитесь, пожалуйста, в поддержку SolarStaff - необходимо добавить дополнительные права доступа к сервису. Доступные для изменения статусы: принять задачу в работу (ID=2), выполнить задачу (ID=3), отклонить задачу (ID=6), а так же подтвердить отмену задачи в случае, если отмена была запрошена заказчиком (ID=8).

Также есть дополнительные запросы для отклонения задачи или возвращения ее в работу.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать taskId или taskUuid, которые можно получить в данном запросе.

Тело запроса
Название параметра Тип Обязательное Описание
state integer Да Статус задачи. Доступные для изменения статусы: принять задачу (ID=2), выполнить задачу (ID=3), отклонить задачу (ID=6), а так же подтвердить отмену задачи в случае, если отмена была запрошена заказчиком (ID=8).
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Возможные ошибки:

  • Необходимо подписать договор-оферту. В этом случае необходимо проверить наличие новой оферты, которая обязательна для принятия задачи в работу и потом принять ее.

    { "error": "Для принятия задачи необходимо подписать договор оферты", "code": 11 }

Продлить дедлайн

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/prolong-deadline" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

Метод используется для продления дедлайна задачи только для задач в статусе Ждет действий от заказчика.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer Обязателен один из параметров: taskId или uuid ID задачи. Для получения списка задач используется данный запрос.
uuid string Обязателен один из параметров: taskId или uuid UUID задачи.
deadline date Да Дата нового дедлайна в формате 2022-07-25T15:00:58.295Z
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Проверить наличие ограничений для принятия задачи в работу

Пример запроса

curl -X GET "http://solar-staff.comapi/customer/freelancers/check-task-requirements?taskUuid=837843c9-72e5-48e2-a133-e97e347373af&freelancerUuid=ec304480-5e3f-4bb7-a9e5-dbb49fb673e9" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "name": "agreementRequired",

  "data"
    :{
    "url": "http://cabinet.solar.localhost/agreement-template?uuid=4b8d3847-5651-40f5-b534-48b273974c5c ",
    "templateUuid": "4b8d3847-5651-40f5-b534-48b273974c5c",
    "code": "forced_update",
    "reason": "

Для работы с задачами необходимо принять новый Договор-оферту.

"
}}

Запрос показывает может ли фрилансер взять задачу в работу или есть какие-то ограничения (необходимо переподписать оферту , пройти верификацию и тд). Поэтому данный запрос необходимо вызвать перед изменением статуса задачи на Принять задачу в работу (ID=2). Возможные ограничения:

  • необходимо переподписать оферту - необходимо будет отобразить фрилансеру новую оферту, убедиться, что он подтвердил свое согласие с ней и вызвать следующий запрос Принять оферту от лица фрилансера
  • необходимо пройти верификацию
  • необходимо принять файлы NDA
  • и требования по задачам с рекламой (указание ИНН/ОГРНИП/телефона). Подробнее см. Закон о маркировке рекламы

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
taskUuid uuid Да Uuid задачи, возвращается в запросе получения задачи по ID или получения списка задач
freelancerUuid uuid Да Uuid фрилансера, возвращается в запросе приглашения нового фрилансера

Ответ

Если никаких ограничений нет, то возвращается пустой ответ.

Название свойства Тип Описание
name string Название ограничения (например, agreementRequired - необходимо подписать оферту)
data object Подробности документа, который необходимо подписать (или другого ограничения, которое необходимо выполнить для принятия задачи в работу)
data.url string URL, где можно подписать документ
data.templateUuid string Код ограничения
data.code string Код ограничения
reason string Причина ограничения (например, Задача входит в санкционный список, поэтому перед принятием ее в работу необходимо подписать оферту)

Принять задачу

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/accept" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "uuid": "123e4567-e89b-12d3-a456-426655440000"
    }'

Пример ответа

HTTP status code: 200 OK

Метод используется для того, чтобы принять результат работы фрилансера. Может быть запрошен только для задач в статусе Выполнена (ID=3).

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer Обязателен один из параметров: taskId или uuid ID задачи. Для получения списка задач используется данный запрос.
uuid string Обязателен один из параметров: taskId или uuid UUID задачи.
Тело запроса

Дополнительных параметров не требуется.

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Оплатить задачу

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/pay" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "uuid": "123e4567-e89b-12d3-a456-426655440000"
    }'

Пример ответа

HTTP status code: 200 OK

Метод используется для оплаты задачи. Деньги будут списаны с баланса заказчика и добавлены на баланс фрилансера. Оплатить задачу можно только из статуса Ждет оплаты (ID = 4)

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer Обязателен один из параметров: taskId или uuid ID задачи. Для получения списка задач используется данный запрос.
uuid string Обязателен один из параметров: taskId или uuid UUID задачи.
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Оплатить задачу (сразу после создания)

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/quick-pay" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "taskId": 1
    } '

Пример ответа

HTTP status code: 200 OK

Метод используется для оплаты задачи из статуса Новая. То есть, сразу после создания задачи для ее оплаты можно вызвать данный запрос и она перейдет в статус Оплачена (в отличие от предыдущего запроса, который переведет задачу в статус Оплачена только из статуса Ждет оплаты). Данный метод применим только если в задаче не было дополнительных документов (оферт или NDA), которые фрилансер должен подписать.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer Обязателен один из параметров: taskId или uuid ID задачи. Для получения списка задач используется данный запрос.
uuid string Обязателен один из параметров: taskId или uuid UUID задачи
companyId integer нет ID компании
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Отклонить задачу

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/decline 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "taskId": 180012
    }'

Пример ответа

HTTP status code: 200 OK

Метод используется для отклонения задачи. В зависимости от изначального статуса задачи после выполнения запроса статус задачи будет изменен на:

  • для статусов Новая (ID=1), В работе (ID=2), Ждет подтверждения отмены (ID=11) -> новый статус будет Отклонена заказчиком (ID=8)
  • для статусов Ждет оплату (ID=4) и Проверка заказчиком (ID=3) -> новый статус будет Подтверждение отмены (ID=11)
  • для статусов Согласовние изменений (ID=16), Спор инициирован (ID=13), Оплачена (ID=5), Отклонена исполнителем (ID=6) и Подтверждение отмены (ID=11) будет возвращена ошибка.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer да ID задачи. Для получения списка задач используется данный запрос.
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Вернуть задачу в работу

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/return-to-work
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "taskId": 180012
    }'

Пример ответа

HTTP status code: 200 OK

Метод используется для возвращения задачи в работу задачи. В работу (ID статуса = 2) задача может быть возвращена только из статуса Ждёт приёмки (ID статуса = 3). Для всех остальных статусов будет возвращена ошибка. Подробную схему статусов задач см. здесь.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer да ID задачи. Для получения списка задач используется данный запрос.
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Закон о маркировке рекламы

Раздел включает запросы, необходимые для создания задач по распространению рекламы на территории РФ. Подробное описание см. здесь.

Если вы - конечный рекламодатель, то в запрос создания задачи необходимо передать ID договора с Solar-staff, который возвращается в запросе получения данных для ОРД о компании (в договоре с Solar-staff параметр isPrimary должен быть true).

Если вы - посредник и не конечный рекламодатель, то необходимо добавить данные о конечном заказчике и того, с кем у него заключен договор, следующим образом:

Если вам нужна разаллокация, то для каждой задачи можно добавить несколько договоров. При этом, если сумма задачи больше суммы во всех добавленных договорах, то остаток будет считаться Производством рекламы. Для получения всех договоров, связанных с задачей см данный запрос.

Добавить данные заказчика

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/ord/organization" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "externalOrganisationId": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d",
        "fullOpf": "Название", 
        "inn": "11111111",
        "ogrn": "123132", 
        "regionNumber": "12"
    }"

Пример ответа

HTTP status code: 200 OK

Метод используется для добавления данных заказчика. Если вы - посредник, то вам необходимо добавить данные о конечном заказчике:

  • добавить данные конечного заказчика
  • добавить данные исполнителя договора с конечным заказчиком. Если вы - исполнитель договора с конечным заказчиком, то при создании договора вам необходимо использовать uuid, возвращаемый в запросе получения данных о вашей компании.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
externalOrganisationId uuid Да UUID заказчика
fullOpf string Обязательно только для юридических лиц (в параметре legalType вы указали LEGAL_TYPE_LEGAL или LEGAL_TYPE_FOREIGN_LEGAL) Организационно-правовая форма (ОПФ) и полное наименование
inn string Обязательно для всех заказчиков из РФ ИНН
ogrn string Нет Основной государственный регистрационный номер (ОГРН)
fio string Обязательно для формы собственности - физическое лицо или индивидуальный предприниматель. ФИО
ogrnip string Нет Основной государственный регистрационный номер индивидуального предпринимателя (ОГРНИП).
registrationNumber string Обязательно для формы собственности - юридическое лицо не из РФ Регистрационный номер или его аналог.
phoneNumber string Обязательно для формы собственности - физическое лицо не из РФ Номер телефона
taxId string Обязательно для формы собственности - юридическое лицо не из РФ. Номер налогоплательщика или его аналог в стране регистрации.
regionNumber string Обязательно для заказчиков не из РФ Код страны из общероссийского классификатора стран мира
paymentNumber string Обязательно для физических лиц не из РФ Номер электронного средства платежа
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Получить список добавленных заказчиков

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/ord/organization" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "items": [
  {
    "uuid":"a740f1bf-fc7a-4e68-9ad9-0a23688f3b00",
    "title":"Org title 2",
    "type":"organisation",
    "isPrimary":false
  },
  {
    "uuid":"a740f1bf-fc7a-4e68-9ad9-0a23688f3bfe",
    "title":"Org title 1",
    "type":"organisation",
    "isPrimary":false
  }
  ],
  "pagination":
  {
    "count":2,
    "total":2,
    "perPage":20,
    "page":1,
    "pages":1
  }
}

Метод используется для получения списка всех добавленных вами заказчиков.

Запрос

HTTP запрос
Параметры

Дополнительных параметров не требуется.

Ответ
Название свойства Тип Описание
uuid uuid UUID заказчика
title string Название заказчика
type string Тип заказчика
isPrimary boolean Возвращается true, если данный заказчик был добавлен вами.

Получить данные заказчика по id

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/ord/organization/537ed52b-bb6f-452c-bd71-7c82fff7fbf7" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "data":
  {
    "externalOrganisationId":"537ed52b-bb6f-452c-bd71-7c82fff7fbf7",
    "inn":"3664069397",
    "isOpc":true,
    "isPp":true,
    "fio":"",
    "fullOpf":"OOO Test Org",
    "individualAccountDescription":"",
    "legalType":"LEGAL_TYPE_LEGAL",
    "ogrn":"1053600591197",
    "ogrnip":"0",
    "paymentNumber":"",
    "phoneNumber":"",
    "regionNumber":"",
    "platforms":[
      {
        "externalPlatformId":"dbb88349-0b82-45d3-bc6f-b973a2faeb1c",
        "isPlatformOwner":false
      }],
    "postAddress":null,
    "regionNumber":"",
    "registrationNumber":"",
    "shortOpf":"",
    "taxId":"",
    "trustedPerson":"",
    "violationDescription":""
  },
  "uuid":"a740f1bf-fc7a-4e68-9ad9-0a23688f3bfe",
  "title":"Org title 1",
  "type":"organisation",
  "isPrimary":false
}

Метод используется для получения данных о добавленном заказчике.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать uuid заказчика.

Ответ
Название свойства Тип Описание
externalOrganisationId string UUID заказчика
fullOpf string Организационно-правовая форма (ОПФ) и полное наименование
inn string ИНН
isOpc boolean Является оператором рекламной системы (ОРС)
isPp boolean Является рекламораспространителем (РР)
ogrn string Основной государственный регистрационный номер (ОГРН)
fio string ФИО
individualAccountDescription string Описание: юридическое лицо, физическое лицо, ИП, иностранное физическое лицо, иностранное юридическое лицо, иностранный ИП.
legalType string Форма собственности:
  • LEGAL_TYPE_INVALID — форма не определена
  • LEGAL_TYPE_LEGAL — юридическое лицо
  • LEGAL_TYPE_INDIVIDUAL — физическое лицо
  • LEGAL_TYPE_ENTREPRENEUR — индивидуальный предприниматель (ИП)
  • LEGAL_TYPE_FOREIGN_LEGAL — иностранное юридическое лицо
  • LEGAL_TYPE_FOREIGN_INDIVIDUAL — иностранное физическое лицо
  • LEGAL_TYPE_FOREIGN_ENTREPRENEUR — иностранный индивидуальный предприниматель
ogrnip string Основной государственный регистрационный номер индивидуального предпринимателя (ОГРНИП).
registrationNumber string Регистрационный номер или его аналог.
phoneNumber string Номер телефона
taxId string Номер налогоплательщика или его аналог в стране регистрации.
paymentNumber string Номер электронного средства платежа. Для иностранных физических лиц.
platforms.externalPlatformId string uuid площадки. Так как Solar-staff не регистрирует креативы самостоятельно, то площадки также не будут добавлены. Поэтому значение данного параметра всегда будет пустым.
platforms.isPlatformOwner boolean Является владельцем площадки. Так как Solar-staff не регистрирует креативы самостоятельно, то площадки также не будут добавлены. Поэтому значение данного параметра всегда будет пустым.
postAddress string Почтовый адрес
regionNumber string Код страны регистрации в соответствии с ОКСМ.
shortOpf string Организационно-правовая форма (ОПФ) и сокращенное наименование.
trustedPerson string Должность и ФИО лица, имеющего право без доверенности действовать от имени юридического лица. Для юридических лиц.
violationDescription string Сведения о несоблюдении требований к распространению рекламы в интернете со стороны рекламодателя (РД), рекламораспространителя (РР) или оператора рекламной системы (ОРС).

Добавить данные договора

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/ord/contract" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "externalOrganisationCustomerId": "8jk2bc19-5y33-4a3a-94b3-b4a26374de3n",
        "externalOrganisationPerformerId": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d",
        "contractNumber":"1",
        "contractDate": "11.01.2020"
    }"

Пример ответа

HTTP status code: 200 OK

Метод используется для добавления данных договора. После добавления данных конечного заказчика вам необходимо добавить договор между конечным заказчиком и его исполнителем. Может быть 2 случая:

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
externalContractId uuid Да UUID договора
externalOrganisationCustomerId uuid Да ID инициатора (заказчика). Возвращается в запросе создания или получения данных данных о заказчике.
externalOrganisationPerformerId uuid Да ID исполнителя. Возвращается в запросе создания или получения данных данных о заказчике.
contractNumber string Нет Номер договора
contractDate string Да Дата договора
contractType string Да Тип договора:
  • CONTRACT_TYPE_INVALID — тип договора не определён
  • CONTRACT_TYPE_SERVICE — договор оказания услуг
  • CONTRACT_TYPE_INTERMEDIARY — посреднический договор
  • CONTRACT_TYPE_ADDITIONAL_AGREEMENT — дополнительное соглашение
subjectType string Да Cведения о предмете договора:
  • SUBJECT_TYPE_INVALID— сведения не определены
  • SUBJECT_TYPE_DISTRIBUTION — договор на распространение рекламы
  • SUBJECT_TYPE_ORGANISATION — договор на организацию распространения рекламы
  • SUBJECT_TYPE_INTERMEDIARY — посредничество
  • SUBJECT_TYPE_REPRESENTATION – представительство
  • SUBJECT_TYPE_OTHER — иное
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Получить список добавленных договоров

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/ord/contract" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "items":[
    {
      "uuid":"a740f1bf-fc7a-4e68-9ad9-0a23688f3b01",
      "title":"Contract org1-org2",
      "type":"contract",
      "isPrimary":false
    }
  ],
  "pagination":
  {
    "count":1,
    "total":1,
    "perPage":20,
    "page":1,
    "pages":1
  }
}

Метод используется для получения списка всех добавленных договоров.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ
Название Тип Описание
uuid uuid UUID договора
title string Название договора
type uuid Тип договора
isPrimary boolean Является договором с конечным заказчиком.

Получить данные договора по ID

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/ord/contract/1as7ac19-5y33-4a3a-94b3-b4a26374de4d" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "data":
  {
    "externalContractId":"a740f1bf-fc7a-4e68-9ad9-0a23688f3b01",
    "contractType":"CONTRACT_TYPE_SERVICE",
    "externalOrganisationCustomerId":"eea5a0b5-4a7c-456b-9b1c-227d6ca6ac9d",
    "externalOrganisationPerformerId":"eea5a0b5-4a7c-456b-9b1c-227d6ca6ac9d",
    "isCreativeReporter":false,
    "actionType":"ACTION_TYPE_INVALID",
    "subjectType":"SUBJECT_TYPE_DISTRIBUTION",
    "contractNumber":"1111",
    "contractDate":"2022-10-20",
    "additionalContractNumber":"",
    "additionalContractNumberDate":"",
    "price":"100.00",
    "withNds":false,
    "externalParentId":"",
    "createdAt":"2022-10-20T09:55:53.277309Z",
    "editedAt":"2022-10-26T20:34:57.839708Z",
    "createdBy":
    {
      "id":"92",
      "email":"[email protected]",
      "name":"\u041b\u0443\u043a\u0430\u0448\u043e\u0432 \u041c\u0430\u043a\u0441\u0438\u043c"
    },
    "editedBy":null
  },
  "uuid":"a740f1bf-fc7a-4e68-9ad9-0a23688f3b01",
  "title":"Contract org1-org2",
  "type":"contract",
  "isPrimary":false
}

Метод используется для получения данных о добавленном договоре по его uuid.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать UUID договора.

Ответ
Название Тип Описание
data.externalContractId uuid UUID договора
data.externalOrganisationCustomerId uuid ID инициатора (заказчика)
data.externalOrganisationPerformerId uuid ID исполнителя
data.contractType string Тип договора:
  • CONTRACT_TYPE_INVALID — тип договора не определён
  • CONTRACT_TYPE_SERVICE — договор оказания услуг
  • CONTRACT_TYPE_INTERMEDIARY — посреднический договор
  • CONTRACT_TYPE_ADDITIONAL_AGREEMENT — дополнительное соглашение
data.contractNumber string Номер договора
data.contractDate string Дата договора
data.isCreativeReporter string Обязан ли исполнитель регистрировать креативы
data.actionType string Описание действий посредника-представителя:
  • ACTION_TYPE_INVALID — действия не определены
  • ACTION_TYPE_CONCLUSION — заключение договоров
  • ACTION_TYPE_DISTRIBUTION — распространение рекламы
  • ACTION_TYPE_COMMERCIAL — коммерческое представительство
  • ACTION_TYPE_OTHER — иное посредничество
data.subjectType string Сведения о предмете договора:
  • SUBJECT_TYPE_INVALID — сведения не определены
  • SUBJECT_TYPE_DISTRIBUTION — договор на распространение рекламы
  • SUBJECT_TYPE_ORGANISATION — договор на организацию распространения рекламы
  • SUBJECT_TYPE_INTERMEDIARY — посредничество
  • SUBJECT_TYPE_REPRESENTATION – представительство
  • SUBJECT_TYPE_OTHER — иное
data.additionalContractNumber string Номер дополнительного соглашения (для дополнительных соглашений)
data.additionalContractNumberDate string Дата дополнительного соглашения
data.price float Цена договора при наличии
data.withNds string Применён ли налог на добавленную стоимость (НДС) к цене.
data.externalParentId uuid UUID родительского договора
data.createdAt string Дата добавления договора в ОРД
data.editedAt string Дата изменения данных в договоре в ОРД
data.createdBy.id integer ID пользователя, добавившего договор
data.createdBy.email string Email пользователя, добавившего договор
data.createdBy.name string Имя пользователя
data.editedBy string ID пользователя, обновившего данные о договоре
uuid uuid UUID договора
title string Название договора
type uuid Тип договора
isPrimary boolean Является договором с конечным заказчиком.

Получить данные договора по ID задачи

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/ord/task-summary/1as7ac19-5y33-4a3a-94b3-b4a26374de4d" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "endContract": {
    "uuid": "4a0355a7-9019-4208-8f86-6becde69ef",
    "title": "100623 (2020-10-15)",
    "type": "contract",
    "customer": {
      "uuid": "96cf28dc-43fe-495e-ae02-db8a8a06fb",
      "title": "ааа",
      "type": "organisation",
      "externalOrganisationId": "96cf28dc-43fe-495e-ae02-db8a8a06fb",
      "inn": "6174387653",
      "isOpc": false,
      "isPp": false,
      "fio": "",
      "fullOpf": "ааа",
      "individualAccountDescription": "",
      "legalAddress": {
        "address": "",
        "locality": "",
        "postcode": ""
      },
      "legalType": "LEGAL_TYPE_LEGAL",
      "ogrn": "22222222",
      "ogrnip": "0",
      "paymentNumber": "",
      "phoneNumber": "",
      "platforms": [],
      "postAddress": {
        "address": "",
        "locality": "",
        "postcode": ""
      },
      "regionNumber": "",
      "registrationNumber": "",
      "shortOpf": "",
      "taxId": "",
      "trustedPerson": "",
      "violationDescription": ""
    },
    "performer": {
      "uuid": "0109ce50-ff03-4c1c-96af-26bf816597fc",
      "title": "ООО ",
      "type": "organisation",
      "externalOrganisationId": "0109ce50-ff03-4c1c-96af-26bf816597fc",
      "inn": "7733228841",
      "isOpc": false,
      "isPp": false,
      "fio": "",
      "fullOpf": "ООО ",
      "individualAccountDescription": "",
      "legalType": "LEGAL_TYPE_LEGAL",
      "ogrn": "1157746300964",
      "ogrnip": "0",
      "paymentNumber": "",
      "phoneNumber": "",
      "platforms": [],
      "postAddress": null,
      "regionNumber": "",
      "registrationNumber": "",
      "shortOpf": "",
      "taxId": "",
      "trustedPerson": "",
      "violationDescription": ""
    },
    "contractSum": null,
    "actionType": "ACTION_TYPE_INVALID",
    "additionalContractNumber": "",
    "additionalContractNumberDate": "",
    "contractDate": "2020-10-15",
    "contractNumber": "100623",
    "contractType": "CONTRACT_TYPE_SERVICE",
    "externalContractId": "4a0355a7-9019-4208-8f86-6becde69e",
    "externalOrganisationCustomerId": "96cf28dc-43fe-495e-ae02-db8a8a06f",
    "externalOrganisationPerformerId": "0109ce50-ff03-4c1c-96af-26bf816597fc",
    "externalParentId": "",
    "isCreativeReporter": false,
    "price": "",
    "subjectType": "SUBJECT_TYPE_INTERMEDIARY",
    "withNds": false
  },
  "endContracts": [
    {
      "uuid": "4a0355a7-9019-4208-8f86-6becde69e",
      "title": "100623 (2020-10-15)",
      "type": "contract",
      "customer": {
        "uuid": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
        "title": "ааа",
        "type": "organisation",
        "externalOrganisationId": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
        "inn": "6174387653",
        "isOpc": false,
        "isPp": false,
        "fio": "",
        "fullOpf": "ааа",
        "individualAccountDescription": "",
        "legalAddress": {
          "address": "",
          "locality": "",
          "postcode": ""
        },
        "legalType": "LEGAL_TYPE_LEGAL",
        "ogrn": "22222222",
        "ogrnip": "0",
        "paymentNumber": "",
        "phoneNumber": "",
        "platforms": [],
        "postAddress": {
          "address": "",
          "locality": "",
          "postcode": ""
        },
        "regionNumber": "",
        "registrationNumber": "",
        "shortOpf": "",
        "taxId": "",
        "trustedPerson": "",
        "violationDescription": ""
      },
      "performer": {
        "uuid": "0109ce50-ff03-4c1c-96af-26bf816597fc",
        "title": "ООО "Солар Стафф Рус"",
        "type": "organisation",
        "externalOrganisationId": "0109ce50-ff03-4c1c-96af-26bf816597fc",
        "inn": "7733228841",
        "isOpc": false,
        "isPp": false,
        "fio": "",
        "fullOpf": "ООО "Солар Стафф Рус"",
        "individualAccountDescription": "",
        "legalType": "LEGAL_TYPE_LEGAL",
        "ogrn": "1157746300964",
        "ogrnip": "0",
        "paymentNumber": "",
        "phoneNumber": "",
        "platforms": [],
        "postAddress": null,
        "regionNumber": "",
        "registrationNumber": "",
        "shortOpf": "",
        "taxId": "",
        "trustedPerson": "",
        "violationDescription": ""
      },
      "contractSum": 4000,
      "actionType": "ACTION_TYPE_INVALID",
      "additionalContractNumber": "",
      "additionalContractNumberDate": "",
      "contractDate": "2020-10-15",
      "contractNumber": "100623",
      "contractType": "CONTRACT_TYPE_SERVICE",
      "externalContractId": "4a0355a7-9019-4208-8f86-6becde69ef5a",
      "externalOrganisationCustomerId": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
      "externalOrganisationPerformerId": "0109ce50-ff03-4c1c-96af-26bf816597fc",
      "externalParentId": "",
      "isCreativeReporter": false,
      "price": "",
      "subjectType": "SUBJECT_TYPE_INTERMEDIARY",
      "withNds": false
    },
    {
      "uuid": "54963b34-7840-43a3-a668-5f6d95ff30bc",
      "title": "продв.реш.123 (2023-06-03)",
      "type": "contract",
      "customer": {
        "uuid": "e2ce0768-0ff1-49b7-834e-8e38ed36bd83",
        "title": "Продвинутые решения",
        "type": "organisation",
        "externalOrganisationId": "e2ce0768-0ff1-49b7-834e-8e38ed36bd83",
        "inn": "4975396448",
        "isOpc": false,
        "isPp": false,
        "fio": "",
        "fullOpf": "Продвинутые решения",
        "individualAccountDescription": "",
        "legalAddress": {
          "address": "",
          "locality": "",
          "postcode": ""
        },
        "legalType": "LEGAL_TYPE_LEGAL",
        "ogrn": "0",
        "ogrnip": "0",
        "paymentNumber": "",
        "phoneNumber": "",
        "platforms": [],
        "postAddress": {
          "address": "",
          "locality": "",
          "postcode": ""
        },
        "regionNumber": "",
        "registrationNumber": "",
        "shortOpf": "",
        "taxId": "4975396448",
        "trustedPerson": "",
        "violationDescription": ""
      },
      "performer": {
        "uuid": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
        "title": "ааа",
        "type": "organisation",
        "externalOrganisationId": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
        "inn": "6174387653",
        "isOpc": false,
        "isPp": false,
        "fio": "",
        "fullOpf": "ааа",
        "individualAccountDescription": "",
        "legalAddress": {
          "address": "",
          "locality": "",
          "postcode": ""
        },
        "legalType": "LEGAL_TYPE_LEGAL",
        "ogrn": "22222222",
        "ogrnip": "0",
        "paymentNumber": "",
        "phoneNumber": "",
        "platforms": [],
        "postAddress": {
          "address": "",
          "locality": "",
          "postcode": ""
        },
        "regionNumber": "",
        "registrationNumber": "",
        "shortOpf": "",
        "taxId": "",
        "trustedPerson": "",
        "violationDescription": ""
      },
      "contractSum": 200,
      "actionType": "ACTION_TYPE_OTHER",
      "additionalContractNumber": "",
      "additionalContractNumberDate": "",
      "contractDate": "2023-06-03",
      "contractNumber": "продв.реш.123",
      "contractType": "CONTRACT_TYPE_SERVICE",
      "externalContractId": "54963b34-7840-43a3-a668-5f6d95ff30bc",
      "externalOrganisationCustomerId": "e2ce0768-0ff1-49b7-834e-8e38ed36bd83",
      "externalOrganisationPerformerId": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
      "externalParentId": "",
      "isCreativeReporter": false,
      "price": "",
      "subjectType": "SUBJECT_TYPE_INTERMEDIARY",
      "withNds": true
    }
  ],
  "customerContract": {
    "uuid": "4a0355a7-9019-4208-8f86-6becde69ef5a",
    "title": "100623 (2020-10-15)",
    "type": "contract",
    "customer": {
      "uuid": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
      "title": "ааа",
      "type": "organisation",
      "externalOrganisationId": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
      "inn": "6174387653",
      "isOpc": false,
      "isPp": false,
      "fio": "",
      "fullOpf": "ааа",
      "individualAccountDescription": "",
      "legalAddress": {
        "address": "",
        "locality": "",
        "postcode": ""
      },
      "legalType": "LEGAL_TYPE_LEGAL",
      "ogrn": "22222222",
      "ogrnip": "0",
      "paymentNumber": "",
      "phoneNumber": "",
      "platforms": [],
      "postAddress": {
        "address": "",
        "locality": "",
        "postcode": ""
      },
      "regionNumber": "",
      "registrationNumber": "",
      "shortOpf": "",
      "taxId": "",
      "trustedPerson": "",
      "violationDescription": ""
    },
    "performer": {
      "uuid": "0109ce50-ff03-4c1c-96af-26bf816597fc",
      "title": "ООО "Солар Стафф Рус"",
      "type": "organisation",
      "externalOrganisationId": "0109ce50-ff03-4c1c-96af-26bf816597fc",
      "inn": "7733228841",
      "isOpc": false,
      "isPp": false,
      "fio": "",
      "fullOpf": "ООО "Солар Стафф Рус"",
      "individualAccountDescription": "",
      "legalType": "LEGAL_TYPE_LEGAL",
      "ogrn": "1157746300964",
      "ogrnip": "0",
      "paymentNumber": "",
      "phoneNumber": "",
      "platforms": [],
      "postAddress": null,
      "regionNumber": "",
      "registrationNumber": "",
      "shortOpf": "",
      "taxId": "",
      "trustedPerson": "",
      "violationDescription": ""
    },
    "contractSum": null,
    "actionType": "ACTION_TYPE_INVALID",
    "additionalContractNumber": "",
    "additionalContractNumberDate": "",
    "contractDate": "2020-10-15",
    "contractNumber": "100623",
    "contractType": "CONTRACT_TYPE_SERVICE",
    "externalContractId": "4a0355a7-9019-4208-8f86-6becde69ef5a",
    "externalOrganisationCustomerId": "96cf28dc-43fe-495e-ae02-db8a8a06fb0a",
    "externalOrganisationPerformerId": "0109ce50-ff03-4c1c-96af-26bf816597fc",
    "externalParentId": "",
    "isCreativeReporter": false,
    "price": "",
    "subjectType": "SUBJECT_TYPE_INTERMEDIARY",
    "withNds": false
  },
  "workerAgreement": {
    "customerName": "TMS Solarweb ltd",
    "customerTaxValue": "HE 329931",
    "customerPhone": "+35-725-378-701",
    "performerName": "Смит Вессен",
    "performerPhone": "78679098776",
    "performerCountry": "RU",
    "performerTaxValue": "743937218239",
    "contractNumber": "16561",
    "contractDate": "2021-05-01",
    "sum": 4200,
    "currency": {
      "currency": "RUB",
      "id": 1
    }
  }
}

Метод используется для получения данных о договорах по uuid задачи.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать UUID задачи.

Ответ
Название Тип Описание
endContract.uuid uuid UUID договора
endContract.title string Название договора
endContract.type string Тип договора
endContract.customer object Заказчик в договоре
endContract.performer object Исполнитель
endContract.contractSum string Сумма в контракте
endContract.actionType string Описание действий посредника-представителя:
  • ACTION_TYPE_INVALID — действия не определены
  • ACTION_TYPE_CONCLUSION — заключение договоров
  • ACTION_TYPE_DISTRIBUTION — распространение рекламы
  • ACTION_TYPE_COMMERCIAL — коммерческое представительство
  • ACTION_TYPE_OTHER — иное посредничество
endContract.additionalContractNumber string Номер дополнительного соглашения (для дополнительных соглашений)
endContract.additionalContractNumberDate string Дата дополнительного соглашения
endContract.contractDate string Дата договора
endContract.contractNumber string Номер договора
endContract.contractType string Тип договора:
  • CONTRACT_TYPE_INVALID — тип договора не определён
  • CONTRACT_TYPE_SERVICE — договор оказания услуг
  • CONTRACT_TYPE_INTERMEDIARY — посреднический договор
  • CONTRACT_TYPE_ADDITIONAL_AGREEMENT — дополнительное соглашение
endContract.externalContractId string Номер родительского договора
endContract.externalOrganisationCustomerId string ИД заказчика в родительского договоре
endContract.externalOrganisationPerformerId string ИД исполнителя в родительского договоре
endContract.externalParentId string UUID родительского договора
endContract.isCreativeReporter string Обязан ли исполнитель регистрировать креативы
endContract.price float Цена договора при наличии
endContract.subjectType string Сведения о предмете договора:
  • SUBJECT_TYPE_INVALID — сведения не определены
  • SUBJECT_TYPE_DISTRIBUTION — договор на распространение рекламы
  • SUBJECT_TYPE_ORGANISATION — договор на организацию распространения рекламы
  • SUBJECT_TYPE_INTERMEDIARY — посредничество
  • SUBJECT_TYPE_REPRESENTATION – представительство
  • SUBJECT_TYPE_OTHER — иное
endContract.withNds string Применён ли налог на добавленную стоимость (НДС) к цене.
endContracts string UUID договора
endContract object Все договора в цепочке контрагентов. Структура объекта аналогична endContract
customerContract object Конечный договор первого заказчика. Структура объекта аналогична endContract
workerAgreement.customerName string Имя заказчика в договоре с исполнителем
workerAgreement.customerTaxValue string Налоговый номер заказчика в договоре с исполнителем
workerAgreement.customerPhone string Номер телефона заказчика в договоре с исполнителем
workerAgreement.performerName string Имя исполнителя
workerAgreement.performerPhone string Номер телефона
workerAgreement.performerCountry string Страна исполнителя
workerAgreement.performerTaxValue string Налоговый номер исполнителя
workerAgreement.contractNumber string Номер договора
workerAgreement.contractDate string Дата договора
workerAgreement.sum string Сумма в договоре
workerAgreement.currency.currency string Название валюты в договоре
workerAgreement.currency.id integer ИД валюты в договоре

Чат задачи

В каждой задаче заказчик и фрилансер могут оставить сообщения. В данном разделе можно получить все сообщения, которые есть на данный момент, а также оставить новые.

Получить переписку по задаче

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/tasks/583689/messages" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Метод используется для получения сообщений по запрашиваемой задаче.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID задачи.

Добавить сообщение в задаче

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/messages" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d  '{
            "taskId":583689,
            "message:"Task is ready"
        }'

Пример ответа

HTTP status code: 200 OK

Метод используется для добавления сообщения в задаче. Сообщения добавляются от имени авторизованного пользователя.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
taskId integer Да ID задачи
message string Да Текст сообщения
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Группа задач

Получить группы задач

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/task-groups" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

{
  "items": [
    {
      "id": 650,
      "companyId": 2955,
      "color": "FFFFFF",
      "title": "string",
      "createdAt": "2021-12-01 20:59:52"
    }
  ],
  "pagination": {
    "count": 3,
    "total": 3,
    "perPage": 20,
    "page": 1,
    "pages": 1
  }
}

Метод используется для получения списка групп задач.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ
Название свойства Тип Описание
items object Группы задач
items.id integer ID группы задач
items.companyId integer ID заказчика
items.color string Цвет иконки группы
items.title string Название группы
items.createdAt string Дата создания группы задач
pagination object Страницы
pagination.count integer Текущая страница
pagination.total integer Количество страниц
pagination.perPage integer Количество задач на странице
pagination.page integer Количество страниц
pagination.pages integer Количество страниц

Переименовать группу задач

Пример запроса

curl -X PUT "https://my.solarstaff.com/api/customer/task-groups" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "groupId":650,
        "title":"new name"
    }"

Пример ответа

HTTP status code: 200 OK

{
  "actorId": 100740,
  "companyId": 2955,
  "groupId": 650,
  "title": "new name"
}

Метод используется для изменения названия группы задач.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
groupId integer Да ID группы
title string Да Новое названи группы задач
Ответ
Название свойства Тип Описание
actorId integer ID пользователя, обновившего название группы задач
companyId integer ID компании
groupId integer ID группы задач
title string Название группы задач

Создать группу задач

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/task-groups" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "title": "new task group"
    }"

Пример ответа

HTTP status code: 200 OK

{
  "actorId": 100740,
  "companyId": 2955,
  "title": "new task group"
}

Метод используется для создания группы задач.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
title string Да Новое названи группы задач
Ответ
Название свойства Тип Описание
actorId integer ID пользователя, запросившего создание задач
companyId integer ID компании
title string Название группы задач

Удалить группу задач

Пример запроса

curl -X DELETE "https://my.solarstaff.com/api/customer/task-groups" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "groupId": 650
    }"

Пример ответа

HTTP status code: 200 OK

{
  "actorId": 100740,
  "companyId": 2955,
  "groupId": 650
}

Метод используется для удаления группы задач.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
groupId integer Да ID группы задач
Ответ
Название свойства Тип Описание
actorId integer ID пользователя, запросившего создание задач
companyId integer ID компании
groupId integer ID группы задач

Файлы задачи

Добавить файл к задаче

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/tasks/files" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d '{
      "uuid": "123e4567-e89b-12d3-a456-426655440000",
      "file": "/Users/solar/tmp/1c_report_example.xml",
      "type": "5"
    }'  

Пример ответа

HTTP status code: 200 OK

Метод используется для добавления файлов к задаче.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
file string Да Путь к файлу, который надо загрузить (например, /Users/solar/tmp/1c_report_example.xml)
taskId integer Обязателен один из параметров: taskId или uuid ID задачи. Для получения списка задач используется данный запрос.
uuid string Обязателен один из параметров: taskId или uuid UUID задачи.
type integer Да Тип файла. Возможные значения:
  • 5 - передача прав по задаче
Ответ

При успешном выполнении запроса возвращается пустой ответ.

Фрилансеры

Раздел содержит описание методов для управления фрилансерами: пригласить фрилансера, изменить его данные или удалить из команды заказчика.

Получить список фрилансеров

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/freelancers?filter[taxationStatusId]=1" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "items": [
    {
      "id": 0,
      "uuid": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d"
      "email": "string",
      "name": "string",
      "taxationStatusId": 0,
      "taxationBlockedTill": "string",
      "categoryTitle": "string",
      "categoryTitleEn": "string",
      "details": {
        "firstName": "string",
        "lastName": "string",
        "note": "string",
        "specialization": "string"
      },
      "country": "AM",
      "isVerified": true,
      "isInviteSent": true,
      "inviteSentAt": "2021-12-23T18:48:40.800Z",
      "registerDate": "2021-12-23T18:48:40.800Z",
      "isRegistered": true
    }
  ],
  "pagination": {
    "count": 20,
    "total": 41,
    "perPage": 20,
    "page": 1,
    "pages": 3
  }
}

Запрос служит для получения списка фрилансеров.

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
filter[taxationStatusId] integer Да ID налогового статуса. Возможные значения:
  • 1 - физическое лицо
  • 3 - самозанятый
  • 4 - индивидуальный предприниматель
filter[isVerified] boolean Да Верифицирован ли аккаунт фрилансера
filter[isInviteEmailSent] boolean Да Признак того, было ли отправлено приглашение фрилансеру
filter[dateInvitedFrom] string Да Дата отправки приглашения (начало интервала)
filter[dateInvitedTo] string Да Дата отправки приглашения (окончание интервала)
page integer Нет Номер страницы для постраничного вывода
size integer Нет Количество элементов на странице (по умолчанию значение - 20, максимальное значение - 500)

Ответ

Название свойства Тип Описание
items list Список фрилансеров
items.id integer ID фрилансера
items.uuid uuid UUID фрилансера
items.email string Email фрилансера
items.name string Имя фрилансера
items.taxationStatusId integer Налоговый статус фрилансера
items.taxationBlockedTill integer Дата, до которой налоговый статус не может быть изменен
items.categoryTitle string Специализация фрилансера
items.categoryTitleEn string Название специализации на английском языке
items.details object Личные данные фрилансера
items.details.firstName string Имя фрилансера
items.details.lastName string Фамилия фрилансера
items.details.note string Описание фрилансера
items.details.specialization string Специализация фрилансера
items.country string Код страны фрилансера (двухбуквенный код, например, AM - Армения)
items.isVerified boolean Признак того, что аккаунт верифицирован
items.isInviteSent boolean Признак того, что приглашение отправлено
items.inviteSentAt string Дата отправки приглашения
items.registerDate string Дата регистрации
items.isRegistered boolean Признак того, что фрилансер подтвердил приглашение и заполнил личные данные
items.isTaxPaymentAllowed boolean Признак включения автоуплаты налогов
pagination list Постраничный вывод элементов
pagination.count integer Количество возвращенных элементов
pagination.total integer Всего элементов, доступных по запрашиваемому фильтру
pagination.perPage integer Количество элементов на странице
pagination.page integer Номер страницы
pagination.pages integer Всего страниц

Найти фрилансера по email

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/freelancer-by-email/{email}" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "id": 1,
  "uuid": "abc123",
  "email": "[email protected]",
  "name": "John Doe",
  "taxationStatusId": 2,
  "taxationBlockedTill": "2023-12-31",
  "categoryTitle": "Категория",
  "categoryTitleEn": "Category",
  "details": {
    "firstName": "Иван",
    "lastName": "Иванов",
    "note": "Примечание",
    "specialization": "Специализация"
  },
  "isVerified": true,
  "country": "Россия",
  "isInviteSent": true,
  "inviteSentAt": "2023-11-16T10:44:40.694Z",
  "registerDate": "2023-11-15T15:30:00.000Z",
  "isRegistered": true,
  "isTaxPaymentAllowed": true,
  "emailConfirmationStatus": 1,
  "phoneConfirmationStatus": 1
}

Запрос служит для поиска фрилансера по email.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать Email фрилансера.

Ответ

Название свойства Тип Описание
id integer ID фрилансера
uuid integer UUID фрилансера
email string Email фрилансера
name string Имя фрилансера
taxationStatusId integer Налоговый статус фрилансера
taxationBlockedTill integer Дата, до которой налоговый статус не может быть изменен
categoryTitle string Специализация фрилансера
categoryTitleEn string Название специализации на английском языке
details object Личные данные фрилансера
details.firstName string Имя фрилансера
details.lastName string Фамилия фрилансера
details.note string Описание фрилансера
details.specialization string Специализация фрилансера
country string Код страны фрилансера (двухбуквенный код, например, AM - Армения)
isVerified boolean Признак того, что аккаунт верифицирован
isInviteSent boolean Признак того, что приглашение отправлено
inviteSentAt string Дата отправки приглашения
registerDate string Дата регистрации
isRegistered boolean Признак того, что фрилансер подтвердил приглашение и заполнил личные данные
isTaxPaymentAllowed boolean Признак включения автоуплаты налогов
emailConfirmationStatus boolean Подтвержден ли email фрилансера
phoneConfirmationStatus boolean Подтвержден ли номер телефона фрилансера

Найти фрилансера по номеру телефона

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/freelancer-by-phone/{phone}" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "id": 1,
  "uuid": "abc123",
  "email": "[email protected]",
  "name": "John Doe",
  "taxationStatusId": 2,
  "taxationBlockedTill": "2023-12-31",
  "categoryTitle": "Категория",
  "categoryTitleEn": "Category",
  "details": {
    "firstName": "Иван",
    "lastName": "Иванов",
    "note": "Примечание",
    "specialization": "Специализация"
  },
  "isVerified": true,
  "country": "Россия",
  "isInviteSent": true,
  "inviteSentAt": "2023-11-16T10:44:40.694Z",
  "registerDate": "2023-11-15T15:30:00.000Z",
  "isRegistered": true,
  "isTaxPaymentAllowed": true,
  "emailConfirmationStatus": 1,
  "phoneConfirmationStatus": 1
}

Запрос служит для поиска фрилансера по номеру телефона.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать номер телефона фрилансера.

Ответ

Название свойства Тип Описание
id integer ID фрилансера
uuid integer UUID фрилансера
email string Email фрилансера
name string Имя фрилансера
taxationStatusId integer Налоговый статус фрилансера
taxationBlockedTill integer Дата, до которой налоговый статус не может быть изменен
categoryTitle string Специализация фрилансера
categoryTitleEn string Название специализации на английском языке
details object Личные данные фрилансера
details.firstName string Имя фрилансера
details.lastName string Фамилия фрилансера
details.note string Описание фрилансера
details.specialization string Специализация фрилансера
country string Код страны фрилансера (двухбуквенный код, например, AM - Армения)
isVerified boolean Признак того, что аккаунт верифицирован
isInviteSent boolean Признак того, что приглашение отправлено
inviteSentAt string Дата отправки приглашения
registerDate string Дата регистрации
isRegistered boolean Признак того, что фрилансер подтвердил приглашение и заполнил личные данные
isTaxPaymentAllowed boolean Признак включения автоуплаты налогов
emailConfirmationStatus boolean Подтвержден ли email фрилансера
phoneConfirmationStatus boolean Подтвержден ли номер телефона фрилансера

Получить данные фрилансера

Пример запроса

curl -X GET "http://solar-staff.com https://my.solarstaff.com/api/customer/freelancers/12" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "id": 12,
  "email": "[email protected]",
  "name": "Ivanich",
  "taxationStatusId": 0,
  "taxationBlockedTill": "",
  "categoryTitle": "Разработчик",
  "categoryTitleEn": "Developer",
  "details": {
    "firstName": "Иван",
    "lastName": "Иванов",
    "note": "",
    "specialization": "Developer"
  },
  "country": "AM",
  "isVerified": true,
  "isInviteSent": true,
  "inviteSentAt": "2021-12-23T18:48:40.800Z",
  "registerDate": "2021-12-23T18:48:40.800Z",
  "isRegistered": true
}

Запрос служит для получения данных фрилансера по его ID или Uuid.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID или UUID фрилансера.

Ответ

Название свойства Тип Описание
id integer ID фрилансера
email string Email фрилансера
name string Имя фрилансера
taxationStatusId integer Налоговый статус фрилансера
taxationBlockedTill integer Дата, до которой налоговый статус не может быть изменен
categoryTitle string Специализация фрилансера
categoryTitleEn string Название специализации на английском языке
details object Личные данные фрилансера
details.firstName string Имя фрилансера
details.lastName string Фамилия фрилансера
details.note string Описание фрилансера
details.specialization string Специализация фрилансера
country string Код страны фрилансера (двухбуквенный код, например, AM - Армения)
isVerified boolean Признак того, что аккаунт верифицирован
isInviteSent boolean Признак того, что приглашение отправлено
inviteSentAt string Дата отправки приглашения
registerDate string Дата регистрации
isRegistered boolean Признак того, что фрилансер подтвердил приглашение и заполнил личные данные
isTaxPaymentAllowed boolean Признак включения автоуплаты налогов
emailConfirmationStatus boolean Подтвержден ли email фрилансера
phoneConfirmationStatus boolean Подтвержден ли номер телефона фрилансера

Пригласить фрилансера

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/freelancers" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "email": "[email protected]",
        "note": "new developer",
        "inEnglish": true,
        "sendEmail": true
      }"

Пример ответа

HTTP status code: 200 OK

{
  "uuid": "b2e2671d-f850-493f-83ba-f236d3192974"
}

Запрос служит для добавления фрилансера в команду. После успешного вызова данного запроса фрилансер будет добавлен в вашу команду и вы сможете с ним работать. Фрилансера можно добавить 2 способами:

  • по email. В этом случае необходимо передать email в описанный далее запрос. Если фрилансер еще не зарегистрирован в сервисе, то на указанную электронную почту придет приглашение для регистрации, где фрилансер сможет заполнить свои личные данные.
  • по номеру телефона. В этом случае необходимо передать phone. Приглашение в этом случае не будет отправлено. После установки приложения или при регистрации в сервисе фрилансеру будет предложено заполнить полную форму регистрации.

В ответе на запрос будет возвращен UUID фрилансера, который вы в дальнейшем сможете использовать в запросах получения данных о фрилансере, удаления фриласнера из команды, получения данных о платежных инструментах или добавления новых платежных инструментов. Обратите внимание, что вы не можете задать свой UUID для нового фрилансера - он будет сгенерирован сервисом автоматически при регистрации фрилансера.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
email string Обязательно, если не передан phone Email фрилансера
phone string Обязательно, если не передан email Номер телефона фрилансера (формат телефона - только цифры, без пробелов и специальных символов)
country string Да Буквенный код страны фрилансера. Список стран см. в данном запросе
firstName string Нет Имя фрилансера
lastName string Нет Фамилия фрилансера
middleName string Нет Отчество фрилансера
city string Нет Город
address string Нет Адрес
postalCode string Нет Почтовый индекс
note string Нет Описание фрилансера
inEnglish boolean Нет Признак того, что приглашение необходимо отправлять на английском языке
sendEmail boolean Нет Признак того, необходимо ли отправлять сообщение. Если нет, то фрилансер будет добавлен в команду заказчика, но сообщение ему не будет отправлено.

Если необязательные поля переданы, то при прохождении по ссылке-приглашению или после ввода номера телефона (если в данном запросе был передан phone) фрилансер увидит добавленные значения и ему просто надо будет подтвердить регистрацию.

Ответ

Название свойства Тип Описание
uuid string UUID фрилансера

Изменить данные профиля

Пример запроса

curl -X PUT "https://my.solarstaff.com/api/customer/freelancers" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerId": 11,
        "firstName": "Ivan",
        "lastName": "Ivanov",
        "note": "description",
        "specialization": "developer",
        "freelancerUuid": "8e947213-c114-41ec-a9ae-0242ac130002",
        "companyId": 2
      }"

Данный запрос служит для изменения данных профиля фрилансера: имени, фамилии, специализации или описания.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
freelancerId integer Да Id фрилансера
firstName string Нет Имя фрилансера
lastName string Нет Фамилия фрилансера
note string Нет Описание фрилансера
specialization string Нет Специализация фрилансера
freelancerUuid uuid Нет Uuid фрилансера
companyId integer Нет Id компании

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Запросить код для изменения контактных данных

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/freelancers/request-code-for-change-contacts" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerId": 1,
        "email": "[email protected]",
        "phone": "+1234567890"
      } "

Данный запрос служит для изменения контактных данных фрилансера: номера телефона или email (изменить можно только один из параметров). В запросе необходимо передать новые значения контактных данных и ID фрилансера. После этого фрилансеру в смс будет отправлен код, который будет необходимо передать в запросе /api/customer/freelancers/change-contacts (подробнее см. далее).

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
freelancerId integer Да ID фрилансера
email string Нет Email фрилансера
phone string Нет Номер телефона фрилансера

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Подтвердить изменение контактных данных

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/freelancers/change-contacts" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
          "freelancerId": 1,
          "code": "123123",
      }"

Для изменения контактных данных фрилансера (номера телефона, email или обоих) используется приведенный ниже запрос в формате JSON. Важно передать в запросе уникальный код, полученный при выполнении запроса на изменение контактных данных, а также идентификатор (ID) фрилансера. Если предоставленный код верный, контактные данные фрилансера будут обновлены на те, которые были указаны в запросе изменения контактных данных.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательный Описание
freelancerId integer Да ID фрилансера
code string Да Код, полученный в запросе на изменение контактных данных

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Сгенерировать ссылку верификации

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/freelancers/verification-link?freelancerId=123" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "terminal_url":"https://link-to-verification-terminal"
}

Верификация аккаунта - акт подтверждения подлинности данных личности и документов. Подробнее про верификацию см. в базе знаний.

Данный запрос служит для генерации ссылки на верификацию, которую вы сможете отправить фрилансеру.

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
freelancerId integer Да Id фрилансера
redirectUrl integer Нет URL, на который будет возвращен исполнитель после верификации

Ответ

Название свойства Тип Описание
terminal_url string URL терминала верификации

Изменить налоговый статус фрилансера

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/freelancers/change-taxation-status" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerId": 123,
        "taxationStatusId": 1
      }"


Пример запроса с передачей Uuid:


curl -X POST "https://my.solarstaff.com/api/customer/freelancers/change-taxation-status" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerUuid": "8e947213-c114-41ec-a9ae-0242ac130002",
        "taxationStatusId": 1
      }"

Пример ответа

HTTP status code: 200 OK

{
  "linkToTerminal": "http://link.com"
}

Запрос служит для изменения налогового статуса фрилансера (применимо только для фрилансеров из России): - Если запрашивается смена статуса на физическое лицо, то статус меняется сразу и в ответе возвращается пустая строка. - Если запрашивается смена статуса на Самозанятого или ИП, то в ответе будет возвращена ссылка на страницу, где фрилансер сможет ввести свои налоговые данные.

Подробнее про налоговые статусы фрилансера из РФ см. здесь

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательный Описание
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid Id фрилансера
freelancerUuid uuid Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002
taxationStatusId integer Да Id налогового статуса. Возможные значения:
  • 1 - физическое лицо
  • 3 - самозанятый
  • 4 - индивидуальный предприниматель

Ответ

Название свойства Тип Описание
linkToTerminal string URL терминала изменения налогового статуса

Добавить налоговый номер фрилансера

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/freelancers/add-tax-document" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerId": 100934,
        "type": "INN",
        "taxNumber": "709849850606"
      } "


Пример запроса с передачей Uuid:


curl -X POST "https://my.solarstaff.com/api/customer/freelancers/add-tax-document" 
    -H  "Accept: application/json" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerUuid": "8e947213-c114-41ec-a9ae-0242ac130002",
        "type": "INN",
        "taxNumber": "709849850606"
      }"

Запрос служит для добавления налогового номера фрилансера. Например, для сохранения номера ИНН.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательный Описание
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid Id фрилансера
freelancerUuid uuid Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002
type string Да Тип налогового документа. Возможные значения:
  • INN - для пользователей из России
  • UNP - для пользователей из Белоруссии
  • CUIT / CUIL - для пользователей из Аргентины (обратите внимание, что CUIT / CUIL - это название документа и значение необходимо передавать именно в таком виде)
  • NIT / CI / CE - для пользователей из Боливии
  • CPF / CNPJ - для пользователей из Бразилии
  • RUT - для пользователей из Чили
  • PASS / TAXID - для пользователей из Китая
  • NIT / CC / CE / PASS / PEP - для пользователей из Колумбии
  • CI / CJ / CR - для пользователей из Коста-Рики
  • RN / CE / PASS - для пользователей из Доминиканской Республики
  • CI / RUC / PASS / CE - для пользователей из Эквадора
  • RUC - для пользователей из Панамы
  • CI / RUC - для пользователей из Парагвая
  • DNI / RUC / CE / PASS - для пользователей из Перу
  • PASS / NI / MIL - для пользователей из Танзании
  • CI / RUT / DE / PASS - для пользователей из Уругвая
taxNumber string Да Номер налогового документа

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Удалить фрилансера из команды

Пример запроса

curl -X DELETE "https://my.solarstaff.com/api/customer/freelancers" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "freelancerId": 12
      }"

Пример ответа

HTTP status code: 200 OK

При успешном выполнении запроса возвращается пустой ответ.

Запрос служит для удаления фрилансера из команды.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательный Описание
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid ID фрилансера
freelancerUuid string Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Проверить наличие новой оферты [устаревший]

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/freelancers/check-requirements?taskUuid=1as7ac19-5y33-4a3a-94b3-b4a26374de4d" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "url": "http://solar-staff.com/agreement",
  "templateUuid": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d"
}

Запрос считается устаревшим. Мы настоятельно рекомендуем не использовать его в новых проектах и по возможности переходить на альтернативный метод для аналогичной функциональности - Проверка наличия ограничений для принятия задачи в работу.

Запрос служит для проверки наличия новых оферт, которые фрилансеру необходимо принять перед продолжением работы в сервисе (обязательно необходимо проверять запрос перед принятием задачи в работу). Далее вам необходимо будет отобразить фрилансеру новую оферту, убедиться, что он подтвердил свое согласие с ней и вызвать следующий запрос Принять оферту от лица фрилансера.

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
taskUuid uuid Да Uuid задачи, возвращается в запросе получения задачи по ID или получения списка задач
freelancerUuid uuid Да Uuid фрилансера, возвращается в запросе приглашения нового фрилансера

Ответ

Если никаких ограничений нет, то возвращается пустой ответ.

Название свойства Тип Описание
url string URL документа, который требуется переподписать
templateUuid uuid UUID документа
code string Код ограничения
reason string Причина ограничения (Задача входит в санкционный список, поэтому перед принятием ее в работу необходимо подписать оферту)

Принять оферту

Пример запроса

curl -X POST "https://my.solarstaff.com/api/customer/freelancers/sign-agreement" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
        "templateUuid": "1as7ac19-5y33-4a3a-94b3-b4a26374de4d",
        "freelancerId": 100934
      }"

Пример ответа

HTTP status code: 200 OK

При успешном выполнении запроса возвращается пустой ответ.

Запрос позволяет подписать оферту от лица фрилансера. В запросе проверки наличия новых оферт возвращаются ID оферты (который необходимо передать входным параметров в данный запрос) и ссылка на ее отображение (для показа ее фрилансеру в вашем сервисе).

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid Id фрилансера
freelancerUuid uuid Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002
templateUuid uuid Да Uuid оферты

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Финансы

Баланс - денежные средства пользователя в системе, т.е. аналог банковского счёта в системе для пользователей и компаний. У каждого фрилансера существует три баланса в разных валютах: рублях, долларах и евро. У компании баланс может быть только в одной из указанных валют. Поэтому в запросах получения данных о балансе фрилансера всегда возвращаются данные только по балансу фрилансера, валюта которого совпадает с валютой компании.

Раздел включает в себя следующие блоки:

Создать выплату за задачу

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/tasks/payout' \
  --data-raw '{
        "taskId": 583695,
        "payoutEndpointType": 1,
        "payoutEndpointId": 79093
    }'

Пример ответа

HTTP status 200 OK

При успешном выполнении запроса возвращается пустой ответ.

Запрос используется для выплаты средств за оплаченную задачу с баланса фрилансера на карту / расчетный счет / кошелек. То есть запрос может быть использован только для выплаты средств за оплаченную задачу - нельзя передать произвольную сумму для выплаты с баланса фрилансера. В запрос необходимо будет передать ID задачи и платежного инструмента, куда необходимо отправить выплату. Также можно указать дополнительным параметром валюту, из которой будет выполнена конвертация в целевую валюту. Например, для вывода средств с баланса в рублях на банковскую карту Казахстана необходимо выполнить конвертацию в евро, иначе выплата не будет выполнена.

Запрос

HTTP запрос
Тело запроса
Название Тип Обязательность Описание
taskId integer Обязателен один из параметров: taskId или uuid ID задачи. Для получения списка задач используется данный запрос.
uuid string Обязателен один из параметров: taskId или uuid UUID задачи.
payoutEndpointType string Да Тип платежного инструмента. Возможные значения:
  • 1 - банковская карта
  • 2 - QIWI, WebMoney
  • 6 - расчетный счет
.
payoutEndpointId integer Да ID платежного инструмента, который был добавлен фрилансером. Вы можете добавить новый платежный инструмент или выбрать платежный инструмент из тех, которые уже добавлены фрилансером.
currencyId integer Нет ID валюты, из которой будет конвертироваться выплата. Значения ID можно посмотреть в запросе получения списка валют.

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Получить статус выплаты по номеру задачи

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/customer/tasks/payout/432453' \

Пример ответа

HTTP status 200 OK

{
  "payoutStatus": 2
}

Запрос используется для получения статуса выплаты. После создания выплаты вы можете вызвать данный запрос, чтобы убедиться, что выплата выполнена и деньги дошли до фрилансера.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID или uuid задачи. Для получения списка задач используется данный запрос.

Ответ

Название свойства Тип Описание
payoutStatus integer Статус выплаты. Возможные значения:
  • 1 - в процессе
  • 2 - выполнена
  • 3 - отклонен
  • 5 - частично выполнена
  • 10 - создана
.

Получить список транзакций

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/transactions' \

Пример ответа

HTTP status 200 OK

При успешном выполнении запроса возвращается пустой ответ.

Запрос используется для получения списка всех транзакций.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название свойства Тип Описание
id integer Id транзакции
type integer Тип транзакции. Возможные значения:
  • 1 - пополнение
  • 2 - списание
  • 3 - возвраты
.
amount float Сумма транзакции
createdAt string Дата создания транзакции
currency.currency string Название валюты
currency.id integer Id валюты.
balanceId integer Id баланса

Получить платежные инструменты фрилансера

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/customer/freelancers/payout-endpoints?freelancerId=1' \
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status 200 OK

{
  "wallets": [
    {
      "createdAt": "2021-07-20 06:33:14",
      "currency": {
        "currency": "RUB",
        "id": 1
      },
      "id": 48998,
      "number": "2099772984",
      "status": 1,
      "walletType": 2,
      "type": 2,
      "ownerId": 100870,
      "autoPay": true
    }
  ],
  "cards": [
    {
      "createdAt": "2021-01-25 10:32:47",
      "currency": {
        "currency": "EUR",
        "id": 3
      },
      "expire": "03/26",
      "holder": "DINA BOOM",
      "id": 79082,
      "number": "5213 24** **** 9877",
      "status": 4,
      "cardType": 1,
      "type": 1,
      "ownerId": 100870,
      "country": "RU",
      "autoPay": true
    }
  ],
  "ibans": []
}

Запрос используется для получения списка доступных платежных инструментов фрилансеров.

Запрос

HTTP запрос
Параметры запроса
Название Тип Обязательность Описание
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid ID фрилансера
freelancerUuid string Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002

Ответ

Название свойства Тип Описание
wallets string Добавленные фрилансером электронные кошельки
wallets.createdAt string Дата добавления
wallets.currency object Валюта
wallets.currency.currency string Название валюты
wallets.currency.id integer ID валюты
wallets.id integer ID кошелька
wallets.number string Номер кошелька
wallets.status string Статус
wallets.walletType string Тип кошелька. Возможные значения:
  • 2 - QIWI-кошелек
  • 3 - WebMoney
.
wallets.type string Тип платежного инструмента. Возможные значения:
  • 1 - банковская карта
  • 2 - электронный кошелек
  • 6 - расчетный счет
.
wallets.ownerId string ID фрилансера
wallets.autoPay boolean Установлена ли автовыплата на платежное средство
cards string URL терминала для добавления платежного инструмента
cards.createdAt string Дата добавления
cards.currency object Валюта
cards.currency.currency string Название валюты
cards.currency.id integer ID валюты
cards.expire string Дата окончания действия карты
cards.holder string Фамилия и имя владельца
cards.id string ID карты
cards.number string Номер карты (возвращаются первые 2 и последние 4 цифры)
cards.status string Статус. Возможные значения:
  • 1 - привязка карты инициализирована (пользователь уже открыл терминал привязки карты)
  • 3 - банковская карта заблокирована
  • 4 - банковская карта добавлена и подтверждена
  • 7 - удалена
.
cards.cardType string Тип карты. Возможные значения:
  • 1 - Visa
  • 2 - Mastercard
  • 3 - Maestro
  • 8 - Mir
  • 0 - тип не определен
.
cards.type string Тип платежного инструмента. Возможные значения:
  • 1 - банковская карта
  • 2 - электронный кошелек
  • 6 - расчетный счет
.
cards.ownerId string ID фрилансера
cards.country string Страна, где была выпущена банковская карта
cards.autoPay boolean Установлена ли автовыплата на платежное средство
iban string Добавленные фрилансером расчетные счета
iban.createdAt string Дата добавления
iban.currency object Валюта
iban.currency.currency string Название валюты
iban.currency.id integer ID валюты
iban.id integer ID расчетного счета
iban.number string Номер расчетного счета
iban.status string Статус. Возможные значения:
  • 3 - расчетный счет добавлен, но еще не подтвержден
  • 1 - расчетный счет добавлен и подтвержден
  • 2 - расчетный счет удален
.
iban.bankAccountType string Тип счета. Возможные значения:
  • 1 - SEPA
  • 2 - SWIFT
  • 6 - BIK
.
iban.type string Тип платежного инструмента. Возможные значения:
  • 1 - банковская карта
  • 2 - электронный кошелек
  • 6 - расчетный счет
.
iban.ownerId integer ID фрилансера
iban.autoPay boolean Установлена ли автовыплата на платежное средство

Добавить банковскую карту

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/freelancers/cards' \
  --data-raw '{
        "code": 583695,
        "freelancerId": 1
    }'

Пример ответа

HTTP status 200 OK

{
  "redirect": "https://link-to-payment-terminal",
  "uuid": "425fcc9b-df96-4f15-85fe-f3e259be7442"
}

Запрос используется для добавления нового платежного инструмента для фрилансера. Запрос возвращает ссылку на терминал добавления платежного инструмента. Перед выполнением запроса необходимо также запросить код, который придет на номер телефона фрилансера. Процесс добавления нового платежного инструмента имеет следующий вид:

  • запросить код, который будет отправлен на телефон фрилансера
  • выполнить запрос добавления платежного инструмента, передав входящим параметром код, отправленный на предыдущем шаге -> запрос возвращает ссылку на терминал, где фрилансер может ввести данные платежного инструмента
  • фрилансер заполняет данные нового платежного инструмента.

Запрос

HTTP запрос
Тело запроса
Название Тип Обязательность Описание
code integer Да Код, который был отправлен на номер телефона фрилансера
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid ID фрилансера
freelancerUuid string Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002
redirectUrl integer Нет URL, на который будет возвращен исполнитель после привязки платежного средства

Ответ

Название свойства Тип Описание
redirect string URL терминала для добавления платежного инструмента
uuid string UUID добавленного платежного средства, например, 8e947213-c114-41ec-a9ae-0242ac130002

Добавить счет

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/freelancers/bank-accounts' \
  --data-raw '{
        "code": 583695,
        "freelancerId": 1
    }'

Пример ответа

HTTP status 200 OK

{
  "redirect": "https://link-to-payment-terminal",
    "uuid": "425fcc9b-df96-4f15-85fe-f3e259be7442"
}

Запрос используется для добавления нового счета для фрилансера. Запрос возвращает ссылку на терминал добавления платежного инструмента. Перед выполнением запроса необходимо также запросить код, который придет на номер телефона фрилансера. Процесс добавления нового счета имеет следующий вид:

  • запросить код, который будет отправлен на телефон фрилансера
  • выполнить запрос добавления платежного инструмента, передав входящим параметром код, отправленный на предыдущем шаге -> запрос возвращает ссылку на терминал, где фрилансер может ввести данные платежного инструмента
  • фрилансер заполняет данные нового платежного инструмента.

Запрос

HTTP запрос
Тело запроса
Название Тип Обязательность Описание
code integer Да Код, который был отправлен на номер телефона фрилансера
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid ID фрилансера
freelancerUuid string Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002
bankAccountType integer Да Тип счета. Возможные значения:
  • 1 - счет стран еврозоны (SEPA)
  • 2 - счет SWIFT
  • 6 - счет России (BIC)
redirectUrl integer Нет URL, на который будет возвращен исполнитель после привязки платежного средства

Ответ

Название свойства Тип Описание
redirect string URL терминала для добавления платежного инструмента
uuid string UUID добавленного платежного средства, например, 8e947213-c114-41ec-a9ae-0242ac130002

Добавить электронный кошелек

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/freelancers/wallets' \
  --data-raw '{
        "code": 583695,
        "freelancerId": 1
    }'

Пример ответа

HTTP status 200 OK

{
  "redirect": "https://link-to-payment-terminal",
    "uuid": "425fcc9b-df96-4f15-85fe-f3e259be7442"
}

Запрос используется для добавления нового электронного кошелька для фрилансера. Запрос возвращает ссылку на терминал добавления платежного инструмента. Перед выполнением запроса необходимо также запросить код, который придет на номер телефона фрилансера. Процесс добавления нового счета имеет следующий вид:

  • запросить код, который будет отправлен на телефон фрилансера
  • выполнить запрос добавления платежного инструмента, передав входящим параметром код, отправленный на предыдущем шаге -> запрос возвращает ссылку на терминал, где фрилансер может ввести данные платежного инструмента
  • фрилансер заполняет данные нового платежного инструмента.

Запрос

HTTP запрос
Тело запроса
Название Тип Обязательность Описание
code integer Да Код, который был отправлен на номер телефона фрилансера
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid ID фрилансера
freelancerUuid string Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002
walletType integer Да Тип счета. Возможные значения:
  • 2 - QIWI
  • 3 - WebMoney
redirectUrl integer Нет URL, на который будет возвращен исполнитель после привязки платежного средства

Ответ

Название свойства Тип Описание
redirect string URL терминала для добавления платежного инструмента
uuid string UUID добавленного платежного средства, например, 8e947213-c114-41ec-a9ae-0242ac130002

Удалить банковскую карту

Пример запроса

curl --location 
  --request DELETE 'https://my.solarstaff.com/api/customer/freelancers/cards/123?freelancerId=123' \

Пример ответа

HTTP status 200 OK

Запрос используется для удаления банковской карты.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID платежного инструмента

Параметры запроса
Название Тип Обязательность Описание
freelancerId или freelancerUuid integer Да ID или Uuid фрилансера

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Удалить электронный кошелек

Пример запроса

curl --location 
  --request DELETE 'https://my.solarstaff.com/api/customer/freelancers/wallets/123?freelancerId=123' \

Пример ответа

HTTP status 200 OK

Запрос используется для удаления электронного кошелька фрилансера.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID платежного инструмента

Параметры запроса
Название Тип Обязательность Описание
freelancerId или freelancerUuid integer Да ID или Uuid фрилансера

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Удалить счет

Пример запроса

curl --location 
  --request DELETE 'https://my.solarstaff.com/api/customer/freelancers/bank-accounts/123?freelancerId=123' \

Пример ответа

HTTP status 200 OK

Запрос используется для удаления счета фрилансера.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID платежного инструмента

Параметры запроса
Название Тип Обязательность Описание
freelancerId или freelancerUuid integer Да ID или Uuid фрилансера

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Запросить код для добавления нового платежного инструмента

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/freelancers/request-code-for-new-payout-endpoint' \
  --data-raw '{
        "freelancerId": 583695
    }'

Пример ответа

HTTP status 200 OK

{
  "type": "SMS",
  "number": "412341"
}

Запрос используется для отправки кода подтверждения на номер телефона фрилансера. Для добавления нового платежного инструмента фрилансер должен подтвердить данную операцию. Код может быть отправлен как на телефон, так и через Google Authenticator (в зависимости от настроек профиля фрилансера).

Запрос

HTTP запрос
Тело запроса
Название Тип Обязательность Описание
freelancerId integer Обязателен один из параметров: freelancerId или freelancerUuid ID фрилансера
freelancerUuid string Обязателен один из параметров: freelancerId или freelancerUuid UUID фрилансера, например, 8e947213-c114-41ec-a9ae-0242ac130002

Ответ

Название свойства Тип Описание
type string Тип отправленного сообщения: SMS или Google.
number string Номер телефона фрилансера, если было отправлено SMS-сообщение.

Компания

Раздел содержит описание методов для управления компанией.

Получить компании пользователя

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/companies" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

{
  "items": [
    {
      "id": 2955,
      "companyName": "Цвет",
      "brandName": "Цвет",
      "safeDealEnabled": true,
      "isDefault": true,
      "currency": {
        "currency": "RUB",
        "id": 1
      }
    }
  ],
  "pagination": {
    "count": 1,
    "total": 1,
    "perPage": 20,
    "page": 1,
    "pages": 1
  }
}

Запрос служит для получения компаний авторизованного пользователя.

Запрос

HTTP запрос
Параметры

Дополнительных параметров у запроса нет.

Ответ

Название свойства Тип Описание
id integer ID компании
companyName string Название компании
brandName string Название проекта
safeDealEnabled boolean Включена ли безопасная сделка
isDefault boolean Отображается ли данная компания по умолчанию
currency object Валюта
currency.currency string Название валюты
currency.id integer ID валюты

Изменить компанию

Пример запроса

curl -X PATCH "https://my.solarstaff.com/api/customer/companies" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -d "{
        "companyId": 123
      }"

Пример ответа

HTTP status code: 200 OK

{
  "token": "eyJhbGciOiJIUzUxMiIsI...",
  "refreshToken": "c84f18a2-c6c7-4850-be15-93f9cbaef3b3"
}

Запрос служит для выбора компании, с которой вы будете работать - если в вашем аккаунте добавлено несколько компаний, то этим запросом вы можете выбрать с какой компанией будете сейчас работать. В ответе запроса будет возвращен новый JWT токен, который необходимо использовать для аутентификации для всех остальных запросов.

Запрос

HTTP запрос
Тело запроса
Название параметра Тип Обязательное Описание
companyId integer Да ID компании. Список доступных вам компаний возвращается в этом запросе

Ответ

Название свойства Тип Описание
token string JWT токен
refreshToken string JWT токен, который используется для обновления токена

Получить баланс компании

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/balance 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."

Пример ответа

HTTP status code: 200 OK

{
  "currency": {
    "currency": "RUB",
    "id": 1
  },
  "showVat": true,
  "balanceAmount": 1067273.53,
  "balanceAmountVat": 213454.71,
  "holdAmount": 149225.08,
  "holdAmountVat": 29845.02
}

Запрос служит для получения баланса компании.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название свойства Тип Описание
currency object Валюта
currency.currency string Название валюты
currency.id integer ID валюты
showVat boolean Отображается ли в задачах VAT
balanceAmount string Баланс
balanceAmountVat string VAT на балансе
holdAmount string Захолдированная сумма
holdAmountVat string Захолдированная сумма VAT

Документы

Раздел содержит описание методов для управления документами.

Получить список документов

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/documents" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

{
  "items": [
    {
      "fileId": 252345,
      "type": 6,
      "documentId": 10743,
      "invoiceStatusId": 1,
      "reportStatusId": null,
      "amount": 100,
      "number": "2955-211126-18",
      "currency": {
        "currency": "RUB",
        "id": 1
      },
      "createdAt": "2021-11-26 04:54:39",
      "topUpBalanceDate": "-0001-11-30 00:00:00",
      "sfFileId": null
    }
}

Запрос служит для получения списка документов.

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
filter[type] integer Нет Тип документа. Возможные значения:
  • 6 - инвойс
  • 7 - акт
filter[dateFrom] date Нет Дата действия документа (начало интервала)
filter[dateTo] date Нет Дата действия документа (окончание интервала)
sort string Нет Параметр для сортировки результатов. Возможные значения:
  • createdAt - дата создания документа
  • id - ID документа
  • fileId - ID файла
direction string Нет Направление сортировки. Возможные значения:
  • asc - прямой порядок сортировки
  • desc - обратный порядок

Ответ

Название свойства Тип Описание
fileId integer ID файла
type integer Тип документа. Возможные значения:
  • 6 - инвойс
  • 7 - акт
documentId integer ID документа
invoiceStatusId integer ID статуса инвойса
reportStatusId integer ID статуса акта
amount string Сумма в документе
number string Номер документа
currency object Валюта
currency.currency string Название валюты
currency.id string ID валюты
createdAt string Дата генерации документа
topUpBalanceDate string Дата пополнения баланса
sfFileId boolean ID счета-фактуры (применимо для счетов, сгенерированных для пополнения баланса)

Загрузить документ

Пример запроса

curl -X GET "https://my.solarstaff.com/api/customer/documents/download" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status code: 200 OK

При успешном выполнении запроса возвращается пустой ответ

Запрос служит для загрузки документа - после успешного выполнения запроса ссылка на документ будет отправлена на ваш email.

Запрос

HTTP запрос
Параметры запроса
Название параметра Тип Обязательное Описание
filter[type] integer Нет Тип документа. Возможные значения:
  • 6 - инвойс
  • 7 - акт
filter[dateFrom] date Нет Дата действия документа (начало интервала)
filter[dateTo] date Нет Дата действия документа (окончание интервала)

Ответ

При успешном выполнении запроса возвращается пустой ответ и инициируется отправка email со ссылкой на скачивание документа (в формате zip архива).

Профиль пользователя

В разделе собраны запросы для работы с профилем пользователя:

Личные данные

Получить личные данные

Пример запроса

curl -X GET "https://my.solarstaff.com/api/profile" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 

Пример ответа

HTTP status 200 OK

{
  "languageStringValue": "RU",
  "name": "Ivanov Ivan",
  "postCode": "123123",
  "physicalAddress": "Moscow, Lenina 23",
  "city": "Moscow",
  "inn": "123123123",
  "ip": "10.244.1.113",
  "birthDate": "11.03.2000",
  "gridsSettings": "{\"freelancers_table_column\":[\"expander\",\"date\",\"regDate\",\"email\",\"category\",\"freelancer\",\"notes\",\"paysystems\",\"invitationStatus\",\"freelancer_registered\",\"taxation_status_id\",\"freelancer_is_verified\",\"actions\"],\"ftasks_pageSize\":100,\"columns_ftasks\":[\"checkbox\",\"actions\",\"id\",\"merchant_txid\",\"creator_name\",\"payer_name\",\"worker_name\",\"worker_email\",\"taxation_status\",\"id_uploaded\",\"note\",\"groups\",\"task_title\",\"description\",\"task_caption\",\"task_attributes\",\"date_create\",\"price\",\"price_to_pay\",\"price_with_vat\",\"currency\",\"date\",\"date_end\",\"date_finished\",\"date_paid\",\"reports\",\"intellectual_property\",\"status\",\"deadline\"]}",
  "loginNotification": true,
  "id": 100,
  "uuid": "2b69eb5d-e0e3-11ec-95b5-fa84c4fedfee",
  "email": "[email protected]",
  "username": "[email protected]",
  "firstName": "Иван",
  "middleName": "",
  "lastName": "Иванов",
  "regDate": "2020-10-30",
  "twoFaMethod": "sms",
  "taxationStatus": 1,
  "phone": "44454545",
  "country": "RU",
  "state": null,
  "flags": 0,
  "type": "customer",
  "defaultSmsGate": null,
  "language": "RU",
  "isVerified": false,
  "specialization": null
}

Метод используется для получения личных данных авторизованного пользователя.

Запрос

HTTP запрос
Параметры

В запросе дополнительных параметров нет. Применимо только для авторизованного пользователя.

Ответ

Название Тип Описание
postCode string Индекс почтового адреса пользователя
physicalAddress string Адрес пользователя
city string Город
inn string ИНН (применимо для пользователей из России)
ip string IP-адреса, с которых разрешен вход
birthDate string Дата рождения
gridsSettings object [Системное поле] Настройки интерфейса личного кабинета
id integer ID пользователя
email string Email пользователя
username string Логин пользователя
firstName string Имя пользователя
middleName string Отчество пользователя
lastName string Фамилия пользователя
regDate string Дата регистрации
twoFaMethod boolean Признак того, включена ли двухфакторная аутентификация
taxationStatus string Налоговый статус пользователя (применимо только для фрилансеров)
phone string Телефон пользователя
country string Страна пользователя
state string Регион пользователя
flags string
type string [Системное поле] Тип пользователя: заказчик или фрилансер
language string Язык интерфейса пользователя
isVerified string Верифицирован ли пользователь (применимо только для фрилансеров)

Настройки аккаунта

Изменить язык

Пример запроса

curl -X PUT "https://my.solarstaff.com/api/profile/language" 
    -H  "accept: */*" 
    -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..."
    -H  "Content-Type: application/json" 
    -d "{
          "language": "RU"
        }"

Пример ответа

HTTP status 200 OK

При успешном выполнении запроса ожидается пустой ответ.

Метод используется для изменения языка - будет изменен язык для всех сообщений, категорий задач и т.д. Доступные варианты: русский (RU) и английский (EN).

Запрос

HTTP запрос
Тело запроса
Название Тип Обязательность Описание
language string Да Название языка. Возможные варианты:
  • EN - английский
  • RU - русский

Ответ

При успешном выполнении запроса ожидается пустой ответ.

Справочник

В разделе приведены запросы получения вариантов значений различных параметров. Например, валют, типов дедлайнов и налоговых статусов.

Список валют

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/lookups/currencies' \

Пример ответа

HTTP status 200 OK

{
  "RUB": 1,
  "USD": 2,
  "EUR": 3
}

Метод используется для получения списка валют и их ID.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
<код валюты> integer ID валюты

Курс валют

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/exchanges' \

Пример ответа

HTTP status 200 OK

[
  {
    "base": {
      "currency": "EUR",
      "id": 3
    },
    "target": {
      "currency": "RUB",
      "id": 1
    },
    "rate": 79.401
  },
  {
    "base": {
      "currency": "USD",
      "id": 2
    },
    "target": {
      "currency": "RUB",
      "id": 1
    },
    "rate": 74.329
  },
  {
    "base": {
      "currency": "EUR",
      "id": 3
    },
    "target": {
      "currency": "USD",
      "id": 2
    },
    "rate": 1.0576
  },
  {
    "base": {
      "currency": "RUB",
      "id": 1
    },
    "target": {
      "currency": "EUR",
      "id": 3
    },
    "rate": 81.8194
  },
  {
    "base": {
      "currency": "RUB",
      "id": 1
    },
    "target": {
      "currency": "USD",
      "id": 2
    },
    "rate": 76.5928
  },
  {
    "base": {
      "currency": "USD",
      "id": 2
    },
    "target": {
      "currency": "EUR",
      "id": 3
    },
    "rate": 1.0898
  }
]

Метод используется для получения актуального курса валют.

Примеры расчета сумм после конвертации:

Валюта вывода Валюта выплаты Курс конвертации Пример расчета
EUR RUB 79.401 1000 EUR * 79.401 = 79401 RUB
USD RUB 74.329 1000 USD * 74.329 = 74329 RUB
EUR USD 1.0576 1000 EUR * 1.0576 = 1057.6 USD
RUB EUR 81.8194 1000 RUB / 81.8194 = 12.23 EUR
RUB USD 76.5928 1000 RUB / 76.5928 = 13.06 USD
USD EUR 1.0898 1000 USD / 1.0898 = 917.43 EUR

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
base.currency string Название основной валюты, которую надо перевести в другую
base.id integer ID основной валюты
target.currency string ID требуемой валюты, в которую будет выполнен перевод
target.id integer ID требуемой валюты, в которую будет выполнен перевод
rate integer Курс

Дедлайны задач

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/lookups/deadlines' \

Пример ответа

HTTP status 200 OK

{
  "SOFT": 1,
  "HARD": 2
}

Метод используется для получения дедлайнов и их ID.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
<тип дедлайна> integer ID дедлайна

Налоговые статусы

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/lookups/taxation-statuses' \

Пример ответа

HTTP status 200 OK

{
  "NATURAL": 1,
  "NATURAL_TITLE": "Natural person",
  "SELF_EMPLOYED": 3,
  "SELF_EMPLOYED_TITLE": "Self employed person",
  "SOLE_PROPRIETOR": 4,
  "SOLE_PROPRIETOR_TITLE": "Individual entrepreneur"
}

Метод используется для получения налоговых статусов и их ID.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
<налоговый статус> integer ID налогового статуса
<налоговый статус>_TITLE string Название налогового статуса

Категории задач

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/customer/lookups/categories' \

Пример ответа

HTTP status 200 OK

{
  "items": [
    {
      "id": 1,
      "title": "Печатные СМИ",
      "titleEn": "Printed mass media"
    },
    {
      "id": 2,
      "title": "Интернет-реклама",
      "titleEn": "Internet advertising"
    }
  ]
}

Метод используется для получения категорий задач.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
id integer ID категории
title string Название категории задач
titleEn string Название категории задач (на английском языке)

Название услуг и работ

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/lookups/services/1' \

Пример ответа

HTTP status 200 OK

{
  "items": [
    {
      "id": 3,
      "title": "Копирайтинг",
      "titleEn": "Copywriting",
      "titleDoc": "Написание текстов статей/обзоров",
      "titleDocEn": "Сopywriting of texts of articles/reviews"
    },
    {
      "id": 2,
      "title": "Работы по созданию иллюстраций к текстам (включая фотографию)",
      "titleEn": "Work on creation of illustrations for  texts (incl. photos)",
      "titleDoc": "Работы по созданию иллюстраций (включая фотографические) к текстам статей периодического СМИ",
      "titleDocEn": "Work on creation of illustrations (incl. photos) for  texts of articles of periodic mass media"
    }
  ]
   "pagination": {
    "count": 20,
    "total": 23,
    "perPage": 9999,
    "page": 1,
    "pages": 1
  }
}

Метод используется для получения услуг и работ по запрашиваемой категории задач.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID категории задач.

Параметры
Название Тип Описание
page integer Нет
size integer Нет

Ответ

Название Тип Описание
id integer ID услуги и работы
title string Название услуги и работы
titleEn string Название услуги и работы (на английском языке)
titleDoc string Название услуги и работы в акте
titleDocEn string Название услуги и работы в акте (на английском языке)
pagination list Постраничный вывод элементов
pagination.count integer Количество возвращенных элементов
pagination.total integer Всего элементов, доступных по запрашиваемому фильтру
pagination.perPage integer Количество элементов на странице
pagination.page integer Номер страницы
pagination.pages integer Всего страниц

Атрибуты задач

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/lookups/service-attributes/1' \

Пример ответа

HTTP status 200 OK

{
  "items": [
    {
      "id": 6,
      "title": "Наименование СМИ",
      "titleEn": "Name of mass media",
      "type": "text"
    },
    {
      "id": 9,
      "title": "Номер издания",
      "titleEn": "Issue",
      "type": "text"
    },
    {
    "id": 31,
    "title": "Формат видео",
    "titleEn": "Video format",
    "type": "select",
    "attrTypeId": 11,
    "options": [
      {
        "id": 26,
        "value": "SD",
        "valueEn": "SD"
      },
      {
        "id": 27,
        "value": "HD",
        "valueEn": "HD"
      },
      {
        "id": 29,
        "value": "FullHD",
        "valueEn": "FullHD"
      },
      {
        "id": 28,
        "value": "UHD",
        "valueEn": "UHD"
      },
      {
        "id": 30,
        "value": "4K",
        "valueEn": "4K"
      }
    ]
  },
  ],
 "pagination": {
    "count": 20,
    "total": 23,
    "perPage": 9999,
    "page": 1,
    "pages": 1
  }
}

Метод используется для получения атрибутов по запрашиваемой услуге.

Запрос

HTTP запрос
Path-параметры

В качестве параметра пути необходимо передать ID услуги.

Параметры
Название Тип Описание
id integer ID услуги
page integer Нет
size integer Нет

Ответ

Название Тип Описание
items list Элементы списка
items.id integer ID атрибута
items.title string Название атрибута
items.titleEn string Название атрибута (на английском языке)
items.attrTypeId integer ID типа атрибута
options object Значения атрибута (для типа select)
options.id integer ID значения
options.value string Текст
options.valueEn string Текст на английском
pagination list Постраничный вывод элементов
pagination.count integer Количество возвращенных элементов
pagination.total integer Всего элементов, доступных по запрашиваемому фильтру
pagination.perPage integer Количество элементов на странице
pagination.page integer Номер страницы
pagination.pages integer Всего страниц

Дополнительные документы для принятия задачи

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/customer/lookups/acceptance-files' \

Пример ответа

HTTP status 200 OK

{
  "items": [
    {
      "id": 1049,
      "fileId": 123,
      "title": "Соглашение о неразглашении (NDA)",
      "titleEn": "Non-disclosure agreement"
    }
  ]
}

Метод используется для получения списка документов, которые обязательно должен принять фрилансер перед выполнением задач. Например, NDA. Если вы хотите загрузить подобный документ в сервис, то обратитесь в техническую поддержку.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
id integer ID документа
fileId integer ID файла с документом
title string Название документа
titleEn string Название документа (на английском языке)

Коды стран

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/customer/ord/get-arccw-codes' \

Пример ответа

HTTP status 200 OK

{
  "items": [
    {
      "id": 1049,
      "title": "Латвия"
    }
  ]
}

Метод используется для получения списка стран и их идентификаторов из Общероссийского классификатора стран мира.

Запрос

HTTP запрос
Параметры

Дополнительных параметров запроса нет.

Ответ

Название Тип Описание
id integer ID страны
title string Название страны

WebHooks

WebHooks - уведомления сервисов о событиях, выполненных в Solar-staff. Вы можете добавить собственный URL, на который будут отправляться все доступные уведомления о событиях. Для добавления URL, на который будут отправляться сообщения, используйте этот запрос. Далее вы можете настроить на своей стороне обработку только нужных событий. Solar-staff всегда отправляет все доступные события на добавленный вами URL-адрес, а далее вы можете на своей стороне добавить обработку только нужных вам событий (для определения типа события используйте поле name).

Доступные события:

  • регистрация фрилансера. Если вы работаете по АПИ, то фрилансеру необходимо самостоятельно завершить регистрацию. Вы можете настроить webhook, чтобы вам пришло уведомление после того, как фрилансер перейдет по ссылке из письма и заполнит форму регистрации
  • добавление/удаление платежного инструмента. Добавление платежного инструмента также выполняется лично фрилансером, поэтому можно настроить уведомление вашего сервиса после того, как фрилансер добавит платежный инструмент
  • изменение налогового статуса исполнителя
  • подключение или отключение автоуплаты налога для физических лиц из России

Пример сообщения, которое будет отправлено на указанный URL:

{  
  "timestamp": 1674539549,
  "name": "cardAdded",
  "payload": {
    "ownerId": 6,
    "id": 11
  }
}

Параметры:

  • name - название события,
  • payload - данные по событию. Возможные значения:
    • для добавления платежного инструмента будут возвращены параметры ownerId - ид пользователя, который добавил карту и id - ид платежного средства
    • для регистрации фрилансера будет возвращен uuid фрилансера
    • для изменения налогового статуса исполнителя (применимо только для фрилансеров из РФ) будет возвращен uuid фрилансера и налоговый статус
    • для автоуплаты налога физических лиц будет возвращен uuid фрилансера и значение true, если автоуплата включена и false, если отключена
  • timestamp - дата события

В каждом запросе передается специальный заголовок X-Sign, с подписью содержимого. Подпись считается как sha256(body . secret). Где:

  • secret - секрет, который доступен в запросе GET api/v1/customer/web-hook
  • body - тело запроса

Если у вас несколько компаний, то для настройки webhook для каждой из них необходимо перейти в нужную компанию и выполнить запрос на создание webhook.

Если сервис, на который была настроена отправка, не отвечает, или отвечает HTTP кодом, отличным от 200, то Solar-staff будет продолжать пытаться отправить уведомление в течение 24 часов.

Получить webhook

Пример запроса

curl --location 
  --request GET 'https://my.solarstaff.com/api/customer/web-hook' \

Пример ответа

HTTP status 200 OK

{
  "url": "https://webhook.site/588190fc-47d6-47f2-bded-17216bfe6e92",
  "status": "enabled",
  "secret": "bb940556f36a5ae58063f151e51f5318",
  "lastTriggered": null,
  "lastError": null
}

Метод используется для получения подробностей по webhook.

Запрос

HTTP запрос

Параметры

Дополнительных параметров нет.

Ответ

Название Тип Описание
url string URL, на который будут отправляться уведомления
status string Статус. Доступные параметры:
  • enabled - включен
  • disabled - выключен
secret string Код, который будет дополнительно приходить в каждом отправленном уведомлении
lastTriggered string Время отправки последнего уведомления
lastError string Время последнего недоставленного уведомления

Создать/обновить webhook

Пример запроса

curl --location 
  --request POST 'https://my.solarstaff.com/api/customer/web-hook' \
  --data-raw '{
        "status" : "enabled",
        "url" : "https://test.com"
    }'

Пример ответа

HTTP status 200 OK

Метод используется для добавления или обновления webhook. То есть, для добавления URL-адреса, на который будут отправляться все доступные события: добавление и удаление платежного инструмента фрилансера. Для включения отправки событий передайте входящим параметром для поля status значение enabled, а для отключения отправки событий - значение disabled.

Запрос

HTTP запрос

Параметры

Название Тип Обязательность Описание
status string Да Статус. Доступные параметры:
  • enabled - включен
  • disabled - выключен
url string Да URL, на который необходимо отправить уведомление

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Удалить webhook

Пример запроса

curl --location 
  --request DELETE 'https://my.solarstaff.com/api/customer/web-hook' \
  --data-raw '{
        "status" : "enabled",
        "url" : "https://test.com"
    }'

Пример ответа

HTTP status 200 OK

Метод используется для удаления webhook.

Запрос

HTTP запрос

Параметры

Дополнительных параметров нет.

Ответ

При успешном выполнении запроса возвращается пустой ответ.

Коллекция Postman

С SolarStaff API можно работать с помощью подготовленной коллекции запросов Postman. В описании коллекции вы найдете краткую инструкцию о работе с переменными и выполнении запросов в Postman.

Для использования коллекции запросов Postman:

Шаг 1

Откройте коллекцию запросов Postman


Шаг 2

Нажмите Fork Collection, чтобы скопировать коллекцию запросов в свое рабочее пространство в Postman.

В открывшемся окне укажите название копии и рабочего пространства, в котором будет создана копия коллекции. Установите флажок Watch original collection, если хотите получать уведомления об изменении в оригинальной коллекции запросов.

Введите название и выберите рабочее пространство.

Шаг 3

Перейдите в запрос токена и заполните ваши данные для авторизации.

Шаг 4

Перейдите в настройки коллекции и скопируйте полученный токен в блоке авторизации коллекции

Release notes

Апрель 2024

Добавлены:

  • новые события для вебхуков: регистрация фрилансера, изменение налогового статуса фрилансера и включение / отключение автоуплаты налога
  • параметр для компенсации комиссии фрилансера compensationType в запрос создания задачи. Параметр определяет тип платежного средства, куда фрилансер будет выводить средства. Для разных платежных средств процент комиссии отличается, поэтому параметр позволяет определить точный процент комиссии для фрилансера.
  • в ответе запроса добавления платежных средств добавлен параметр UUID платежного средства.
  • при получении списка платежных средств теперь возвращается параметр, который показывает установлена ли автовыплата на это платежное средство.

Ноябрь 2023

В ответ запроса получения списка документов для принятия задачи в работу добавлен параметр fileId.

Добавлен параметр компенсации комиссии фрилансера compensateWorkerServiceFee в запрос создания задачи.

Октябрь 2023

В запрос создания выплаты за задачу теперь можно передать валюту, через которую необходимо выполнить конвертацию перед выводом средств.

Август 2023

Добавлены:

Июль 2023

Добавлены:

Май 2023

Добавлены:

Март 2023

Добавлены:

Январь 2023

Добавлены: