Задача
Во внешнем сервисе реализовать возможность доступа к программным интерфейсам приложения 1С
Сценарий
- Пользователь в личном кабинете внешнего сервиса вводит логин и пароль от учетной записи облачного сервиса Фреш.
- Внешний сервис под учетной записью пользователя создает служебного пользователя абонента для доступа к API приложения
- Внешний сервис добавляет в приложение пользователя служебного пользователя для работы с API
- Внешний сервис получает возможность использования приложения 1С через API
Пример для плагина REST Client на Visual Studio Code
### ПРИМЕР СОЗДАНИЯ ПОЛЬЗОВАТЕЛЯ ДЛЯ ДОСТУПА К API ПРИЛОЖЕНИЯ В СЕРВИСЕ ФРЕШ
# Включает операции:
# 1. Получение кода абонента
# 2. Создание нового пользователя абонента
# 3. Получение списка областей абонента
# 4. Добавление пользователя в конкретную область с доступом к API
#
# Используемые переменные:
# server - адрес облачного сервиса Фреш
# url - адрес ExtAPI менеджера сервиса (a/adm/hs/ext_api/execute)
# authorization - авторизация абонента
###
@server = https://1cfresh.com
@url = a/adm/hs/ext_api/execute
@authorization = Basic andreev.6@yopmail.com 123Qwer
### 1. Получение кода абонента.
## Выполняется запрос к менеджеру сервиса и возвращается:
## account[] - абоненты по текущему пользователю
## name - наименование абонента
## id - код абонента
## role - роль текущего пользователя для абонента
##
## ВАЖНО:
## Дальнейшая работа доступна только для роли Owner
# @name accountInfo
POST {{server}}/{{url}}
Authorization: {{authorization}}
{
"general":{
"type":"ext",
"method":"account/list"
}
}
### 2. Создание нового пользователя абонента.
## Для абонента создается новый пользователь, под которым
## будут осуществляться запросы к API
##
## Важно!
## На этом этапе следует придумать имя пользователя и пароль для учетной записи.
##
## Используемые переменные:
## account - код абонента (id из предыдущего этапа) = accountInfo.response.body.$.account[0].id
## service_password - пароль для служебного пользователя
@service_password = 123Qwer
POST {{server}}/{{url}}
Authorization: {{authorization}}
{
"general":{
"type":"ext",
"method":"account/users/create"
},
"auth": {
"account":{{accountInfo.response.body.$.account[0].id}}
},
"id": {{accountInfo.response.body.$.account[0].id}},
"login": "{{$timestamp}}",
"name": "{{$timestamp}}",
"password": "{{service_password}}",
"email_required": false,
"role": "user"
}
### 3. Получение списка областей абонента.
## Определяем области, соответствующие абоненту.
## Для авторизации используется логин и код абонента, полученные на предыдущем этапе.
##
## Используемые переменные:
## account - код абонента
# @name tenantInfo
POST {{server}}/{{url}}
Authorization: {{authorization}}
{
"general":{
"type":"ext",
"method":"tenant/list"
},
"auth": {
"account":{{accountInfo.response.body.$.account[0].id}}
}
}
### 4. Добавление пользователя в конкретную область.
## Созданного пользователя следует добавить в конкретную область, полученную на этапе 3.
## Пользователь добавляется с ролью "Доступ к API"
##
## Используемые переменные:
## tenant_role - Используемая роль (api, user, administrator)
## tenant_id - номер области = tenantInfo.response.body.$.tenant[0].id
## service_login - логин служебного пользователя
@tenant_role = api
POST {{server}}/{{url}}
Authorization: {{authorization}}
{
"general":{
"type":"ext",
"method":"tenant/users/add"
},
"auth": {
"account":{{accountInfo.response.body.$.account[0].id}}
},
"id": {{tenantInfo.response.body.$.tenant[0].id}},
"login":"{{service_login}}",
"role": "{{tenant_role}}"
}