Skip to content

[WPB-22549] fix logic around members with user type app and no user identity#5029

Merged
fisx merged 11 commits intodevelopfrom
WPB-22549-events-debugging-2
Feb 20, 2026
Merged

[WPB-22549] fix logic around members with user type app and no user identity#5029
fisx merged 11 commits intodevelopfrom
WPB-22549-events-debugging-2

Conversation

@fisx
Copy link
Contributor

@fisx fisx commented Feb 13, 2026

Checklist

  • Add a new entry in an appropriate subdirectory of changelog.d
  • Read and follow the PR guidelines

@fisx fisx force-pushed the WPB-22549-events-debugging-2 branch from b150ea4 to f7459ee Compare February 16, 2026 08:58
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Feb 16, 2026
@fisx fisx force-pushed the WPB-22549-events-debugging-2 branch 2 times, most recently from 60f0725 to 3bbfc76 Compare February 16, 2026 21:43
@fisx
Copy link
Contributor Author

fisx commented Feb 16, 2026

one2one conversations work! here is a shell script that may reproduce just the "member opens conv with app" case (not thoroughly tested):

curl -X 'POST' 'http://127.0.0.1:8082/i/users' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: example.com' --data-binary "$('{"email":"e7K8LkHN@example.com","icon":"default","name":"e7K8LkHN@example.com","password":"hunter2.","team":{"icon":"default","name":"integration test team"}}'| base64 -d)"
# ==> (201,"{\"accent_id\":0,\"assets\":[],\"email\":\"e7K8LkHN@example.com\",\"id\":\"c4a95d40-64bd-4c11-aa4b-090fa1537b52\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"e7K8LkHN@example.com\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"c4a95d40-64bd-4c11-aa4b-090fa1537b52\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"proteus\"],\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"type\":\"regular\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-55a7f39e95fa5ff485f3cf207e8390bf-fd848cc64a95bcd3-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","c4a95d40-64bd-4c11-aa4b-090fa1537b52"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/invitations' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52' --data-binary "$('{"email":"PptVBfMwDt@example.com","role":"member"}'| base64 -d)"
# ==> (201,"{\"created_at\":\"2026-02-16T23:17:37.928Z\",\"created_by\":\"c4a95d40-64bd-4c11-aa4b-090fa1537b52\",\"email\":\"PptVBfMwDt@example.com\",\"id\":\"88a4c2da-59e2-48ca-827b-44e640163e56\",\"name\":null,\"role\":\"member\",\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"url\":null}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-d529d82638899ba6f3ce3bd3c59547cb-12225e1f15181021-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/invitations/88a4c2da-59e2-48ca-827b-44e640163e56"),("Vary","Accept-Encoding")])

curl -X 'GET' 'http://127.0.0.1:8082/i/teams/invitation-code?team=c9b89c21-33a1-4f02-8df9-27f1e7fef9ab&invitation_id=88a4c2da-59e2-48ca-827b-44e640163e56' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52'
# ==> (200,"{\"code\":\"-Z3ElpUDfcqBK-4A41mSXbHCW9sjTXy5\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-c2db7b388218a76b99e46deba99fbdd4-bdeaa4c040e83838-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/invitations' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52' --data-binary "$('{"email":"xZpU0diUTVriMa@example.com","role":"member"}'| base64 -d)"
# ==> (201,"{\"created_at\":\"2026-02-16T23:17:37.928Z\",\"created_by\":\"c4a95d40-64bd-4c11-aa4b-090fa1537b52\",\"email\":\"xZpU0diUTVriMa@example.com\",\"id\":\"1700509e-0b54-4540-a458-e4e21c91f7ea\",\"name\":null,\"role\":\"member\",\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"url\":null}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-feedca4cf24951e2c8832082ad9e77ab-09717c0c24613287-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/invitations/1700509e-0b54-4540-a458-e4e21c91f7ea"),("Vary","Accept-Encoding")])

