Общие сведения об API
Ознакомиться с более подробным API MultiDirectory вы можете по ссылкам ниже:
Для взаимодействия используются HTTP методы:
- GET — для получения информации
- POST — для создания сущности
- PUT — для изменения сущности
- DELETE — для удаления
- PATCH — для частичного изменения сущности
Для подключения к API вашей MultiDirector yкажите ссылку в таком виде:
- https://адрес_вашейMD/api/docs
- https://адрес_вашейMD/api/redoc
Аутентификация
API для обновления и токена доступа при входе в систему
Адрес https://адрес_вашейMD/api/auth/token/get | метод GET
Логин передается в форматах:
- DN
- UPN
- sAMAccountName
Пример запроса:
{
"username": "<string>", //логин пользователя
"password": "<string>", //пароль пользователя
}
Пример ответа:
{
"access_token": "123",
"refresh_token": "456",
"type": "bearer"
}
Время жизни токенов: для access_token — 20 минут для refresh_token — 14 суток
Создание
API для создания объектов
Адрес https://адрес_вашейMD/api/entry/add | метод POST
Пример запроса создания организационного подразделения:
{
"entry": "cn=your_ou,ou=users,dc=your.domain,dc=ru", //путь где будет храниться объект
"attributes": [
{
"type": "objectClass",
"vals": [
"top", "container", "organizationUnit"
]
}
],
"password": ""
}
Пример ответа:
{
"resultCode": 0,
"matchedDN": "",
"errorMessage": ""
}
Пример запроса создания пользователя:
{
"entry": "cn=your.user,ou=users,dc=your_domain,dc=ru",
"attributes": [
{
"type": "objectClass",
"vals": [
"user",
"top",
"person",
"organizationalPerson",
"posixAccount",
"shadowAccount"
]
},
{
"type": "mail",
"vals": [
"your.user@your_domain.ru"
]
},
{
"type": "description",
"vals": [
""
]
},
{
"type": "sAMAccountName",
"vals": [
"user"
]
},
{
"type": "userPrincipalName",
"vals": [
"your.user@your_domain.ru"
]
},
{
"type": "displayName",
"vals": [
"your user"
]
},
{
"type": "givenName",
"vals": [
"user"
]
},
{
"type": "initials",
"vals": [
""
]
},
{
"type": "surname",
"vals": [
"your"
]
}
],
"password": "your_password"
}
Пример ответа:
{
"resultCode": 0,
"matchedDN": "",
"errorMessage": ""
}
Пример запроса создания группы:
{
"entry": "cn=your_group,ou=users,dc=sspl,dc=multifactor,dc=dev",
"attributes": [
{
"type": "objectClass",
"vals": [
"group",
"top",
"posixGroup"
]
},
{
"type": "description",
"vals": [
]
}
],
"password": ""
}
Пример ответа:
{
"resultCode": 0,
"matchedDN": "",
"errorMessage": ""
}
Изменение
API для сброса пароля пользователя
Адрес https://адрес_вашейMD/api/auth/user/password | метод PATCH
Логин передается в форматах:
- DN
- UPN
- sAMAccountName
Пример запроса:
{
"identity": "your_user", //логин пользователя
"new_password": "your_password" //пароль пользователя
}
Пример ответа:
true
API для обновления данных в объекте
Адрес https://адрес_вашейMD/api/entry/update | метод PATCH
Описание значений для переменной operation:
- add (0)
- delete (1)
- replace (2)
Пример запроса:
{
"object": "cn=your.object,ou=users,dc=your_domain,dc=ru",
"changes": [
{
"operation": 0,
"modification": {
"type": "office",
"vals": [
"MOW"
]
}
},
{
"operation": 1,
"modification": {
"type": "memberOf",
"vals": [
""
]
}
},
{
"operation": 2,
"modification": {
"type": "description",
"vals": [
"your_desc"
]
}
}
]
}
Пример ответа:
{
"resultCode": 0,
"matchedDN": "",
"errorMessage": ""
}
Удаление
API для удаления объектов
Адрес https://адрес_вашейMD/api/entry/delete | Метод DELETE
Пример запроса:
{
"entry": "cn=your.object,ou=users,dc=your_domain,dc=ru"
}
Пример ответа:
{
"resultCode": 0,
"matchedDN": "",
"errorMessage": ""
}
Поиск
API для поиска объектов
Адрес https://адрес_вашейMD/api/entry/delete | Метод GET
Пример запроса:
{
"base_object": "ou=users,dc=sspl,dc=multifactor,dc=dev",
"scope": 1,
"deref_aliases": 0,
"size_limit": 15,
"time_limit": 0,
"types_only": false,
"filter": "(objectClass=*)",
"attributes": [
"defaultNamingContext",
"sANAccountName",
"name",
"objectClass"
],
"page_number": 1
}
Пример ответа:
{
"resultCode": 0,
"matchedDN": "",
"errorMessage": "",
"total_pages": 1,
"total_objects": 3,
"search_result": [
{
"object_name": "cn=admin,ou=users,dc=sspl,dc=multifactor,dc=dev",
"partial_attributes": [
{
"type": "objectClass",
"vals": [
"top",
"person",
"organizationalPerson",
"posixAccount",
"shadowAccount",
"user"
]
},
{
"type": "loginShell",
"vals": [
"/bin/bash"
]
},
]
}
]
}