This repository contains a Python script and GitHub Actions workflow that submits an application to B12 via a signed HTTP POST request, executed from continuous integration.
The submission is triggered manually, runs in GitHub Actions, and posts a cryptographically signed, canonical JSON payload to the B12 application endpoint. The CI run itself serves as verifiable proof of execution.
The application submission works as follows:
- A GitHub Actions workflow is manually triggered.
- The workflow runs a Python script.
- The script:
- Constructs a required JSON payload
- Canonicalizes it (sorted keys, compact formatting, UTF-8)
- Signs it using HMAC-SHA256
- Sends it via POST to the B12 endpoint
- On success, the CI logs print a receipt, which confirms submission.
.
├── submit_application.py
├── .github/
│ └── workflows/
│ └── submit.yml
└── README.md
- Python 3.9+
- GitHub Actions (or another CI system with equivalent environment variables)
- Internet access from CI
Python dependencies: - requests
The script submits a JSON payload with the following required fields:
{
"timestamp": "ISO 8601 timestamp (UTC)",
"name": "Your name",
"email": "you@example.com",
"resume_link": "https://pdf-or-html-or-linkedin.example.com",
"repository_link": "https://github.com/your/repo",
"action_run_link": "https://github.com/your/repo/actions/runs/<run_id>"
}Each request includes a signature header:
X-Signature-256: sha256=<hex-digest>
The signature is computed using HMAC-SHA256 over the raw UTF-8 encoded JSON body.
Trigger the workflow manually from the Actions tab in GitHub.
On success, the logs will print a submission receipt.
Provided solely for submitting an application to B12.