curl -X 'GET' 'http://127.0.0.1:8082/i/teams/invitation-code?team=c9b89c21-33a1-4f02-8df9-27f1e7fef9ab&invitation_id=1700509e-0b54-4540-a458-e4e21c91f7ea' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52'
# ==> (200,"{\"code\":\"dAjZ9AZaU-J7DKIfAlGIFe-QzQCaxjp4\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-4967b958b1501f93c0d81913b76da0bd-27ee88ff2a8a3df8-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/register' -H 'Content-Type: application/json' -H 'X-Forwarded-For: 127.0.0.42' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52' --data-binary "$('{"email":"PptVBfMwDt@example.com","name":"PptVBfMwDt@example.com","password":"hunter2.","team_code":"-Z3ElpUDfcqBK-4A41mSXbHCW9sjTXy5"}'| base64 -d)"
# ==> (201,"{\"accent_id\":0,\"assets\":[],\"email\":\"PptVBfMwDt@example.com\",\"id\":\"88a4c2da-59e2-48ca-827b-44e640163e56\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"PptVBfMwDt@example.com\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"88a4c2da-59e2-48ca-827b-44e640163e56\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"proteus\"],\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"type\":\"regular\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-f68f53794ff1a5a4b2fb9eef66189b62-6cbba5b0644e3074-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Set-Cookie","zuid=CpAQ8bsBxJ4ye9T0ehjivTQolgks6DG0Tl5Zi43bV1x4AdeCdx-Jyb9ydoFsEt5Juippy340HMu3ns8IgXw5Dg==.v=1.k=1.d=1771283977.t=u.l=.u=88a4c2da-59e2-48ca-827b-44e640163e56.r=13022644; Path=/access; Expires=Mon, 16-Feb-2026 23:19:37 GMT; HttpOnly"),("Location","88a4c2da-59e2-48ca-827b-44e640163e56"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/register' -H 'Content-Type: application/json' -H 'X-Forwarded-For: 127.0.0.42' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52' --data-binary "$('{"email":"xZpU0diUTVriMa@example.com","name":"xZpU0diUTVriMa@example.com","password":"hunter2.","team_code":"dAjZ9AZaU-J7DKIfAlGIFe-QzQCaxjp4"}'| base64 -d)"
# ==> (201,"{\"accent_id\":0,\"assets\":[],\"email\":\"xZpU0diUTVriMa@example.com\",\"id\":\"1700509e-0b54-4540-a458-e4e21c91f7ea\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"xZpU0diUTVriMa@example.com\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"1700509e-0b54-4540-a458-e4e21c91f7ea\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"proteus\"],\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"type\":\"regular\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-3b55b8db024d11db22c4e456db2b2395-8202d6864bb78bec-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Set-Cookie","zuid=i-92AJjPmOJl44IM58KLkcuoMaOvSy8KvXtbfXu8Nv0mymTlHaJbiWEFOyQQh7L4kq27AkKmQeQjTKF2Q-ayAg==.v=1.k=1.d=1771283977.t=u.l=.u=1700509e-0b54-4540-a458-e4e21c91f7ea.r=15601cb; Path=/access; Expires=Mon, 16-Feb-2026 23:19:37 GMT; HttpOnly"),("Location","1700509e-0b54-4540-a458-e4e21c91f7ea"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8085/i/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/features/channels/unlocked' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52'
# ==> (200,"{\"lockStatus\":\"unlocked\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-ff32803e2f25c9abe0cd51ccc79cb89b-5124039c8ddea675-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8085/i/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/features/channels' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52' --data-binary "$('{"config":{"allowed_to_create_channels":"team-members","allowed_to_open_channels":"team-members"},"status":"enabled"}'| base64 -d)"
# ==> (200,"{\"config\":{\"allowed_to_create_channels\":\"team-members\",\"allowed_to_open_channels\":\"team-members\"},\"lockStatus\":\"unlocked\",\"status\":\"enabled\",\"ttl\":\"unlimited\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-67baa5065c6af386ab76f515b01c6175-0071d57cdb6dc2e2-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/teams/c9b89c21-33a1-4f02-8df9-27f1e7fef9ab/apps' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: c4a95d40-64bd-4c11-aa4b-090fa1537b52' --data-binary "$('{"app":{"accent_id":null,"assets":null,"category":"ai","description":"some description of this app","metadata":{},"name":"chappie","picture":null},"password":"hunter2."}'| base64 -d)"
# ==> (200,"{\"cookie\":\"I_uC4o82QM6_SSUnZSvlB32qkCiXzOh7-ALQJD0CLU4v2ldOv9TvRHsQ5LpUQqW100apWASYnDTW_Z4rFcoOCQ==.v=1.k=1.d=1771283977.t=u.l=.u=f1805e94-d7ca-4d83-8d03-acbf1b8cb418.r=dfd8ecc\",\"user\":{\"accent_id\":0,\"assets\":[],\"id\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"chappie\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"mls\"],\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"type\":\"app\"}}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-a7316416307e8f24c3425ed6e3c7419c-8c4bb548042caf2e-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/clients' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 1700509e-0b54-4540-a458-e4e21c91f7ea' --data-binary "$('{"capabilities":["legalhold-implicit-consent"],"label":"Test Device","lastkey":{"id":65535,"key":"pQABARn//wKhAFggnCcZIK1pbtlJf4wRQ44h4w7/sfSgj5oWXMQaUGYAJ/sDoQChAFgglacihnqg/YQJHkuHNFU7QD6Pb3KN4FnubaCF2EVOgRkE9g=="},"model":"Test Model","password":"hunter2.","prekeys":[{"id":1,"key":"pQABAQECoQBYIOjl7hw0D8YRNqkkBQETCxyr7/ywE/2R5RWcUPM+GJACA6EAoQBYILLf1TIwSB62q69Ojs/X1tzJ+dYHNAw4QbW/7TC5vSZqBPY="}],"type":"permanent"}'| base64 -d)"
# ==> (201,"{\"capabilities\":[\"legalhold-implicit-consent\"],\"id\":\"cc6e640e296e8bba\",\"label\":\"Test Device\",\"mls_public_keys\":{},\"model\":\"Test Model\",\"time\":\"2026-02-16T23:17:37.928Z\",\"type\":\"permanent\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-19c2cc13778e1db0c3a97ee2522e146a-709e0162bc73c2b6-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","cc6e640e296e8bba"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8082/v15/clients/cc6e640e296e8bba' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 1700509e-0b54-4540-a458-e4e21c91f7ea' --data-binary "$('{"mls_public_keys":{"ecdsa_secp256r1_sha256":"BBoXL9fj+3R+gkpIPCY+qwgwDASOxUxbuMnTGeBHTxfU5iBVEo51q2zHKqz+FYzljv2kIxUmhAnaLVuM/RYA2qU="},"prekeys":[]}'| base64 -d)"
# ==> (200,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-20dad6a37dcc5cf93c6aee794be346d0-91cc76a2ce3ec3c5-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/clients' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 88a4c2da-59e2-48ca-827b-44e640163e56' --data-binary "$('{"capabilities":["legalhold-implicit-consent"],"label":"Test Device","lastkey":{"id":65535,"key":"pQABARn//wKhAFggwO2any+CjiGP8XFYrY67zHPvLgp+ysY5k7vci57aaLwDoQChAFgglacihnqg/YQJHkuHNFU7QD6Pb3KN4FnubaCF2EVOgRkE9g=="},"model":"Test Model","password":"hunter2.","prekeys":[{"id":2,"key":"pQABAQICoQBYIGoXawUQWQ9ZW+MXhvuo9ALOBUjLff8S5VdAokN29C1OA6EAoQBYILLf1TIwSB62q69Ojs/X1tzJ+dYHNAw4QbW/7TC5vSZqBPY="}],"type":"permanent"}'| base64 -d)"
# ==> (201,"{\"capabilities\":[\"legalhold-implicit-consent\"],\"id\":\"7f59e059743e908f\",\"label\":\"Test Device\",\"mls_public_keys\":{},\"model\":\"Test Model\",\"time\":\"2026-02-16T23:17:37.928Z\",\"type\":\"permanent\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-71b6f9a3f766e065bd586c634a4089cc-26fdbb95f6510957-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","7f59e059743e908f"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8082/v15/clients/7f59e059743e908f' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: 7f59e059743e908f' -H 'Z-User: 88a4c2da-59e2-48ca-827b-44e640163e56' --data-binary "$('{"mls_public_keys":{"ecdsa_secp256r1_sha256":"BFpQp3itzWtRAtgtcZknjEne6PRXkqwyJYRog+Z+tUvb1MQjJFv3mStjTpr7viUpDXnxYt6Tu8nk5tX2dJtc2l8="},"prekeys":[]}'| base64 -d)"
# ==> (200,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-3ef8aff65eecda2f58b59c701fbcd5cd-c7cd1f2bc648b749-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/clients' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$('{"capabilities":["legalhold-implicit-consent"],"label":"Test Device","lastkey":{"id":65535,"key":"pQABARn//wKhAFggoChErA5oTI5JT769hJV+VINmU8kougGdYqGd2U7hPa8DoQChAFgglacihnqg/YQJHkuHNFU7QD6Pb3KN4FnubaCF2EVOgRkE9g=="},"model":"Test Model","password":"hunter2.","prekeys":[{"id":3,"key":"pQABAQMCoQBYIEjdt+YWd3lHmG8pamULLMubAMZw556IO8kW7s1MLFytA6EAoQBYILLf1TIwSB62q69Ojs/X1tzJ+dYHNAw4QbW/7TC5vSZqBPY="}],"type":"permanent"}'| base64 -d)"
# ==> (201,"{\"capabilities\":[\"legalhold-implicit-consent\"],\"id\":\"cba68bc1fc35a9a4\",\"label\":\"Test Device\",\"mls_public_keys\":{},\"model\":\"Test Model\",\"time\":\"2026-02-16T23:17:37.928Z\",\"type\":\"permanent\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-198e30b7185d696ae79ad6f52cac8909-9bd384e4209a2aa1-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","cba68bc1fc35a9a4"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8082/v15/clients/cba68bc1fc35a9a4' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$('{"mls_public_keys":{"ecdsa_secp256r1_sha256":"BKQnA+n+37uW/O1aQcRExXSWQqjkRK/2ea4bIwKRGsjNXQ+qGFp09ygTEidxBppChiwCcML0GZG7n2AxLL6m59w="},"prekeys":[]}'| base64 -d)"
# ==> (200,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-289027d23e204c5fa5910c4fa8cf464e-6c6075cb087f8a25-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/cc6e640e296e8bba' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 1700509e-0b54-4540-a458-e4e21c91f7ea' --data-binary "$('{"key_packages":["AAEAAkBBBJDokZzOo6TZ6obYgzbifFvEPJixGaRE+8RHdlaJJJg9mgX4Al7a5aaS6uResltkxMmbJNoBKWtOze9pAEcXUD1AQQTshEGT3r4gbmoVOFqIqIzMLOA8rgOpbUBMkp/FKP8nkS8AAjZpaXh3VA6cqlum2rMc5DO2jTOVJORCd0nWpiToQEEEGhcv1+P7dH6CSkg8Jj6rCDAMBI7FTFu4ydMZ4EdPF9TmIFUSjnWrbMcqrP4VjOWO/aQjFSaECdotW4z9FgDapQABQEExNzAwNTA5ZS0wYjU0LTQ1NDAtYTQ1OC1lNGUyMWM5MWY3ZWE6Y2M2ZTY0MGUyOTZlOGJiYUBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEYwRAIgHkMQ9svrODiK/UB23vLTmSCEr4UT+g9OCY/+QnCTNdECIEsBSQvHWcyqgItVeTkLVvqK1D7VE9+OyGkqm5JrN2oHAEBGMEQCIAe61RaCPkQKJW+SnFkyx4avaI+Hu2iNG5hGaSoV/oqfAiBKDIg94Jiv+M1O3cV8QHPfqUTKZg+T4D8y1HxIYrf6zw=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-d7218b3ba68423659f3125a8284f566b-03064ba855a70a5d-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/cc6e640e296e8bba' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 1700509e-0b54-4540-a458-e4e21c91f7ea' --data-binary "$('{"key_packages":["AAEAAkBBBJfJLUKzoH2j4SroXmp1v2U96PlGRHRKboo4bcaZhp3n50FDgdxRJKOrlB+AJgkFlpRUtR+9BM5bxfLVDVvCIM1AQQQ1kS/ZHX1Fz/T++07vRC994gD7+cj/2DR0Fjb7LlbpUq5Ma0pJ/0Mh5kYFE8ldJO11F4xvwTF0qVAcWx3A6ySXQEEEGhcv1+P7dH6CSkg8Jj6rCDAMBI7FTFu4ydMZ4EdPF9TmIFUSjnWrbMcqrP4VjOWO/aQjFSaECdotW4z9FgDapQABQEExNzAwNTA5ZS0wYjU0LTQ1NDAtYTQ1OC1lNGUyMWM5MWY3ZWE6Y2M2ZTY0MGUyOTZlOGJiYUBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEcwRQIgIA5AOTswFCgbHbj/hlSjxaN/92W2rwfgrsr2xjE2bHcCIQC+Y61cmxgGv3MwGWH5CJtdcDyNG0O8fMFca23/Tf1zDABARzBFAiBiyMmiEMkl8c9wig51PXk72UFkmX7NiPL3FIbx+Rf9jAIhAKxVoIEEuqjhzU95V9k6I+OpuiQl3X23XYZYTTYWQHQO"]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-7f15c13112e40e5e739f0d84d0788ff3-d254e41769d21066-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/7f59e059743e908f' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: 7f59e059743e908f' -H 'Z-User: 88a4c2da-59e2-48ca-827b-44e640163e56' --data-binary "$('{"key_packages":["AAEAAkBBBKsB3Yf+s0X82cwc4qx83mGdPTlnh7MIc2TQ/ZTUQ7OL/YsfAmxaXyKyPNbhVGtMhnarR3gohvDGhBKYkw2jAltAQQTjNFos0/apFjJH3neSAyJfysUy+xLaAZdAN46CEVKRBMWSp2so39E3BGm5ghp4sgUDPMQeghTAwXK3qLAe8aHUQEEEWlCneK3Na1EC2C1xmSeMSd7o9FeSrDIlhGiD5n61S9vUxCMkW/eZK2NOmvu+JSkNefFi3pO7yeTm1fZ0m1zaXwABQEE4OGE0YzJkYS01OWUyLTQ4Y2EtODI3Yi00NGU2NDAxNjNlNTY6N2Y1OWUwNTk3NDNlOTA4ZkBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEgwRgIhAPrVZ4vvv0KG8PMV5ElSC3IwxUX1eprFlxFut7xHIOKMAiEAsdpyDV3rrN6wzGVcxPNh5lSalAvXYAXyBk2LDzeRnv4AQEYwRAIgRJoqR8B4DFKIHgd835xnRGog83fQBf2T8MXAxT/2ty8CIFeMKf9quX5BxfEGR0uPix97TA1K0atHjVXg050WctaO"]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-7ae584ca86ce0ed972ecdaf6557e6db9-225c881755c25a3d-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/7f59e059743e908f' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: 7f59e059743e908f' -H 'Z-User: 88a4c2da-59e2-48ca-827b-44e640163e56' --data-binary "$('{"key_packages":["AAEAAkBBBPe2yNAt1ZZjEiHqntBUMbhLEL6eZQ8/WokzOQuc3YFh7O4rCkONpeNRL9SfZ7SJ0P7ryXOKJ6eJRPdYg3nMK+BAQQQlQG2NS7r/Oc5YpzXGNRbYynLCESbTbeWbLrYdl6YVMzZBLTLjcT6IYa3OHvhn8deUiSG7iS9t1qk/QIxuZ2jAQEEEWlCneK3Na1EC2C1xmSeMSd7o9FeSrDIlhGiD5n61S9vUxCMkW/eZK2NOmvu+JSkNefFi3pO7yeTm1fZ0m1zaXwABQEE4OGE0YzJkYS01OWUyLTQ4Y2EtODI3Yi00NGU2NDAxNjNlNTY6N2Y1OWUwNTk3NDNlOTA4ZkBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEgwRgIhAPWx45ljImEr6VbThkV1VHw7yhwMcOlfd0aOnKADQoxvAiEApoC8dpMVA6FeRv1H0zeAkG6o3csst4nUKC30J/VyPtwAQEcwRQIgB4+ClFvwMJPZKaRPUzL5Qpx3zOfAkZyz0Tw9/GvqLEcCIQDoL5jHeu9U2KK2IXaORo5WZseClm4fsyC0M4hqUVWvrg=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-b4ffbee0dcb386e5bef1c99b19c66da4-0f3d92bbec0c035d-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/cba68bc1fc35a9a4' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$('{"key_packages":["AAEAAkBBBOcMHwqO/SCL7u+NW4iv4Fy+MXOzQW0JnaCjxt9lf0XIN5/UgHwzyqBJ+wOqACtuXoYyOujiBzkXTVCDfFCVbhhAQQQ5X/Wa16UcSofPT36u4fHG8/K5UxhRKOUyJ6rWT7NOMBi3rS2Dun0QaRRpR+3IEDnSDUijVZMb3LiaZI2Sq4hsQEEEpCcD6f7fu5b87VpBxETFdJZCqOREr/Z5rhsjApEayM1dD6oYWnT3KBMSJ3EGmkKGLAJwwvQZkbufYDEsvqbn3AABQEFmMTgwNWU5NC1kN2NhLTRkODMtOGQwMy1hY2JmMWI4Y2I0MTg6Y2JhNjhiYzFmYzM1YTlhNEBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEgwRgIhAO0iiPcftVAeCSU/os2dhupTcE8bACbu0M3oEdjxzqRKAiEA3cCHtWC2HWaONVl3IglGREImPLanY21i6msFexTVarsAQEcwRQIhAMPNQrx/UOqQMu2wyJo2nZljgDOxGbUQV5xqWRLK0SrGAiBEtt6N87uw04KXMoBeb+8dRr3kntyAPOtVYu46r5xfKQ=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-3a3b10f9000dbc4b9998c80ecedee673-7e6795ce7f94e519-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/cba68bc1fc35a9a4' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$('{"key_packages":["AAEAAkBBBKqYkJnMfTvSxW/Z6q/nm/rLwJeTHNk4AdH4/PDxJZfNMT83SSvE9gb0CMeodmRV2yq4Fu9yDLgEikcpkh3xC7BAQQRFIbvgUZ48vPa8THxe5KKyAawVte3/DXMioL7unqE6kdOdYVuk913ZeeD61oh4H0QDHUIpWdTj4js3pjzMglIrQEEEpCcD6f7fu5b87VpBxETFdJZCqOREr/Z5rhsjApEayM1dD6oYWnT3KBMSJ3EGmkKGLAJwwvQZkbufYDEsvqbn3AABQEFmMTgwNWU5NC1kN2NhLTRkODMtOGQwMy1hY2JmMWI4Y2I0MTg6Y2JhNjhiYzFmYzM1YTlhNEBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEcwRQIhAIiCgBQEU89UE7ZVPuGxDT97mAtJfA1/VUVL+6OM1C3XAiB7e/0YwAQOywqdYiMa7h9LX7mpmH/yeWx/hnucGybFtwBASDBGAiEAliRnwPdCfb2OCjoKyW5+DXn3Yv2iXUrgBdgtA5TjLkICIQD4kbtP8TQrJhfiWP5Y3YTBH/tGiOEKAyw//x/v36IqBQ=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-4d96fc693f1074612ea4a7909bf7b12e-7de71d265123cd86-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8085/v15/conversations' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$('{"cells":false,"conversation_role":"wire_admin","group_conv_type":"channel","protocol":"mls","qualified_users":[],"team":{"managed":false,"teamid":"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab"}}'| base64 -d)"
# ==> (201,"{\"access\":[\"invite\"],\"access_role\":[\"team_member\",\"non_team_member\",\"service\"],\"add_permission\":\"everyone\",\"cells_state\":\"disabled\",\"creator\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\",\"epoch\":0,\"failed_to_add\":[],\"group_conv_type\":\"channel\",\"group_id\":\"AAEAAPpB40PNyUcXlnSBtYECrPUAZXhhbXBsZS5jb20=\",\"history\":null,\"last_event\":\"0.0\",\"last_event_time\":\"1970-01-01T00:00:00.000Z\",\"members\":{\"others\":[],\"self\":{\"conversation_role\":\"wire_admin\",\"hidden\":false,\"hidden_ref\":null,\"id\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\",\"otr_archived\":false,\"otr_archived_ref\":null,\"otr_muted_ref\":null,\"otr_muted_status\":null,\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\"},\"service\":null,\"status\":0,\"status_ref\":\"0.0\",\"status_time\":\"1970-01-01T00:00:00.000Z\"}},\"message_timer\":null,\"name\":null,\"parent\":null,\"protocol\":\"mls\",\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"fa41e343-cdc9-4717-9674-81b58102acf5\"},\"receipt_mode\":0,\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"type\":0}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-a40ad1b2cdb6e3c4e4dcff9870074d5a-cbfb493b4359ff0a-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","fa41e343-cdc9-4717-9674-81b58102acf5"),("Vary","Accept-Encoding")])

