This is a private Node.js Express app that hosts the Support Server https://support.[domain]
. It contains tools for the Support and Customer Service team to do their work, such as looking up user subscription information. All actions are logged, and every action taken on the Support Server involving a user sends an email notification to the user it affects. It is not viewable to the public and has strict security groups.
- Run the Support CloudFormation and all its prerequisites
The POST /signin
API returns a session cookie. Use the cookie on requests that require authentication. Usually, your HTTP request framework will automatically save this cookie. If the cookie expires or server returns 401, request a new cookie.
Request
GET /signin
Request
POST /signin
Name | Type | Description |
---|---|---|
email |
string |
Required User email. |
password |
string |
Required User password. |
Response
Set-Cookie: <Cookie with Expiration Time>
Request
GET /logout
Response
Redirects to /signin
Request
GET /signup
Request
POST /signup
Name | Type | Description |
---|---|---|
email |
string |
Required Email to use to create the user. It must end in the same domain as the current service's domain. |
password |
string |
Required User password. |
Response
Redirect to /signup-success
Request
GET /confirm-email
Name | Type | Description |
---|---|---|
code |
string |
Required Code that confirms a user is the owner of an email address to complete email signup. |
Response
Redirect to /signin
Request
GET /resend-confirm-code
Request
POST /resend-confirm-code
Name | Type | Description |
---|---|---|
email |
string |
Required Email to resend confirmation code to. |
Response
Redirect to /signin
Request
Authentication Required
GET /support
Request
Authentication Required
GET /change-password
Request
Authentication Required
POST /change-password
Name | Type | Description |
---|---|---|
currentPassword |
string |
Required User's current password. |
newPassword |
string |
Required User's new password. |
Response
Redirect to /support
Request
Authentication Required
POST /get-subscriptions-with-email
Name | Type | Description |
---|---|---|
email |
string |
Required The email to look up. |
reason |
string |
Required The reason you are looking upthis user's subscriptions. |
Response
JSON-formatted user subscriptions, with sensitive info filtered out.
Request
Authentication Required
POST /get-user-with-email
Name | Type | Description |
---|---|---|
email |
string |
Required The email to look up. |
reason |
string |
Required The reason you are looking upthis user's subscriptions. |
Response
JSON-formatted user's info, with sensitive info filtered out.
This uses EMAIL_SALT to hash the email in the request.
Request
Authentication Required
POST /get-hashed-email
Name | Type | Description |
---|---|---|
email |
string |
Required The email to hash. |
reason |
string |
Required The reason you are looking up the hash of this user's email. |
Response
{
hashedEmail: <email hash>
}
Request
Authentication Required
POST /get-email-with-stripe-id
Name | Type | Description |
---|---|---|
stripeId |
string |
Required The Stripe Id. |
reason |
string |
Required The reason you are looking up the hash of this user's email. |
Response
{
email: <email>
}
Request
Authentication Required
POST /get-email-with-user-id
Name | Type | Description |
---|---|---|
userId |
string |
Required The User Id. |
reason |
string |
Required The reason you are looking up the user's email. |
Response
{
email: <email>
}
Request
Authentication Required
POST /get-stripe-id-with-email
Name | Type | Description |
---|---|---|
email |
string |
Required The user email. |
reason |
string |
Required The reason you are looking up the user's Stripe ID. |
Response
{
stripeId: <Stripe ID>
}
Request
GET /error-test
Request
GET /health
Response
Status 200
{
message: "OK from Support"
}
If you have any questions, concerns, or other feedback, please let us know any feedback in Github issues or by e-mail.
We also have a bug bounty program -- please email [email protected] for details.
This project is licensed under the GPL License - see the LICENSE.md file for details