-
Notifications
You must be signed in to change notification settings - Fork 115
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: added API endpoint to download logs, updated email verbiage, sy…
…nc locales
- Loading branch information
Showing
34 changed files
with
1,217 additions
and
79 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,8 @@ | |
* [Errors](#errors) | ||
* [Localization](#localization) | ||
* [Pagination](#pagination) | ||
* [Logs](#logs) | ||
* [Retrieve logs](#retrieve-logs) | ||
* [Account](#account) | ||
* [Create account](#create-account) | ||
* [Retrieve account](#retrieve-account) | ||
|
@@ -105,6 +107,45 @@ Our service is translated to over 25 different languages. All API response messa | |
If you would like to be notified when pagination is available, then please email <[email protected]>. | ||
|
||
|
||
## Logs | ||
|
||
### Retrieve logs | ||
|
||
Our API programmatically allows you to download logs for your account. Submitting a request to this endpoint will process all logs for your account and email them to you as an attachment ([Gzip](https://en.wikipedia.org/wiki/Gzip) compressed [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) spreadsheet file) once complete. | ||
|
||
This allows you to create background jobs with a [Cron job](https://en.wikipedia.org/wiki/Cron) or using our [Node.js job scheduling software Bree](https://github.com/breejs/bree) to receive logs whenever you desire. Note that this endpoint is limited to `10` requests per day. | ||
|
||
The attachment is the lowercase form of `email-deliverability-logs-YYYY-MM-DD-h-mm-A-z.csv.gz` and the email itself contains a brief summary of the logs retrieved. You can also download logs at any time from [My Account → Logs](/my-account/logs) | ||
|
||
> `GET /v1/logs/download` | ||
| Querystring Parameter | Required | Type | Description | | ||
| --------------------- | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------- | | ||
| `domain` | No | String (FQDN) | Filter logs by fully qualified domain ("FQDN"). If you do not provide this then all logs across all domains will be retrieved. | | ||
| `q` | No | String | Search for logs by email, domain, alias name, IP address, or date (`M/Y`, `M/D/YY`, `M-D`, `M-D-YY`, or `M.D.YY` format). | | ||
|
||
> Example Request: | ||
```sh | ||
curl -X POST BASE_URI/v1/logs/download \ | ||
-u API_TOKEN: | ||
``` | ||
|
||
> Example Cron job (at midnight every day): | ||
```sh | ||
0 0 * * * /usr/bin/curl BASE_URI/v1/logs/download -u API_TOKEN: &>/dev/null | ||
``` | ||
|
||
Note that you can use services such as [Crontab.guru](https://crontab.guru/) to validate your cron job expression syntax. | ||
|
||
> Example Cron job (at midnight every day **and with logs for previous day**): | ||
```sh | ||
0 0 * * * /usr/bin/curl BASE_URI/v1/logs/download?q=`date -v-1d -u "+%-m/%-d/%y"` -u API_TOKEN: &>/dev/null | ||
``` | ||
|
||
|
||
## Account | ||
|
||
### Create account | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,32 +21,110 @@ block content | |
= t("No, we only send it the first time as a courtesy.") | ||
.p-3 | ||
h2.h5= t("Why are you sending this email?") | ||
p.card-text | ||
p.card-text.small | ||
!= t("It is a widely known issue that <u>only</u> happens when you send an email to yourself <i>as</i> yourself.") | ||
= " " | ||
= t('The emails do not show up twice in your inbox because they have the same "Message-ID" value in the email headers.') | ||
= " " | ||
= t("If you're using a service such as Gmail, then the email will only be shown in your Sent folder.") | ||
= " " | ||
= t("We are simply letting you know in advance of this issue!") | ||
a.btn.btn-lg.btn-danger( | ||
a.btn.btn-sm.btn-danger( | ||
href="https://support.google.com/a/answer/1703601", | ||
target="_blank", | ||
rel="noopener noreferrer" | ||
) | ||
= t("Read the official Gmail answer") | ||
.p-3 | ||
h2.h5= t("Is there a workaround?") | ||
p.card-text | ||
= t("We spent a lot of time researching, testing, and implementing alternatives since 2017.") | ||
= " " | ||
= t("Unfortunately we did not discover any reasonable alternatives that respect privacy and security.") | ||
!= "→" | ||
.p-3 | ||
h2.h5= t("What is the technical reason?") | ||
h2= t("What is Forward Email?") | ||
p.card-text | ||
= t('The core reason why this happens is because emails with duplicate "Message-ID" headers only show up once in the inbox.') | ||
p.card-text | ||
!= t('In the past we had a workaround where we rewrote the "Message-ID" and removed the "DKIM-Signature" header.') | ||
!= t('For <span class="notranslate">%d</span> years and counting, we are the go-to email service for hundreds of thousands of creators, developers, and businesses.', dayjs().endOf("year").diff(dayjs("1/1/17", "M-D/YY"), "year")) | ||
= " " | ||
= t('This workaround led to a confusing "Be careful with this message" alert and sometimes marked it as spam in Gmail.') | ||
!= t('Send and receive email as <span class="notranslate font-weight-bold text-nowrap">[email protected]</span>.') | ||
ul.list-unstyled.text-left.mb-3.d-inline-block.mx-auto | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("Unlimited domains and aliases") | ||
= " " | ||
span.badge.badge-success | ||
= t("100% Free") | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("Privacy-focused email") | ||
= " " | ||
a.badge.badge-dark.align-middle( | ||
href=`${config.urls.web}/privacy` | ||
) | ||
= t("Privacy Policy") | ||
= " " | ||
!= "→" | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("Send outbound SMTP email") | ||
= " " | ||
a.badge.badge-dark( | ||
href=`${config.urls.web}/guides/send-email-with-custom-domain-smtp` | ||
) | ||
= t("SMTP Guide") | ||
= " " | ||
!= "→" | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("Error logs and real-time alerts") | ||
= " " | ||
a.badge.badge-dark( | ||
href=`${config.urls.web}/faq#do-you-store-error-logs` | ||
) | ||
= t("View FAQ") | ||
= " " | ||
!= "→" | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("Powered by bare metal servers") | ||
= " " | ||
a.badge.badge-dark( | ||
href="https://status.forwardemail.net", | ||
target="_blank", | ||
rel="noopener noreferrer" | ||
) | ||
= t("Status Page") | ||
= " " | ||
!= "→" | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("100% open-source software") | ||
= " " | ||
a.badge.badge-dark( | ||
href="https://github.com/forwardemail", | ||
target="_blank", | ||
rel="noopener noreferrer" | ||
) | ||
= t("View") | ||
= " " | ||
= t("GitHub") | ||
= " " | ||
!= "→" | ||
li | ||
= emoji("white_check_mark") | ||
= " " | ||
= t("Email API designed for developers") | ||
= " " | ||
a.badge.badge-dark( | ||
href=`${config.urls.web}/email-api` | ||
) | ||
= t("Email API") | ||
= " " | ||
!= "→" | ||
a.btn.btn-lg.btn-success.text-uppercase.font-weight-bold( | ||
href=config.urls.web | ||
) | ||
= t("Try for free") | ||
.card-footer.small.text-muted= t("If you have any questions or comments, then please let us know.") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.