I was able to dump a NodeJS request to use as a formatting example. It has the wrong vapid key for theso it is not a truly valid request but it at the very least helps me know what a properly formatted request would look like.
After installing NodeJS and implementing webpush library from github they suggest this example code:
web-push send-notification --endpoint=<url> [--key=<browser key>] [--auth=<auth secret>] [--payload=<message>] [--encoding=<aesgcm | aes128gcm>] [--ttl=<seconds>] [--vapid-subject=<vapid subject>] [--vapid-pubkey=<public key url base64>] [--vapid-pvtkey=<private key url base64>] [--gcm-api-key=<api key>]
Using and end point like this:
{
"keys": {
"auth": "onlL99713-BCAoL_DPhvJQ",
"p256dh": "BL-i_oiFNrnPKF-YOS5nYVnbuk6rr08N5dw3jt6Y54wnNYzNBh-ZAVq2irQO-MevL98UA_Hs38dvCXiCuqiO7_4"
},
"endpoint": "https://dm3p.notify.windows.com/w/?token=BQYAAAD3J7bC6KD6jAlhEl2QLnmI8ErHyxNWInjTTebaLQOFAjXiYe%2fy57v2vulXaThEdb8CV2TIB12FPLzBgY9P5WdbujcjRbjMNUwd5WWBDb%2bb8iVF0Omc7odUOgG8v%2fPsTPQxXjLMB7KSjETyA5tbefP2%2bDo5Dz0xxqHD7JOzjibgRbLFaFIhWxVPyy4hQ3KOzXfpudIPS2xc4XK1CC9tYKX%2fLQgXjAeY7lndGFPlpE%2fnPX9IXcf6pCW%2fCqGEEjA3wVP9AK1XOxrIbeG544%2fB3sYstT8SMAhq94Fdi5FFZyMFMN%2f0n5l9fFy6kh9XjRgLp6piCxIZ4sqzrUFF%2b3uJh1tq",
"expirationTime": null
}
I tried this test (substituting my server as the target endpoint address “www.example.com/jonathan/test4” … no, I do not own example.com)
web-push send-notification --endpoint=https://www.example.com/jonathan/test4 --key=QkZNOWpIMlctWW1CUlBZenFROUMyZTh0eFM3MzQ4YklBWWpRcFY4WkN0YWNUNXl2Zk1BMUgwMEQyS1dfaXJUbUMydjE2eUpDSTZiU3BTbjhyNWR4S0hj --auth=NnBMQlVHQzRUQlZTb19tVTc4cFJGQQ --payload=aGVsbG8gc3RyaW5nIGlzIGhlcmU --encoding=aes128gcm --ttl=500 --vapid-subject=https://www.example.com --vapid-pubkey=QkZTanVvNlpScEFyUExfR1pmRW5vVERkcUJEaERsQkZGcVI2ZWVYQ29ObVdfcHRjU1Y4RTBMN2MxT3ExWE16eHZyLUhhcGJGdHA1X1BmQkNhenhLSzc0 --vapid-pvtkey=LW9UdHZja2xsdDdmTFN1M09wY3ZGVFlHQ01naUlpdGNqc2ZsZzUzbFJmcw > result.json
NodeJS made a request like this:
{
"method": "POST",
"content": "OEUM2wiIWk8pGwlnkkJOpQAAEABBBM3YebNcTwW2e4xVoXD0xdR4hn5O7mPZUQWwdvT38oiLsnhKB95Noqd4HCOBM8wh76ML9rP3DrpgeJfTQMELUjsD3nWBbP3DeEcsvEKfoAoAwDITC3tqSMptINKbl1XFNRrkrOtT",
"protocol": "HTTP/1.1",
"headers": {
"x-tomcat-docroot": "/var/www/example.com/webroot",
"x-forwarded-host": "www.example.com",
"connection": "close",
"host": "www.example.com",
"ttl": "500",
"content-type": "application/octet-stream",
"content-encoding": "aes128gcm",
"authorization": "vapid t=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwczovL3d3dy5leHBlcnRhdXRvY2hlY2suY29tIiwiZXhwIjoxNTgwMTIwODQ3LCJzdWIiOiJodHRwczovL3d3dy5leHBlcnRhdXRvY2hlY2suY29tIn0.g1yENA-RpPVDeWhg3xe5VBQflTErz8aSXTOBMb2txGyBp5-S2pODFBARLVdlzuqrvHQfCSfd_Xj-_5w3ZfNkTg, k=BFSjuo6ZRpArPL_GZfEnoTDdqBDhDlBFFqR6eeXCoNmW_ptcSV8E0L7c1Oq1XMzxvr-HapbFtp5_PfBCazxKK74",
"content-length": "123"
}
}