curl -X 'GET' 'http://127.0.0.1:8085/v15/mls/public-keys' -H 'Z-Connection: conn' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418'
# ==> (200,"{\"removal\":{\"ecdsa_secp256r1_sha256\":\"BM2QuZlkvI5F/kPc9Q7G36uQlMTm+4NoKpnuwTk1I3widFHC5DWS/ShuUNV5ADz1mUerLHHvkk8r79qKvtnWfkg=\",\"ecdsa_secp384r1_sha384\":\"BPT5FcoTfVxXF1hrNpWiljnT+dX1zXy5F2qgQ0G+3G4PqgO0m1TqgJL8e2R3wkQCtND1keqrXjjJGO5zd3YKq8mYQD+XMgGT3CfP6WCEWG8HhORIe+8vIQFz0Nm+FvgQRA==\",\"ecdsa_secp521r1_sha512\":\"BAHuvCV/+gJitvAbDwgrBHZJ41oy8Lc+wPIM7Yp6s/vTzTsGKlo7aMdkx6DUjv/56tVD9bZNulFAjwS8xoIyWg8NSAE1ofo8CBvN1XGZOWuMYjEhzLrZADduEnOvayw5sEvm135WC0vWjPJaYwKZPdDIXUz9ILJPgNe3gEUvHsDEXvdXlw==\",\"ed25519\":\"AnuybORA69WHHamcJ86YOLXLoczaBH2ABhBcWSomEEw=\"}}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-b9f1ce50dd35f67a5f3511ac9d332f47-c6bcc9b52bc50b2a-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/claim/example.com/88a4c2da-59e2-48ca-827b-44e640163e56?ciphersuite=0x0002' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418'
# ==> (200,"{\"key_packages\":[{\"client\":\"7f59e059743e908f\",\"domain\":\"example.com\",\"key_package\":\"AAEAAkBBBKsB3Yf+s0X82cwc4qx83mGdPTlnh7MIc2TQ/ZTUQ7OL/YsfAmxaXyKyPNbhVGtMhnarR3gohvDGhBKYkw2jAltAQQTjNFos0/apFjJH3neSAyJfysUy+xLaAZdAN46CEVKRBMWSp2so39E3BGm5ghp4sgUDPMQeghTAwXK3qLAe8aHUQEEEWlCneK3Na1EC2C1xmSeMSd7o9FeSrDIlhGiD5n61S9vUxCMkW/eZK2NOmvu+JSkNefFi3pO7yeTm1fZ0m1zaXwABQEE4OGE0YzJkYS01OWUyLTQ4Y2EtODI3Yi00NGU2NDAxNjNlNTY6N2Y1OWUwNTk3NDNlOTA4ZkBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5eCAAAAAGoCY5IAQEgwRgIhAPrVZ4vvv0KG8PMV5ElSC3IwxUX1eprFlxFut7xHIOKMAiEAsdpyDV3rrN6wzGVcxPNh5lSalAvXYAXyBk2LDzeRnv4AQEYwRAIgRJoqR8B4DFKIHgd835xnRGog83fQBf2T8MXAxT/2ty8CIFeMKf9quX5BxfEGR0uPix97TA1K0atHjVXg050WctaO\",\"key_package_ref\":\"irbBdJkzIV1LiWMMXDZxk/PS6GXTNBUce3a922fmrwI=\",\"user\":\"88a4c2da-59e2-48ca-827b-44e640163e56\"}]}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-582656d971d29215ee06b5edda714410-f99c699c6b2d6706-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/2068363749' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-6386c34b58884946f516c447f05f090d-280a0f78ef524969-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/2068363749' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (200,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-f5ce522c191de712a7ae11c49bbdeb7f-c50a58275f478c87-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8085/v15/mls/commit-bundles' -H 'Content-Type: message/mls' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$(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| base64 -d)"
# ==> (201,"{\"events\":[{\"conversation\":\"fa41e343-cdc9-4717-9674-81b58102acf5\",\"data\":{\"add_type\":\"internal_add\",\"user_ids\":[\"88a4c2da-59e2-48ca-827b-44e640163e56\"],\"users\":[{\"conversation_role\":\"wire_member\",\"id\":\"88a4c2da-59e2-48ca-827b-44e640163e56\",\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"88a4c2da-59e2-48ca-827b-44e640163e56\"}}]},\"from\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\",\"qualified_conversation\":{\"domain\":\"example.com\",\"id\":\"fa41e343-cdc9-4717-9674-81b58102acf5\"},\"qualified_from\":{\"domain\":\"example.com\",\"id\":\"f1805e94-d7ca-4d83-8d03-acbf1b8cb418\"},\"team\":\"c9b89c21-33a1-4f02-8df9-27f1e7fef9ab\",\"time\":\"2026-02-16T23:17:38.911Z\",\"type\":\"conversation.member-join\",\"via\":\"user\"}],\"time\":\"2026-02-16T23:17:38.924Z\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-4422d62121048dadb2e220292b42023f-7a88f86718f544df-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-c964352d91a5585a8d6a02bdf50d8420-28261fb21f2bca45-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-008c982388e02d4d6131e4432e803394-54751be559770d9d-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-abc9274252ddac81fa314dfb03455d94-4717af53d2aa0df9-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-3a2529cfedabfedfa67533f4a32ab246-2361f92d4e2c73b0-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-0d608ffbc7bc268fd6f8ffbacf0ba9bf-6972b30cd9c0cdc0-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-95d11027819d78439b97c9dfc24c247e-a9eb80876ee0f9bd-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/88a4c2da-59e2-48ca-827b-44e640163e56/3680265277' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (200,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:17:38 GMT"),("Server","Warp/3.4.12"),("traceparent","00-d6130d0636d3c54c711683b5d0ee1d7b-6d46f669e3a0fc20-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8085/v15/mls/messages' -H 'Content-Type: message/mls' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: f1805e94-d7ca-4d83-8d03-acbf1b8cb418' --data-binary "$(AAEAAiAAAQAAw7pBw6NDw43DiUcXwpZ0woHCtcKBAsKsw7UAZXhhbXBsZS5jb20AAAAAAAAAAQEAHMKCHsKsd8O2woEGw7HCuMOZE3wXeU/CoXPCunEmY8KzaFnCvEDCrGNAwoDCgcKOw6TDgcOOD8OFwrAawrcWwol8FB1OwrbCssOTw5l1w6YdFcOrwpnDhsOcw43DtT13W3kJH8OSRMOMFDw0IsOww73DvH/Dp3XDl8OILMKiFDBLIwrDscO+wqcoFkzCksKWwrbDt3bDncKwcF1TLWjCmRfDuCtPwqAewo0FPcK4XMOvw5TDkmfDiCAkwoTCtcOjKH4rw6TCm8KKbcK1wrXDnMKPEMO3a2ALw43ChcK+dUDChsOhw6syw5DDlj7Dsyg=| base64 -d)"
# ==> (201,"{\"events\":[],\"time\":\"2026-02-16T23:17:39.475Z\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:17:39 GMT"),("Server","Warp/3.4.12"),("traceparent","00-87db23b5b59399468aec1a59fd303b7b-bc5c3b51e6734598-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

