Как передать запрос API python
Всем добрый день, есть задача добавить пользователя в Геткурс через API Инфа с геткурса Импорт пользователя находится по адресу:
https://{account_name}.getcourse.ru/pl/api/users
Для добавления пользователя необходимо передать действие add, секретный ключ и параметры добавляемого пользователя:
curl -i -H "Accept: application/json; q=1.0, */*; q=0.1"
"https://{account_name}.getcourse.ru/pl/api/users" -d "action=add&key={secret_key}&рarams={params}"
Параметры пользователя:
base64_encode
{
"user":{
"email":"email",
"phone":"телефон",
"first_name":"имя",
"last_name":"фамилия",
"city":"город",
"country":"страна",
"group_name":[ // для добавления пользователя в группы
"Группа1", // простое добавление в групп
["Группа2", "2018-08-01 21:21"], // добавление в группу с указанием произвольного момента
["Группа4", "2018-08-02"]
],
"addfields":{"Доп.поле1":"значение","Доп.поле2":"значение"} // для добавления дополнительных полей пользователя
},
"system":{
"refresh_if_exists":0, // обновлять ли существующего пользователя 1/0 да/нет
"partner_email":"email партнера (для пользователя)*"
},
"session":{
"utm_source":"",
"utm_medium":"",
"utm_content":"",
"utm_campaign":"",
"utm_group":"",
"gcpc":"",
"gcao":"",
"referer":""
}
}
Пытался сделать так:
import base64
import requests
import json
account_name = "xxxxxxxxxxxxxxx"
BASE_URL = f"https://{account_name}.getcourse.ru/pl/api/account/users"
user = {'email' : '[email protected]',
'phone': '+333333333333'}
s = json.dumps(user)
user=base64.b64encode(s.encode('utf-8'))
print(s)
print(user)
params = {'action':'add','key':'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX','params':user}
response = requests.post(BASE_URL, params=params)
В результате пользователь не создается. Действие передается как параметр action, POST-запроса. Мне не совсем понятно как передать action, буду признателен за любую помощь. Параметры для действия передаются в формате JSON, закодированного в base64 в параметре params POST-запроса.
Ответы (1 шт):
Автор решения: oleg shu
→ Ссылка
В итоге рабочий вариант выглядит так:
import requests
import json
import base64
# Установка параметров запроса
url = 'https://{account_name}.getcourse.ru/pl/api/users'
action = 'add'
secret_key = '{secret_key}'
# Установка параметров нового пользователя
user = {
"email": "[email protected]",
"phone": "+1 555 1234",
"first_name": "John",
"last_name": "Doe",
"city": "New York",
"country": "USA",
"group_name": ["Group1", ["Group2", "2018-08-01 21:21"]],
"addfields": {"Custom Field 1": "Value 1", "Custom Field 2": "Value 2"}
}
# Установка параметров системы
system = {
"refresh_if_exists": 0,
"partner_email": ""
}
# Установка параметров сессии
session = {
"utm_source": "",
"utm_medium": "",
"utm_content": "",
"utm_campaign": "",
"utm_group": "",
"gcpc": "",
"gcao": "",
"referer": ""
}
# Кодирование параметров в JSON и base64
params = {
"user": user,
"system": system,
"session": session
}
params_json = json.dumps(params).encode('utf-8')
params_base64 = base64.b64encode(params_json).decode('utf-8')
# Отправка POST-запроса
headers = {
'Accept': 'application/json; q=1.0, */*; q=0.1'
}
payload = {
'action': action,
'key': secret_key,
'params': params_base64
}
response = requests.post(url, headers=headers, data=payload)
# Печать результата
print(response.status_code)
print(response.json())