Jericho / StrongGrid

Strongly typed library for the entire SendGrid v3 API, including webhooks
175 stars 37 forks source link

Feature request: Verified senders endpoint #355

Open lukebooroo opened 3 years ago

lukebooroo commented 3 years ago

Hello,

Do you plan to support the verified senders endpoints?

https://sendgrid.api-docs.io/v3.0/sender-verification/domain-warn-list

:)

Jericho commented 3 years ago

Thanks for bringing this to my attention. Is this the new enhancement SendGrid announced in September 2020? It wasn't clear in the release notes that there was new API endpoints.

Jericho commented 3 years ago

I am a little confused though. What's the distinction between this new "verified senders" endpoint and the "sender identities" endpoint which StrongGrid already supports?

To make things more confusing, SendGrid apparently removed documentation for some of the endpoints in the old "sender identities" section. Only the "Create" endpoint is documented (there use to be a "Get" and "GetAll" endpoints as well): image

Are they phasing out the old "sender identities" endpoints and replacing them with the new "verified senders"?

Jericho commented 3 years ago

Also let's not forget the "legacy" sender identities.

This means that there are three ways to manage senders in the SendGrid API:

Jericho commented 3 years ago

I asked SendGrid for guidance on this. Let's see what they say.

lukebooroo commented 3 years ago

Honestly, I'm not too sure. I've since tried using endpoint I wanted myself for retrieving a list of known DMARC domains. It only returned gmail.com and yahoo.com. Contacted sendgrid, it turns out they've not actually finished making it work 🤷‍♂️.

So instead for the meantime, I've made a method which will check the DMARC DNS TXT record of a given domain. Probably better this way.

Jericho commented 3 years ago

I did a quick comparison between "legacy sender identities" (which StrongGrid still supports but probably not for much longer), "sender identities" (which is what StrongGrid currently supports) and "sender verification" (which is the 'new' functionality you pointed out to me)

Method Description Legacy Sender Identities Sender Verification
Create Create a new sender identity :white_check_mark: :white_check_mark: :white_check_mark:
Get Retrieve a sender identity :white_check_mark: :white_check_mark: :x:
GetAll Retrieve all the Sender Identities :white_check_mark: :white_check_mark: :white_check_mark:
Update Update an existing Sender Identity :white_check_mark: :x: :white_check_mark:
Delete Delete a Sender Identity :white_check_mark: :x: :white_check_mark:
Resend Resend a verification email to a specified Sender Identity :white_check_mark: :x: :white_check_mark:
GetDomainWarnList Get a list of domains known to implement DMARC :x: :x: :white_check_mark:
GetCompletedSteps Determine which of SendGrid’s verification processes have been completed :x: :x: :white_check_mark:
VerifyRequest Verify a sender request :x: :x: :white_check_mark:

I did some testing over the weekend: I created a sender identity with the new endpoint and I did not detect any difference with a sender identity created with the 'sender identity' endpoint.

The new endpoints seem to support the basic functionality provided by the "old" endpoints (with the exception of Get but that can be easily worked around by invoking GetAll and filtering the result for the desired identity) and it seems to provide useful additional functionality such as update, delete, resend, etc.

All this to say that it probably make sense for StrongGrid to use the 'new' endpoints rather than the 'old' endpoints.

Having said that there just one thing that bothers me: the GetDomainWarnList method seems out of place. Since it returns a list of domains, I feel like it would make more sense to include this functionality in StrongGrid's SenderAuthentication resource which deals with domains rather that the SenderIdentities resource.

lukebooroo commented 3 years ago

I think the reason that they've bundled it with verifying a single sender rather than a domain, is that you wouldn't allow someone to verify a single sender at a domain which implements DMARC. When verifying a domain you wouldn't need to check since you're adding to the DNS records.

Jericho commented 3 years ago

hummm. Makes sense so I'll leave the GetDomainWarnList with the SenderIdentities resource.

Jericho commented 3 years ago

While we wait for SendGrid's guidance, I took a stab at replacing the "Sender Identities" endpoints with the "Sender Verification" endpoints. I included a new method to retrieve the list of domains that are known to implement DMARC but I named the method "GetDmarcDomains" rather than "GetDomainWarnList". Let me know if you agree that this name is more clear,

I uploaded a prerelease package to my MyGet feed. It would be great if you could help me test it.