@fisx
Copy link
Contributor Author

fisx commented Feb 16, 2026

regular user creating a team group conv with an app does not work. 403 instead of success when sending the MLS add commit. again, shell script for the "regular contacts app" case:

curl -X 'POST' 'http://127.0.0.1:8082/i/users' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: example.com' --data-binary "$('{"email":"usJx4LCEOrS3Did@example.com","icon":"default","name":"usJx4LCEOrS3Did@example.com","password":"hunter2.","team":{"icon":"default","name":"integration test team"}}'| base64 -d)"
# ==> (201,"{\"accent_id\":0,\"assets\":[],\"email\":\"usJx4LCEOrS3Did@example.com\",\"id\":\"73b5b1f2-2b5d-443c-bbaa-645658255105\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"usJx4LCEOrS3Did@example.com\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"73b5b1f2-2b5d-443c-bbaa-645658255105\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"proteus\"],\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"type\":\"regular\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-aa69ec3becd5249ffb2fbb6d0c1e69bc-5c5a81df166145e3-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","73b5b1f2-2b5d-443c-bbaa-645658255105"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/teams/4c0f68e7-128a-4a72-ae3d-c78164d452cd/invitations' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105' --data-binary "$('{"email":"ZHUQf5jDE6tg1EL@example.com","role":"member"}'| base64 -d)"
# ==> (201,"{\"created_at\":\"2026-02-16T23:20:25.847Z\",\"created_by\":\"73b5b1f2-2b5d-443c-bbaa-645658255105\",\"email\":\"ZHUQf5jDE6tg1EL@example.com\",\"id\":\"4b1bd17a-fe32-4685-9a91-41ff104e99e0\",\"name\":null,\"role\":\"member\",\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"url\":null}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-b20857182f08b26dfed4ee3c19f1e1df-589c36ac1cee0ed9-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","/teams/4c0f68e7-128a-4a72-ae3d-c78164d452cd/invitations/4b1bd17a-fe32-4685-9a91-41ff104e99e0"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/teams/4c0f68e7-128a-4a72-ae3d-c78164d452cd/invitations' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105' --data-binary "$('{"email":"AsdAAgCbSnt0vJA@example.com","role":"member"}'| base64 -d)"
# ==> (201,"{\"created_at\":\"2026-02-16T23:20:25.847Z\",\"created_by\":\"73b5b1f2-2b5d-443c-bbaa-645658255105\",\"email\":\"AsdAAgCbSnt0vJA@example.com\",\"id\":\"12cec375-8385-49cd-bdb7-04328ff614be\",\"name\":null,\"role\":\"member\",\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"url\":null}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-3938a072b6c5c44601d65d1addd300a2-bf503bd4d294276f-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","/teams/4c0f68e7-128a-4a72-ae3d-c78164d452cd/invitations/12cec375-8385-49cd-bdb7-04328ff614be"),("Vary","Accept-Encoding")])

