Я пытаюсь создать новых подписчиков через API Buttondown.

Документы здесь.

API ожидает следующее тело:

{
  "email": "string",
  "notes": "string",
  "referrer_url": "string",
  "tags": [
    "string"
  ]
}

Поле электронной почты является обязательным, все остальные необязательны.

Я могу успешно создать нового подписчика. Однако я не могу добавить теги.

Я уже создал тег с именем "маркетинг" и подтвердил его существование.

Я создаю нового подписчика так:

  body = {
    'email': params[:email],
    'referrer_url': params[:referer],
    'tags': ['marketing']
  }

  res = HTTParty.post(
          'https://api.buttondown.email/v1/subscribers', 
          body: body,
          headers: headers
        )

Я ожидаю, что описанное выше создаст нового подписчика с тегом marketing. Но, судя по ответу, тег не попал в протокол.

{
  "creation_date"=>"2020-04-22T16:06:22.114523Z",
   "email"=>"user@example.com",
   "id"=>"********-****-****-****-************",
   "notes"=>"",
   "referrer_url"=>"http://localhost:3000/",
   "metadata"=>{},
   "secondary_id"=>18,
   "subscriber_type"=>"regular",
   "source"=>"api",
   "tags"=>[],
   "utm_campaign"=>"",
   "utm_medium"=>"",
   "utm_source"=>""
}

Я правильно отправляю массив? Правильно ли я делаю запрос POST? Есть ли в документах Buttondown что-нибудь, что указывает на то, что я неправильно отправляю тег?

0
user3574603 22 Апр 2020 в 19:24
2
Вы установили 'Content-Type' => 'application/json' в заголовках? Вы пытались позвонить body.to_json?
 – 
spickermann
22 Апр 2020 в 19:52

1 ответ

Как говорит spickermann, мне нужно было установить тип контента в заголовках и вызвать to_json в тело.

    headers = {
      ...
      'Content-Type' => 'application/json'
    }
    res = HTTParty.post(
      'https://api.buttondown.email/v1/subscribers', 
      body: body.to_json,
      headers: headers
    )
-1
user3574603 22 Апр 2020 в 19:59