Initial commit: Bitwarden export to PDF renderer

Adds the render.py WeasyPrint renderer, the pod-based bitwarden-print.sh
wrapper, a Containerfile, a sample export (JSON + PDF), README and LICENSE.
This commit is contained in:
juergen committed 2026-11-13 14:09:10 +01:00
commit 41385b35e6
8 files changed
+1041

No files matched your search

+173
View File
@@ -0,0 +1,173 @@
{
"encrypted": false,
"folders": [
{ "id": "f1b2c3d4-0000-4000-8000-000000000001", "name": "Work" },
{ "id": "f1b2c3d4-0000-4000-8000-000000000002", "name": "Personal" },
{ "id": "f1b2c3d4-0000-4000-8000-000000000003", "name": "Infrastructure" }
],
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"organizationId": null,
"folderId": "f1b2c3d4-0000-4000-8000-000000000001",
"type": 1,
"name": "GitHub",
"notes": "Recovery codes are in the safe.\n2FA enforced on the org.",
"favorite": true,
"reprompt": 1,
"login": {
"uris": [
{ "match": null, "uri": "https://github.com/login" },
{ "match": 0, "uri": "https://gist.github.com" }
],
"username": "jdoe@example.com",
"password": "correct-horse-battery-staple",
"totp": "otpauth://totp/GitHub:jdoe?secret=JBSWY3DPEHPK3PXP",
"passwordRevisionDate": "2024-03-11T09:12:44.000Z"
},
"collectionIds": null,
"creationDate": "2019-05-02T14:22:10.000Z",
"revisionDate": "2024-03-11T09:12:44.000Z",
"deletedDate": null,
"fields": [
{ "name": "recovery email", "value": "recovery@example.com", "type": 0, "linkedId": null },
{ "name": "PIN", "value": "4711", "type": 1, "linkedId": null }
],
"passwordHistory": [
{ "lastUsedDate": "2023-11-01T08:00:00.000Z", "password": "old-secret-1" },
{ "lastUsedDate": "2022-06-15T08:00:00.000Z", "password": "old-secret-0" }
],
"attachments": [
{
"id": "att-0001",
"fileName": "recovery-codes.txt",
"size": "482",
"sizeName": "482 bytes",
"url": "https://vault.example/attachments/att-0001"
}
]
},
{
"id": "22222222-2222-4222-8222-222222222222",
"organizationId": "org-1",
"folderId": "f1b2c3d4-0000-4000-8000-000000000001",
"type": 1,
"name": "Internal wiki",
"notes": null,
"favorite": false,
"reprompt": 0,
"login": {
"uris": [{ "match": 0, "uri": "https://wiki.internal.example" }],
"username": "svc-wiki",
"password": "S3cr3t!wiki#2024",
"totp": null
},
"collectionIds": ["col-1"],
"creationDate": "2021-01-07T10:00:00.000Z",
"revisionDate": "2024-09-30T16:45:00.000Z",
"fields": null,
"passwordHistory": null,
"attachments": null
},
{
"id": "33333333-3333-4333-8333-333333333333",
"organizationId": null,
"folderId": "f1b2c3d4-0000-4000-8000-000000000002",
"type": 3,
"name": "Visa Business",
"notes": "Expires 2027, travel card.",
"favorite": false,
"reprompt": 0,
"card": {
"cardholderName": "Jane Doe",
"brand": "Visa",
"number": "4111111111111111",
"expMonth": "9",
"expYear": "2027",
"code": "123"
},
"creationDate": "2020-02-02T12:00:00.000Z",
"revisionDate": "2023-04-18T07:30:00.000Z",
"fields": []
},
{
"id": "44444444-4444-4444-8444-444444444444",
"organizationId": null,
"folderId": "f1b2c3d4-0000-4000-8000-000000000002",
"type": 4,
"name": "Passport",
"notes": null,
"favorite": false,
"reprompt": 0,
"identity": {
"title": "Dr.",
"firstName": "Jane",
"middleName": "Q.",
"lastName": "Doe",
"address1": "1 Example Street",
"address2": "Apt 4",
"address3": "",
"city": "Springfield",
"state": "IL",
"postalCode": "62704",
"country": "United States",
"company": "Example GmbH",
"email": "jane@example.com",
"phone": "+1 555 0100",
"ssn": "000-00-0000",
"username": "jdoe",
"passportNumber": "X1234567",
"licenseNumber": "D-998877"
},
"creationDate": "2018-08-08T08:08:08.000Z",
"revisionDate": "2022-12-24T18:00:00.000Z"
},
{
"id": "55555555-5555-4555-8555-555555555555",
"organizationId": null,
"folderId": "f1b2c3d4-0000-4000-8000-000000000003",
"type": 2,
"name": "Router recovery phrase",
"notes": "word word word word word word word word",
"favorite": false,
"reprompt": 0,
"secureNote": { "type": 0 },
"creationDate": "2023-03-03T03:03:03.000Z",
"revisionDate": "2023-03-03T03:03:03.000Z",
"fields": [
{ "name": "admin password", "value": "admin-router-pass", "type": 1, "linkedId": null }
]
},
{
"id": "66666666-6666-4666-8666-666666666666",
"organizationId": null,
"folderId": "f1b2c3d4-0000-4000-8000-000000000003",
"type": 5,
"name": "deploy@build-host",
"notes": "Key used by CI.",
"favorite": false,
"reprompt": 0,
"sshKey": {
"privateKey": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAA\n-----END OPENSSH PRIVATE KEY-----",
"publicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExample deploy@build-host",
"fingerprint": "SHA256:abcdefghijklmnopqrstuvwxyz0123456789",
"keyFingerprint": "SHA256:abcdefghijklmnopqrstuvwxyz0123456789"
},
"creationDate": "2024-01-15T09:00:00.000Z",
"revisionDate": "2024-01-15T09:00:00.000Z",
"fields": null,
"attachments": null,
"unknownTopLevelKey": "kept because every value must be printed",
"extraObject": { "nested": { "flag": true, "count": 3 }, "emptyList": [], "emptyObject": {} }
}
],
"collections": [
{
"id": "col-1",
"organizationId": "org-1",
"name": "Shared infra",
"externalId": null,
"readOnly": false
}
]
}