curl -X 'GET' 'http://127.0.0.1:8082/i/teams/invitation-code?team=4c0f68e7-128a-4a72-ae3d-c78164d452cd&invitation_id=12cec375-8385-49cd-bdb7-04328ff614be' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105'
# ==> (200,"{\"code\":\"DsR95HVrLsbgyvfufwIhO7SvjlsE7naD\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-f8bc09f22c3db857352a8dc9aaf4f0cd-66ea4a347afef15b-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'GET' 'http://127.0.0.1:8082/i/teams/invitation-code?team=4c0f68e7-128a-4a72-ae3d-c78164d452cd&invitation_id=4b1bd17a-fe32-4685-9a91-41ff104e99e0' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105'
# ==> (200,"{\"code\":\"tF-uXeLF-IGxDuXyiGrqMv28o1izjt52\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-558a2e30119df7639747d2734bd28a9b-6e7d0996dd610587-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/register' -H 'Content-Type: application/json' -H 'X-Forwarded-For: 127.0.0.42' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105' --data-binary "$('{"email":"ZHUQf5jDE6tg1EL@example.com","name":"ZHUQf5jDE6tg1EL@example.com","password":"hunter2.","team_code":"tF-uXeLF-IGxDuXyiGrqMv28o1izjt52"}'| base64 -d)"
# ==> (201,"{\"accent_id\":0,\"assets\":[],\"email\":\"ZHUQf5jDE6tg1EL@example.com\",\"id\":\"4b1bd17a-fe32-4685-9a91-41ff104e99e0\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"ZHUQf5jDE6tg1EL@example.com\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"4b1bd17a-fe32-4685-9a91-41ff104e99e0\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"proteus\"],\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"type\":\"regular\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-37e8b84adc1c5e975b176c2df2ad2a23-7fb33f07e38a0101-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Set-Cookie","zuid=oz9JbBSbiCuGhP3zto-jaIC1xcNhuX6NMIcqg5ikEk6jwnnWkLcUbZyOijZxGXSt16adIW_nlEl6n3cNzIn7BQ==.v=1.k=1.d=1771284145.t=u.l=.u=4b1bd17a-fe32-4685-9a91-41ff104e99e0.r=28039fe7; Path=/access; Expires=Mon, 16-Feb-2026 23:22:25 GMT; HttpOnly"),("Location","4b1bd17a-fe32-4685-9a91-41ff104e99e0"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/register' -H 'Content-Type: application/json' -H 'X-Forwarded-For: 127.0.0.42' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105' --data-binary "$('{"email":"AsdAAgCbSnt0vJA@example.com","name":"AsdAAgCbSnt0vJA@example.com","password":"hunter2.","team_code":"DsR95HVrLsbgyvfufwIhO7SvjlsE7naD"}'| base64 -d)"
# ==> (201,"{\"accent_id\":0,\"assets\":[],\"email\":\"AsdAAgCbSnt0vJA@example.com\",\"id\":\"12cec375-8385-49cd-bdb7-04328ff614be\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"AsdAAgCbSnt0vJA@example.com\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"12cec375-8385-49cd-bdb7-04328ff614be\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"proteus\"],\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"type\":\"regular\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-eb1709a0f64c11f0bdef004b9c836066-cb70fc32941afd20-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Set-Cookie","zuid=nW-156kVrKQlNeUoYmAm1oi_Lix7khyQRxWHGe0A7E-cZcZasrok7pvSrK60uprjbVkLmikHt97Earqpxk6oAg==.v=1.k=1.d=1771284146.t=u.l=.u=12cec375-8385-49cd-bdb7-04328ff614be.r=3c6ef36; Path=/access; Expires=Mon, 16-Feb-2026 23:22:26 GMT; HttpOnly"),("Location","12cec375-8385-49cd-bdb7-04328ff614be"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/teams/4c0f68e7-128a-4a72-ae3d-c78164d452cd/apps' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 73b5b1f2-2b5d-443c-bbaa-645658255105' --data-binary "$('{"app":{"accent_id":null,"assets":null,"category":"ai","description":"some description of this app","metadata":{},"name":"chappie","picture":null},"password":"hunter2."}'| base64 -d)"
# ==> (200,"{\"cookie\":\"Scdln7ANhSDP4wTGWdwGUg9jUx0qMQMvf17gI0wn9Z6Dg0asG97T_HX0f8YOb1KY6vTDiovp1dq2RD8AprK7CA==.v=1.k=1.d=1771284146.t=u.l=.u=1bc15ce5-3a2b-44b8-bc63-88c5288110ce.r=303caa27\",\"user\":{\"accent_id\":0,\"assets\":[],\"id\":\"1bc15ce5-3a2b-44b8-bc63-88c5288110ce\",\"locale\":\"en\",\"managed_by\":\"wire\",\"name\":\"chappie\",\"picture\":[],\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"1bc15ce5-3a2b-44b8-bc63-88c5288110ce\"},\"searchable\":true,\"status\":\"active\",\"supported_protocols\":[\"mls\"],\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"type\":\"app\"}}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-92766a64c796f6fce95b50d2a907dbf0-0044683039006b27-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/clients' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0' --data-binary "$('{"capabilities":["legalhold-implicit-consent"],"label":"Test Device","lastkey":{"id":65535,"key":"pQABARn//wKhAFggnCcZIK1pbtlJf4wRQ44h4w7/sfSgj5oWXMQaUGYAJ/sDoQChAFgglacihnqg/YQJHkuHNFU7QD6Pb3KN4FnubaCF2EVOgRkE9g=="},"model":"Test Model","password":"hunter2.","prekeys":[{"id":1,"key":"pQABAQECoQBYIOjl7hw0D8YRNqkkBQETCxyr7/ywE/2R5RWcUPM+GJACA6EAoQBYILLf1TIwSB62q69Ojs/X1tzJ+dYHNAw4QbW/7TC5vSZqBPY="}],"type":"permanent"}'| base64 -d)"
# ==> (201,"{\"capabilities\":[\"legalhold-implicit-consent\"],\"id\":\"cc6e640e296e8bba\",\"label\":\"Test Device\",\"mls_public_keys\":{},\"model\":\"Test Model\",\"time\":\"2026-02-16T23:20:26.853Z\",\"type\":\"permanent\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-ad2b33a9f109803fb575415eb743c5ea-fc4d518b90f7ecef-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","cc6e640e296e8bba"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8082/v15/clients/cc6e640e296e8bba' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0' --data-binary "$('{"mls_public_keys":{"ecdsa_secp256r1_sha256":"BP9SAVYUFk9Q179G4nEhcxLC8WD1iRhsNsPdlwDFVz20drs1M0kiFFk5h10MaW+hlmPUNJdPPCGwNkq9GIpuUbE="},"prekeys":[]}'| base64 -d)"
# ==> (200,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-ae95c74a85a842deb8ed33ef219c9061-4f7b86ca3112ae21-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/clients' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 12cec375-8385-49cd-bdb7-04328ff614be' --data-binary "$('{"capabilities":["legalhold-implicit-consent"],"label":"Test Device","lastkey":{"id":65535,"key":"pQABARn//wKhAFggwO2any+CjiGP8XFYrY67zHPvLgp+ysY5k7vci57aaLwDoQChAFgglacihnqg/YQJHkuHNFU7QD6Pb3KN4FnubaCF2EVOgRkE9g=="},"model":"Test Model","password":"hunter2.","prekeys":[{"id":2,"key":"pQABAQICoQBYIGoXawUQWQ9ZW+MXhvuo9ALOBUjLff8S5VdAokN29C1OA6EAoQBYILLf1TIwSB62q69Ojs/X1tzJ+dYHNAw4QbW/7TC5vSZqBPY="}],"type":"permanent"}'| base64 -d)"
# ==> (201,"{\"capabilities\":[\"legalhold-implicit-consent\"],\"id\":\"7f59e059743e908f\",\"label\":\"Test Device\",\"mls_public_keys\":{},\"model\":\"Test Model\",\"time\":\"2026-02-16T23:20:26.853Z\",\"type\":\"permanent\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-c91a3fdf239f2a3b3b6d8723fbe72be1-a64b8cda6b0173c0-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","7f59e059743e908f"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8082/v15/clients/7f59e059743e908f' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: 7f59e059743e908f' -H 'Z-User: 12cec375-8385-49cd-bdb7-04328ff614be' --data-binary "$('{"mls_public_keys":{"ecdsa_secp256r1_sha256":"BGdqCL+noIEMiFNvgA8+IMPFPID6ZSpGY1hdpEO0PKqqrvyzuMU+yRA/pzlSPF/jEV7U5S7iKJMuJbtVKDzH4So="},"prekeys":[]}'| base64 -d)"
# ==> (200,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-f9ae3bbc3fcece7293fc7e247cbf6ab0-d0314627fc165f28-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/clients' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-User: 1bc15ce5-3a2b-44b8-bc63-88c5288110ce' --data-binary "$('{"capabilities":["legalhold-implicit-consent"],"label":"Test Device","lastkey":{"id":65535,"key":"pQABARn//wKhAFggoChErA5oTI5JT769hJV+VINmU8kougGdYqGd2U7hPa8DoQChAFgglacihnqg/YQJHkuHNFU7QD6Pb3KN4FnubaCF2EVOgRkE9g=="},"model":"Test Model","password":"hunter2.","prekeys":[{"id":3,"key":"pQABAQMCoQBYIEjdt+YWd3lHmG8pamULLMubAMZw556IO8kW7s1MLFytA6EAoQBYILLf1TIwSB62q69Ojs/X1tzJ+dYHNAw4QbW/7TC5vSZqBPY="}],"type":"permanent"}'| base64 -d)"
# ==> (201,"{\"capabilities\":[\"legalhold-implicit-consent\"],\"id\":\"cba68bc1fc35a9a4\",\"label\":\"Test Device\",\"mls_public_keys\":{},\"model\":\"Test Model\",\"time\":\"2026-02-16T23:20:26.853Z\",\"type\":\"permanent\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-16aac98a5bd61840a3db8cfe5cdc56a1-21937ffdac453515-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","cba68bc1fc35a9a4"),("Vary","Accept-Encoding")])

