SendGrid Пригласить товарища по команде через API 3.0

Я пытаюсь пригласить пользователей в мою подписку SendGrid через API. Для этого я создал ключ FULL ACCESS.

Если я пытаюсь создать пользователя с API-интерфейсом TeamMates ( https://sendgrid.com/docs/API_Reference/Web_API_v3/teammates.html), я получаю "запрещенный" ответ.

Если я спрошу систему о моем ключе:

GET https://api.sendgrid.com/v3/api_keys/[KEY_ID]

Я получаю список разрешений:

{
"api_key_id": "__ID__",
"name": "__NAME__",
"scopes": [
    "alerts.create",
    "alerts.read",
    "alerts.update",
    "alerts.delete",
    "asm.groups.create",
    "asm.groups.read",
    "asm.groups.update",
    "asm.groups.delete",
    "ips.pools.ips.read",
    "mail.send",
    "mail_settings.bcc.read",
    "mail_settings.bcc.update",
    "mail_settings.address_whitelist.read",
    "mail_settings.address_whitelist.update",
    "mail_settings.footer.read",
    "mail_settings.footer.update",
    "mail_settings.forward_spam.read",
    "mail_settings.forward_spam.update",
    "mail_settings.plain_content.read",
    "mail_settings.plain_content.update",
    "mail_settings.spam_check.read",
    "mail_settings.spam_check.update",
    "mail_settings.bounce_purge.read",
    "mail_settings.bounce_purge.update",
    "mail_settings.forward_bounce.read",
    "mail_settings.forward_bounce.update",
    "partner_settings.new_relic.read",
    "partner_settings.new_relic.update",
    "partner_settings.sendwithus.read",
    "partner_settings.sendwithus.update",
    "tracking_settings.click.read",
    "tracking_settings.click.update",
    "tracking_settings.subscription.read",
    "tracking_settings.subscription.update",
    "tracking_settings.open.read",
    "tracking_settings.open.update",
    "tracking_settings.google_analytics.read",
    "tracking_settings.google_analytics.update",
    "user.webhooks.event.settings.read",
    "user.webhooks.event.settings.update",
    "user.webhooks.event.test.create",
    "user.webhooks.event.test.read",
    "user.webhooks.event.test.update",
    "user.webhooks.parse.settings.create",
    "user.webhooks.parse.settings.read",
    "user.webhooks.parse.settings.update",
    "user.webhooks.parse.settings.delete",
    "stats.read",
    "stats.global.read",
    "categories.stats.read",
    "categories.stats.sums.read",
    "devices.stats.read",
    "clients.stats.read",
    "clients.phone.stats.read",
    "clients.tablet.stats.read",
    "clients.webmail.stats.read",
    "clients.desktop.stats.read",
    "geo.stats.read",
    "mailbox_providers.stats.read",
    "browsers.stats.read",
    "user.webhooks.parse.stats.read",
    "templates.create",
    "templates.read",
    "templates.update",
    "templates.delete",
    "templates.versions.create",
    "templates.versions.read",
    "templates.versions.update",
    "templates.versions.delete",
    "templates.versions.activate.create",
    "user.timezone.read",
    "user.timezone.update",
    "user.settings.enforced_tls.read",
    "user.settings.enforced_tls.update",
    "api_keys.create",
    "api_keys.read",
    "api_keys.update",
    "api_keys.delete",
    "email_activity.read",
    "categories.create",
    "categories.read",
    "categories.update",
    "categories.delete",
    "mail_settings.template.read",
    "mail_settings.template.update",
    "marketing_campaigns.create",
    "marketing_campaigns.read",
    "marketing_campaigns.update",
    "marketing_campaigns.delete",
    "mail.batch.create",
    "mail.batch.read",
    "mail.batch.update",
    "mail.batch.delete",
    "user.scheduled_sends.create",
    "user.scheduled_sends.read",
    "user.scheduled_sends.update",
    "user.scheduled_sends.delete",
    "access_settings.whitelist.create",
    "access_settings.whitelist.read",
    "access_settings.whitelist.update",
    "access_settings.whitelist.delete",
    "access_settings.activity.read",
    "whitelabel.create",
    "whitelabel.read",
    "whitelabel.update",
    "whitelabel.delete",
    "suppression.create",
    "suppression.read",
    "suppression.update",
    "suppression.delete"
]

}

Но нет никаких "пользовательских" разрешений. По этой причине я попытался "изменить" свое разрешение на ключ, например:

{
"name": "__NAME__",
"scopes": [
    "alerts.create",
    "alerts.read",
    "alerts.update",
    "alerts.delete",
    "asm.groups.create",
    "asm.groups.read",
    "asm.groups.update",
    "asm.groups.delete",
    "ips.pools.ips.read",
    "mail.send",
    "mail_settings.bcc.read",
    "mail_settings.bcc.update",
    "mail_settings.address_whitelist.read",
    "mail_settings.address_whitelist.update",
    "mail_settings.footer.read",
    "mail_settings.footer.update",
    "mail_settings.forward_spam.read",
    "mail_settings.forward_spam.update",
    "mail_settings.plain_content.read",
    "mail_settings.plain_content.update",
    "mail_settings.spam_check.read",
    "mail_settings.spam_check.update",
    "mail_settings.bounce_purge.read",
    "mail_settings.bounce_purge.update",
    "mail_settings.forward_bounce.read",
    "mail_settings.forward_bounce.update",
    "partner_settings.new_relic.read",
    "partner_settings.new_relic.update",
    "partner_settings.sendwithus.read",
    "partner_settings.sendwithus.update",
    "tracking_settings.click.read",
    "tracking_settings.click.update",
    "tracking_settings.subscription.read",
    "tracking_settings.subscription.update",
    "tracking_settings.open.read",
    "tracking_settings.open.update",
    "tracking_settings.google_analytics.read",
    "tracking_settings.google_analytics.update",
    "user.webhooks.event.settings.read",
    "user.webhooks.event.settings.update",
    "user.webhooks.event.test.create",
    "user.webhooks.event.test.read",
    "user.webhooks.event.test.update",
    "user.webhooks.parse.settings.create",
    "user.webhooks.parse.settings.read",
    "user.webhooks.parse.settings.update",
    "user.webhooks.parse.settings.delete",
    "stats.read",
    "stats.global.read",
    "categories.stats.read",
    "categories.stats.sums.read",
    "devices.stats.read",
    "clients.stats.read",
    "clients.phone.stats.read",
    "clients.tablet.stats.read",
    "clients.webmail.stats.read",
    "clients.desktop.stats.read",
    "geo.stats.read",
    "mailbox_providers.stats.read",
    "browsers.stats.read",
    "user.webhooks.parse.stats.read",
    "templates.create",
    "templates.read",
    "templates.update",
    "templates.delete",
    "templates.versions.create",
    "templates.versions.read",
    "templates.versions.update",
    "templates.versions.delete",
    "templates.versions.activate.create",
    "user.timezone.read",
    "user.timezone.update",
    "user.settings.enforced_tls.read",
    "user.settings.enforced_tls.update",
    "api_keys.create",
    "api_keys.read",
    "api_keys.update",
    "api_keys.delete",
    "email_activity.read",
    "categories.create",
    "categories.read",
    "categories.update",
    "categories.delete",
    "mail_settings.template.read",
    "mail_settings.template.update",
    "marketing_campaigns.create",
    "marketing_campaigns.read",
    "marketing_campaigns.update",
    "marketing_campaigns.delete",
    "mail.batch.create",
    "mail.batch.read",
    "mail.batch.update",
    "mail.batch.delete",
    "user.scheduled_sends.create",
    "user.scheduled_sends.read",
    "user.scheduled_sends.update",
    "user.scheduled_sends.delete",
    "access_settings.whitelist.create",
    "access_settings.whitelist.read",
    "access_settings.whitelist.update",
    "access_settings.whitelist.delete",
    "access_settings.activity.read",
    "whitelabel.create",
    "whitelabel.read",
    "whitelabel.update",
    "whitelabel.delete",
    "suppression.create",
    "suppression.read",
    "suppression.update",
    "suppression.delete",
    "user.account.read",
      "user.credits.read",
      "user.email.create",
      "user.email.delete",
      "user.email.read",
      "user.email.update"
]
}

Но мне не повезло

{
"errors": [
    {
        "field": null,
        "message": "unauthorized scopes: [user.account.read user.credits.read user.email.create user.email.delete user.email.read user.email.update]"
    }
]
}

Есть ли способ пригласить с помощью API KEY некоторых пользователей SendGrid? Что-то я делаю неправильно или связано с моим планом?

Спасибо

1 ответ

Решение

Ответ был в документации, резюмируя:

Вы должны создать сверхмощный API-ключ с именем пользователя + пароль, а затем использовать их.

От: https://sendgrid.com/docs/Classroom/Basics/API/api_key_permissions.html

Важные вещи, которые необходимо знать перед выполнением запроса API:

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

Вы можете добавить базовую авторизацию для своего вызова API самостоятельно, используя base64, кодируя ваше имя пользователя и пароль, например: username: password, и добавив его в заголовок авторизации как Basic. Мы углубимся в это здесь. Или вы можете использовать оставшийся клиент, такой как Postman или Paw, где вы можете выбрать "Аутентификация с базовым auth" (имя пользователя и пароль вашей родительской учетной записи SendGrid), а затем обновить запрос, чтобы добавить учетные данные родительской учетной записи, закодированные в заголовках. Мы рекомендуем выполнять аутентификацию с вашим именем пользователя и паролем только при обновлении разрешений вашего ключа API. Все остальные вызовы API должны проходить аутентификацию через ваш ключ API.

  1. Убедитесь, что когда вы делаете запрос, вы добавляете все области, которые вы хотите иметь ключ API. Например, если вы сделаете запрос и просто укажете "Categories.read" в качестве областей действия, у вас будет ключ только с областью "category.read". Обязательно перечислите все, что вы получаете от запроса на получение существующего ключа, в дополнение к новым областям, которые вы хотите добавить.
Другие вопросы по тегам