{"id":31847926,"url":"https://github.com/wireapp/legalhold","last_synced_at":"2026-07-24T04:31:15.283Z","repository":{"id":47698141,"uuid":"179455582","full_name":"wireapp/legalhold","owner":"wireapp","description":"Legal Hold service for Wire messenger","archived":false,"fork":false,"pushed_at":"2026-05-19T10:34:07.000Z","size":20457,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"staging","last_synced_at":"2026-05-19T13:19:45.408Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wireapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-04-04T08:29:59.000Z","updated_at":"2026-05-19T10:34:05.000Z","dependencies_parsed_at":"2024-02-05T10:27:37.450Z","dependency_job_id":"a34d1297-95d5-4f2f-80b7-14017727ec69","html_url":"https://github.com/wireapp/legalhold","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/wireapp/legalhold","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Flegalhold","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Flegalhold/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Flegalhold/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Flegalhold/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wireapp","download_url":"https://codeload.github.com/wireapp/legalhold/tar.gz/refs/heads/staging","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Flegalhold/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35827724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-24T02:00:07.870Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-12T09:58:33.452Z","updated_at":"2026-07-24T04:31:15.266Z","avatar_url":"https://github.com/wireapp.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is Legal Hold Service for Wire.\n\n## Environment variables\n- SERVICE_TOKEN: \u003cmandatory\u003e. Must be set to some random value (at least 16 alphanumeric chars)\n- WIRE_API_HOST: \u003coptional\u003e. Your Wire Backend host. Default: https://prod-nginz-https.wire.com\n- CORE_CRYPTO_PASSWORD: \u003cmandatory\u003e. Your MLS folder password\n- DB_DRIVER: \u003coptional\u003e. Default: org.postgresql.Driver\n- DB_URL: \u003coptional\u003e. Default: jdbc:postgresql://localhost/legalhold\n- DB_USER: \u003coptional\u003e\n- DB_PASSWORD: \u003coptional\u003e\n\n## Build the code\ndocker build -t $DOCKER_USERNAME/legalhold .\n\n## Prebuilt Docker images (public):\nhttps://quay.io/repository/wire/legalhold?tab=tags\n\n## Run docker container (example)\n```\ndocker run \\\n-e DB_URL='jdbc:postgresql://localhost/legalhold' \\\n-e DB_USER='admin' \\\n-e DB_PASSWORD='s3cret' \\\n-e SERVICE_TOKEN='secr3t' \\\n-e CORE_CRYPTO_PASSWORD='secr3t' \\\n-p 80:8080 \\\n--name secure-hold --rm quay.io/wire/legalhold:1.0.4\n``` \n\n## Docker Compose\n```\ndocker compose up --build app\n```\n\n## Outbound traffic\n- GET https://prod-nginz-https.wire.com/notifications\n- GET https://prod-nginz-https.wire.com/legalhold/conversations\n- GET https://prod-nginz-https.wire.com/users\n\n## Endpoints that need to be accessible from Wire Server\n- POST    /initiate\n- POST    /confirm\n- POST    /remove\n\n## Endpoints visible internally (port 8080)\n- GET     /metrics\n- POST    /authorize\n- GET     /index.html \n- GET     /devices.html \n- GET     /conv/{conversationId} \n- GET     /events/{conversationId}\n- GET     /status (com.wire.bots.hold.monitoring.StatusResource)\n- GET     /swagger (io.federecio.dropwizard.swagger.SwaggerResource)\n- GET     /swagger.{type:json|yaml} (io.swagger.jaxrs.listing.ApiListingResource)\n\n## Database format (Events table)\n  EventId\t| Type\t| Time\t| Payload\n  ------- | ----- | ----- | -------------\ncba19d4f-1683-4999-8f88-674048919c8f |\tconversation.otr-message-add.asset-data\t| 2021-07-11 19:54:33.782647|\t{\"eventId\":\"a6fb04dd-e281-11eb-8002-22000a0e7660\",\"messageId\":\"baac4fdc-3ad1-4402-aaa9-b2ae1bf60080\",\"conversationId\":\"0c7b391e-737e-471c-8f0c-f0a1b4f40308\",\"clientId\":\"1c07cb700248848d\",\"userId\":\"cf65f307-5c00-4afc-911b-f6b91bcc0921\",\"time\":\"2021-07-11T19:53:24.495Z\",\"assetId\":\"3-1-e1f4bbed-8f84-4cd1-8b3d-5c1d652a5568\",\"assetToken\":\"\",\"otrKey\":\"KhgsmyM2paiMIR7HnNjwubWjSKocSCcM0P/qoTYJJfo=\",\"sha256\":\"zzHz/1iqMkdU8B3eU7b5EB4aXNdJiLFSfzw9Lee8QOc=\"}\n9ab4f996-3c33-4c4b-9872-628dccebacb6 |\tconversation.otr-message-add.image-preview\t| 2021-07-11 19:54:33.772223 |\t{\"eventId\":\"a6fb04dd-e281-11eb-8002-22000a0e7660\",\"messageId\":\"baac4fdc-3ad1-4402-aaa9-b2ae1bf60080\",\"conversationId\":\"0c7b391e-737e-471c-8f0c-f0a1b4f40308\",\"clientId\":\"1c07cb700248848d\",\"userId\":\"cf65f307-5c00-4afc-911b-f6b91bcc0921\",\"time\":\"2021-07-11T19:53:24.495Z\",\"mimeType\":\"image/png\",\"size\":2746,\"name\":\"\",\"width\":500,\"height\":500}\n92a067eb-70fe-4c4e-89f2-629af98590f9 | conversation.otr-message-add.new-text | 2021-07-11 19:54:33.618655 | {\"eventId\":\"a6643b34-e281-11eb-8002-22000a0e7660\",\"messageId\":\"1c7f70e8-342d-4aac-8d6e-aacd7babbfb2\",\"conversationId\":\"0c7b391e-737e-471c-8f0c-f0a1b4f40308\",\"clientId\":\"1c07cb700248848d\",\"userId\":\"cf65f307-5c00-4afc-911b-f6b91bcc0921\",\"time\":\"2021-07-11T19:53:23.508Z\",\"expireAfterMillis\":10000,\"text\":\"https://s3-eu-west-1.amazonaws.com/linkpreview.html\",\"mentions\":[]}\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwireapp%2Flegalhold","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwireapp%2Flegalhold","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwireapp%2Flegalhold/lists"}