curl -X 'PUT' 'http://127.0.0.1:8082/v15/clients/cba68bc1fc35a9a4' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: 1bc15ce5-3a2b-44b8-bc63-88c5288110ce' --data-binary "$('{"mls_public_keys":{"ecdsa_secp256r1_sha256":"BOe56nAxLZYDJ9Et2bGXdLW2QWbTbrHQLIfaB7ZlKFcfaEep7BuvwsLYQjDuHkDLnyMx40Pn9+q+uLlBSEsCS8s="},"prekeys":[]}'| base64 -d)"
# ==> (200,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-16f566ada3cea3c7bce725fe718e3f65-806b02d704d5294b-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/cc6e640e296e8bba' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0' --data-binary "$('{"key_packages":["AAEAAkBBBBTrsSOIbrSAFFx7mdZVfxQUcUIkqGA2H+iuIA4CzOhdIWU8EtLMwvC846j6mXhYo2cGyrWzEHqG2jI0cMnpSAdAQQR0dkdI0ZtND5J7aEtgvJ34NfWsKdCthJZNSA7v6qWwBac4fOlxGk3EtVzVij952/D7vyUOTcQyqxBvOuzxYqMwQEEE/1IBVhQWT1DXv0bicSFzEsLxYPWJGGw2w92XAMVXPbR2uzUzSSIUWTmHXQxpb6GWY9Q0l088IbA2Sr0Yim5RsQABQEE0YjFiZDE3YS1mZTMyLTQ2ODUtOWE5MS00MWZmMTA0ZTk5ZTA6Y2M2ZTY0MGUyOTZlOGJiYUBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5gqAAAAAGoCZDoAQEcwRQIgU95jRGclXxbRJahL+hIcj7YpFOSUtJIBK+LeZJUs1xICIQDsgIHaP2liUZgeOn9FSgFQ9Cb/2nFCHeljPoGrw7DT2QBASDBGAiEA7sFkuVZ72hD1xi8g7wkMySFDVFI4/WRVb8lr1JoF6voCIQDT/p2q4grOroVyOb74/fFtTMfUK+bBLojvx/21AOHPUA=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-4c17f68245083293668626b9f881188a-e2bb719342a3dc0f-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/7f59e059743e908f' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: 7f59e059743e908f' -H 'Z-User: 12cec375-8385-49cd-bdb7-04328ff614be' --data-binary "$('{"key_packages":["AAEAAkBBBGVimHU+LeEBJnNzleFMX1m0m871A2urGjHOxDmhBBMAVhY+rTuq7uBU13DQFSOFR80EM/1Hbp3CP9dJ7Gyhs5lAQQRPCwuyfav7Osj3ZPd/YLCqYStyX53WcTHolMY7qLSn1dBjiWNCqrbB69CdKPdf2S32k3/RXn269X4PFX/bTK88QEEEZ2oIv6eggQyIU2+ADz4gw8U8gPplKkZjWF2kQ7Q8qqqu/LO4xT7JED+nOVI8X+MRXtTlLuIoky4lu1UoPMfhKgABQEExMmNlYzM3NS04Mzg1LTQ5Y2QtYmRiNy0wNDMyOGZmNjE0YmU6N2Y1OWUwNTk3NDNlOTA4ZkBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5gqAAAAAGoCZDoAQEgwRgIhAPF45EHLBE2+jISRtjW3dPnk5skWj172kJu1uRAkCfuAAiEA7iT8L7UqMoyJSOSf+4m5rL5K2JpPPMJue/fltWET7y4AQEcwRQIhAIneVCLDj/2LnLOAiO4jIE5ScPjOCvCTdCnYZbMT1S2/AiBE4f0NztMfTWaAuDqxe/ESKFWMOd++nFh/dZ11uBQ06g=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-1b3eeadd8111d047d360d8c42a3fe4cd-0108ce381ea3cf27-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/self/cba68bc1fc35a9a4' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cba68bc1fc35a9a4' -H 'Z-User: 1bc15ce5-3a2b-44b8-bc63-88c5288110ce' --data-binary "$('{"key_packages":["AAEAAkBBBPrsqc3O3o9l+HqbhbLi1con/yf2xDSLel9QVJqNxFfOeQscQboNAyPp3ax4S2Gfws0w6YoWaAVD7Wqke2UzVNxAQQR0yG36DRk54UGGkKqUZCZtTJkMELQ4j0qp4U35obcjD8/EBEI9Eshu6x78HcqFMJb9aBdfEYMe1+33Lnd3oyO1QEEE57nqcDEtlgMn0S3ZsZd0tbZBZtNusdAsh9oHtmUoVx9oR6nsG6/CwthCMO4eQMufIzHjQ+f36r64uUFISwJLywABQEExYmMxNWNlNS0zYTJiLTQ0YjgtYmM2My04OGM1Mjg4MTEwY2U6Y2JhNjhiYzFmYzM1YTlhNEBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5gqAAAAAGoCZDoAQEYwRAIgSYtx96c+5u8/OLDmooBT6nrqv7xoafc8JPIz6O+t1PQCIFyWseXwiRZ5sDOYQhgEV58X+7kQSeIcj77ZSZ98JNbaAEBGMEQCIGz1p8+NH+EPN9PsC2JDkk/zD4CsPnyJUasiKHHW7D0uAiAECV18zGvi/UQ2spsi63piL2rljVQD/ZCRpu4oaIelPA=="]}'| base64 -d)"
# ==> (201,"",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-0ddaf331c3b955951f24422dbbbd2495-8a64a0589ac9ce1e-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8085/v15/conversations' -H 'Content-Type: application/json' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0' --data-binary "$('{"cells":false,"conversation_role":"wire_admin","protocol":"mls","qualified_users":[],"team":{"managed":false,"teamid":"4c0f68e7-128a-4a72-ae3d-c78164d452cd"}}'| base64 -d)"
# ==> (201,"{\"access\":[\"invite\"],\"access_role\":[\"team_member\",\"non_team_member\",\"service\"],\"add_permission\":null,\"cells_state\":\"disabled\",\"creator\":\"4b1bd17a-fe32-4685-9a91-41ff104e99e0\",\"epoch\":0,\"failed_to_add\":[],\"group_conv_type\":\"group_conversation\",\"group_id\":\"AAEAAOTbQy11pUieswiDO7oIOcQAZXhhbXBsZS5jb20=\",\"history\":null,\"last_event\":\"0.0\",\"last_event_time\":\"1970-01-01T00:00:00.000Z\",\"members\":{\"others\":[],\"self\":{\"conversation_role\":\"wire_admin\",\"hidden\":false,\"hidden_ref\":null,\"id\":\"4b1bd17a-fe32-4685-9a91-41ff104e99e0\",\"otr_archived\":false,\"otr_archived_ref\":null,\"otr_muted_ref\":null,\"otr_muted_status\":null,\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"4b1bd17a-fe32-4685-9a91-41ff104e99e0\"},\"service\":null,\"status\":0,\"status_ref\":\"0.0\",\"status_time\":\"1970-01-01T00:00:00.000Z\"}},\"message_timer\":null,\"name\":null,\"parent\":null,\"protocol\":\"mls\",\"qualified_id\":{\"domain\":\"example.com\",\"id\":\"e4db432d-75a5-489e-b308-833bba0839c4\"},\"receipt_mode\":0,\"team\":\"4c0f68e7-128a-4a72-ae3d-c78164d452cd\",\"type\":0}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-bf37c2d38fa3cbe3442c61be2cb90cc9-33b8c71ab8b55835-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Location","e4db432d-75a5-489e-b308-833bba0839c4"),("Vary","Accept-Encoding")])

curl -X 'GET' 'http://127.0.0.1:8085/v15/mls/public-keys' -H 'Z-Connection: conn' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0'
# ==> (200,"{\"removal\":{\"ecdsa_secp256r1_sha256\":\"BM2QuZlkvI5F/kPc9Q7G36uQlMTm+4NoKpnuwTk1I3widFHC5DWS/ShuUNV5ADz1mUerLHHvkk8r79qKvtnWfkg=\",\"ecdsa_secp384r1_sha384\":\"BPT5FcoTfVxXF1hrNpWiljnT+dX1zXy5F2qgQ0G+3G4PqgO0m1TqgJL8e2R3wkQCtND1keqrXjjJGO5zd3YKq8mYQD+XMgGT3CfP6WCEWG8HhORIe+8vIQFz0Nm+FvgQRA==\",\"ecdsa_secp521r1_sha512\":\"BAHuvCV/+gJitvAbDwgrBHZJ41oy8Lc+wPIM7Yp6s/vTzTsGKlo7aMdkx6DUjv/56tVD9bZNulFAjwS8xoIyWg8NSAE1ofo8CBvN1XGZOWuMYjEhzLrZADduEnOvayw5sEvm135WC0vWjPJaYwKZPdDIXUz9ILJPgNe3gEUvHsDEXvdXlw==\",\"ed25519\":\"AnuybORA69WHHamcJ86YOLXLoczaBH2ABhBcWSomEEw=\"}}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-a0320277db135f8303647ad729550042-b2df7304df3e536b-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8082/v15/mls/key-packages/claim/example.com/1bc15ce5-3a2b-44b8-bc63-88c5288110ce?ciphersuite=0x0002' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0'
# ==> (200,"{\"key_packages\":[{\"client\":\"cba68bc1fc35a9a4\",\"domain\":\"example.com\",\"key_package\":\"AAEAAkBBBPrsqc3O3o9l+HqbhbLi1con/yf2xDSLel9QVJqNxFfOeQscQboNAyPp3ax4S2Gfws0w6YoWaAVD7Wqke2UzVNxAQQR0yG36DRk54UGGkKqUZCZtTJkMELQ4j0qp4U35obcjD8/EBEI9Eshu6x78HcqFMJb9aBdfEYMe1+33Lnd3oyO1QEEE57nqcDEtlgMn0S3ZsZd0tbZBZtNusdAsh9oHtmUoVx9oR6nsG6/CwthCMO4eQMufIzHjQ+f36r64uUFISwJLywABQEExYmMxNWNlNS0zYTJiLTQ0YjgtYmM2My04OGM1Mjg4MTEwY2U6Y2JhNjhiYzFmYzM1YTlhNEBleGFtcGxlLmNvbQIAAQwAAQACAAcABQAD8DEAAAQAAQACAQAAAABpk5gqAAAAAGoCZDoAQEYwRAIgSYtx96c+5u8/OLDmooBT6nrqv7xoafc8JPIz6O+t1PQCIFyWseXwiRZ5sDOYQhgEV58X+7kQSeIcj77ZSZ98JNbaAEBGMEQCIGz1p8+NH+EPN9PsC2JDkk/zD4CsPnyJUasiKHHW7D0uAiAECV18zGvi/UQ2spsi63piL2rljVQD/ZCRpu4oaIelPA==\",\"key_package_ref\":\"my22GLlU/jIt21NpyPKMaXqYHg32RIbiviTO1CmB07M=\",\"user\":\"1bc15ce5-3a2b-44b8-bc63-88c5288110ce\"}]}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:25 GMT"),("Server","Warp/3.4.12"),("traceparent","00-bf65dd7c04cbc9f12fccdd98eeb8b0a8-edb40d802c2e3216-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/1bc15ce5-3a2b-44b8-bc63-88c5288110ce/2576830812' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (404,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:20:27 GMT"),("Server","Warp/3.4.12"),("traceparent","00-1cbc3d5bdc37c34de982b875266c45d2-f1b3cb012c623cfd-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json;charset=utf-8"),("Vary","Accept-Encoding")])

curl -X 'HEAD' 'http://127.0.0.1:8083/i/presences/1bc15ce5-3a2b-44b8-bc63-88c5288110ce/2576830812' -H 'Z-Connection: conn' -H 'Z-User: example.com'
# ==> (200,"",[("Connection","close"),("Date","Mon, 16 Feb 2026 23:20:27 GMT"),("Server","Warp/3.4.12"),("traceparent","00-5e42c5bb0702c0e0f89714e3f8500735-1bd9a25bcc669bfa-01"),("tracestate",""),("Vary","Accept-Encoding")])

curl -X 'POST' 'http://127.0.0.1:8085/v15/mls/commit-bundles' -H 'Content-Type: message/mls' -H 'Z-Connection: conn' -H 'Z-Client: cc6e640e296e8bba' -H 'Z-User: 4b1bd17a-fe32-4685-9a91-41ff104e99e0' --data-binary "$(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| base64 -d)"
# ==> (403,"{\"code\":403,\"label\":\"access-denied\",\"message\":\"Conversation access denied\"}",[("Transfer-Encoding","chunked"),("Date","Mon, 16 Feb 2026 23:20:27 GMT"),("Server","Warp/3.4.12"),("traceparent","00-ec5d487562ab39af5314ac2baa2077ee-c48b503a9a68d1d9-01"),("tracestate",""),("Content-Encoding","gzip"),("Content-Type","application/json"),("Vary","Accept-Encoding")])

Channels have a similar problem.

@fisx fisx force-pushed the WPB-22549-events-debugging-2 branch from 59d450a to 92bd4ec Compare February 18, 2026 12:43
@fisx fisx force-pushed the WPB-22549-events-debugging-2 branch from 4782849 to c1a8a2f Compare February 19, 2026 16:18
@fisx fisx changed the title [WPB-22549] conv events and apps: debugging [WPB-22549] fix logic around members with user type app and no user identity Feb 19, 2026
@fisx fisx requested a review from Copilot February 19, 2026 16:23
@fisx fisx marked this pull request as ready for review February 19, 2026 16:24
@fisx fisx requested review from a team as code owners February 19, 2026 16:24
-- these tests are structurally very similar, and we could reduce the
-- redundancy further.
--
-- TODO: what about federation?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we keep these? i really want to address them in the next PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why next PR?
Would you remove these if your next PR gets delayed due to something else?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

client devs are waiting for this PR to land. i changed it into FUTUREWORK and will either get to it or not, ok?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the relevant change in this PR. It allows apps to be found even though they have no identity. I also reworded the whole thing in the vaining hope it's now more readable.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a bug where app users (which don't have a userIdentity) were incorrectly filtered out by the getAccountsByImpl function when includeUsersWithoutIdentity = False. The fix refactors the filtering logic to explicitly allow users with userType == UserTypeApp regardless of the includeUsersWithoutIdentity flag, since apps are valid users that should always be included.

Changes:

  • Refactored user filtering logic in getAccountsByImpl to correctly handle app users without identities
  • Expanded test coverage for conversations involving app users across multiple conversation types (Proteus, one-to-one, team, and channel)
  • Removed redundant app testing code from Test/Apps.hs that was moved to more comprehensive tests

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
libs/wire-subsystems/src/Wire/UserSubsystem/Interpreter.hs Core fix: refactored filter logic to ensure app users are included regardless of includeUsersWithoutIdentity flag
libs/wire-subsystems/src/Wire/BrigAPIAccess/Rpc.hs Added FUTUREWORK comment questioning necessity of getUsersByVariousKeys function
integration/test/Test/Conversation.hs Significantly expanded test coverage with structured tests for apps in different conversation types; added ConvType enum and parameterized test function
integration/test/Test/Apps.hs Removed duplicate test code for one2one conversations and key package claiming that's now covered in Test/Conversation.hs
integration/test/MLS/Util.hs Added Eq and Show derivations to MessagePackage for better test support
changelog.d/3-bug-fixes/WPB-22549-fix-brig-lookup-users Added changelog entry documenting the bug fix

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

resp.status `shouldMatchInt` 404
resp.json %. "label" `shouldMatch` "not-found"
resp.status `shouldMatchInt` 403
resp.json %. "label" `shouldMatch` "same-binding-team-users"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure where the 404 comes from, i think it's a git artefact from an earlier, wrong version of this test.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its an artefact of apps getting skipped when using UserSubsystem.getAccountsBy.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, that changes in this PR: getAccountsBy now returns apps even if they have no identity.

resp.status `shouldMatchInt` 404
resp.json %. "label" `shouldMatch` "not-found"
resp.status `shouldMatchInt` 403
resp.json %. "label" `shouldMatch` "same-binding-team-users"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its an artefact of apps getting skipped when using UserSubsystem.getAccountsBy.

-- these tests are structurally very similar, and we could reduce the
-- redundancy further.
--
-- TODO: what about federation?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why next PR?
Would you remove these if your next PR gets delayed due to something else?

Comment on lines +52 to +53
testConversationWithAppOwnTeam :: (HasCallStack) => ConvType -> App ()
testConversationWithAppOwnTeam ConvTypeProteus = do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why create this ConvType thing and write four different cases for this function, instead of just writing 4 functions?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

short answer it just happened :)

i wrote a comment explaining this, but if that comment isn't compelling i can change it.

Comment on lines +1007 to +1017
weWant :: User -> Bool
weWant user =
not dropBecauseInvitationPending
&& ( isJust user.userIdentity
|| includeUsersWithoutIdentity
|| user.userType == UserTypeApp
)
where
dropBecauseInvitationPending =
includePendingInvitations == NoPendingInvitations
&& user.userStatus == PendingInvitation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
weWant :: User -> Bool
weWant user =
not dropBecauseInvitationPending
&& ( isJust user.userIdentity
|| includeUsersWithoutIdentity
|| user.userType == UserTypeApp
)
where
dropBecauseInvitationPending =
includePendingInvitations == NoPendingInvitations
&& user.userStatus == PendingInvitation
applyPendingInvitationsFilter :: User -> Bool
applyPendingInvitationsFilter user =
case (includePendingInvitations, user.userStatus) of
(NoPendingInvitations, PendingInvitation) -> False
_ -> True
applyIdentityFilter :: User -> Bool
applyIdentityFilter user =
case (includeUsersWithoutIdentity, user.userType, user.userIdentity) of
(False, UserTypeRegular, Nothing) -> False
_ -> True

IMO this is easier to understand. Please feel free to change the names of the funtions.

fisx and others added 3 commits February 20, 2026 12:34
Co-authored-by: Gautier DI FOLCO <gautier.difolco@wire.com>
Co-authored-by: Akshay Mankar <akshay@wire.com>
- s/TODO/FUTUREWORK/
- write 4 test cases, not one with four possible argument values.
Copy link
Contributor

@blackheaven blackheaven left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have paired on it :)

@fisx fisx dismissed akshaymankar’s stale review February 20, 2026 13:46

i think i've handled all your feedback, let me know if i missed anything.

@fisx fisx merged commit f0dca48 into develop Feb 20, 2026
10 checks passed
@fisx fisx deleted the WPB-22549-events-debugging-2 branch February 20, 2026 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants