)]}'
{
  "log": [
    {
      "commit": "729ffe8f6dfd3e601aa6a90fa3f48393da560bfe",
      "tree": "2a2ca9530e702a47d794aceded245397223033ec",
      "parents": [
        "96952140416dff90e2d93b02eebd949b1ff10142"
      ],
      "author": {
        "name": "Jerome Blanchard",
        "email": "jblanchard@jahia.com",
        "time": "Thu Oct 29 11:20:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 11:20:58 2026 +0100"
      },
      "message": "[UNOMI-1025] Restore the healthcheck provider timeout (#931)\n\nCo-authored-by: Serge Huber \u003cshuber@apache.org\u003e\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "96952140416dff90e2d93b02eebd949b1ff10142",
      "tree": "499a4240814e401dfc41b55952b7762ead5b7682",
      "parents": [
        "03deaf9de44887ee5c936d537c558c1015449ecf"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Oct 28 20:17:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 20:17:34 2026 +0100"
      },
      "message": "UNOMI-1016: Index API key hashes to tenants in memory (#932)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "03deaf9de44887ee5c936d537c558c1015449ecf",
      "tree": "79c808712009c0d6b6c723167e69b2172f32d79f",
      "parents": [
        "429ea21d5ae6210f51559bfa914ab9feeb960b45"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 27 20:57:40 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 20:57:40 2026 +0100"
      },
      "message": "UNOMI-1020: Count aggregate matches exactly on the optimized path (#928)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "429ea21d5ae6210f51559bfa914ab9feeb960b45",
      "tree": "e868ef4cfa03988f486720452e2949913f8261b0",
      "parents": [
        "e1bbb6a89d375cdd800b151903330719181f2f2c"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 27 10:34:37 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 10:34:37 2026 +0100"
      },
      "message": "UNOMI-1022: Document IP range aggregates and how to read aggregate results (#927)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e1bbb6a89d375cdd800b151903330719181f2f2c",
      "tree": "d68d3126d189dd887acbc6777768f53bf44390a8",
      "parents": [
        "e59989a3f5e36fea39ee84b00ee173faa5d24d89"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 27 10:34:08 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 10:34:08 2026 +0100"
      },
      "message": "UNOMI-1019: Document how to configure the web tracker for each Unomi version (#925)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e59989a3f5e36fea39ee84b00ee173faa5d24d89",
      "tree": "27e55c44379154fa8c6e6dff5c3ba11404dfc2ad",
      "parents": [
        "b5e1bddbc6dc3be9073db9c2e05fa7bf43436cd9"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 27 07:51:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 07:51:13 2026 +0100"
      },
      "message": "UNOMI-1021: Reject unsupported date aggregate intervals as a bad request (#929)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b5e1bddbc6dc3be9073db9c2e05fa7bf43436cd9",
      "tree": "c9ab1c8bd081356b79e131706b46f9595896a2fd",
      "parents": [
        "1729a66d704048f365067ac26da6f9698416be58"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Oct 26 10:16:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 10:16:32 2026 +0100"
      },
      "message": "UNOMI-1018: Return date and range buckets from aggregate queries (#926)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "1729a66d704048f365067ac26da6f9698416be58",
      "tree": "f6daa20283f6bd1b01f47c7d98558c1f57d3df1e",
      "parents": [
        "4e2ac29a2d711190c84840c76412a5900f83e33b"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Oct 24 07:46:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:46:54 2026 +0200"
      },
      "message": "UNOMI-1014: Assert _all against getAllItemsCount (#924)"
    },
    {
      "commit": "4e2ac29a2d711190c84840c76412a5900f83e33b",
      "tree": "60f7b31a12d4183cd1c96c54255dbdb3b8ab782d",
      "parents": [
        "71b0735344ec0e7dcd9c5ce15360efab290e0f9b"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Oct 24 07:06:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:06:26 2026 +0200"
      },
      "message": "UNOMI-1014: Test aggregates and metrics without a condition; fix _all docs (#923)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "71b0735344ec0e7dcd9c5ce15360efab290e0f9b",
      "tree": "91b1240ad1de17a09111e6584d23f895cca31261",
      "parents": [
        "b795eaa693df0b398c683dad5d0aedb026c529af"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Oct 23 16:36:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 16:36:35 2026 +0200"
      },
      "message": "UNOMI-1014: Return aggregate results and keep them in the current tenant (#922)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b795eaa693df0b398c683dad5d0aedb026c529af",
      "tree": "45732d9ab99b73b89b49d323f4fedecb2b6a3af9",
      "parents": [
        "b4bd3bd7a22ad418a310983c7454b93a80512a5c"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Oct 22 20:26:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:26:19 2026 +0200"
      },
      "message": "UNOMI-1013: Let each tenant list the websites that can use its tracker (#921)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b4bd3bd7a22ad418a310983c7454b93a80512a5c",
      "tree": "7327352343f52db20cfdca0aff047bbc45e5aefd",
      "parents": [
        "beea0b48aad19363170aadba323570a9a354c8fc"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Oct 21 10:48:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 10:48:33 2026 +0200"
      },
      "message": "UNOMI-1005: Allow visitor cookies only for listed website origins (#920)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "beea0b48aad19363170aadba323570a9a354c8fc",
      "tree": "35278370abd7d80d11e6e5b2a0cc8b80f016dfb2",
      "parents": [
        "5740a815fb7fe8bfb6dc2a706efed917ee76c63c"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Oct 16 14:08:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:08:28 2026 +0200"
      },
      "message": "UNOMI-1004: Omit unset optional branches from boolean OR (#919)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "5740a815fb7fe8bfb6dc2a706efed917ee76c63c",
      "tree": "e91610248df3dcf8c151d7f6eb07c1931032a8ba",
      "parents": [
        "854d0d61545623f039a406c6edacdf20b4aa8068"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Oct 15 21:39:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 21:39:59 2026 +0200"
      },
      "message": "UNOMI-1003: Sort merged segment/scoring lists and fix missing limit (#917)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "854d0d61545623f039a406c6edacdf20b4aa8068",
      "tree": "a330421aaaec23076936e6a440bb26c659496f86",
      "parents": [
        "39d6c640bd2730072270dc8f6ab3f29b1f99743d"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Oct 15 06:49:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 06:49:46 2026 +0200"
      },
      "message": "UNOMI-1006: Generate a node id per node and run the heartbeat on every node (#916)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "39d6c640bd2730072270dc8f6ab3f29b1f99743d",
      "tree": "e63895bceaf898fe4ba2eabda61a15b1b1152ffb",
      "parents": [
        "facb23e7b0c24937f8828f4ccdbdf1f5651fa859"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 13 07:41:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 07:41:53 2026 +0200"
      },
      "message": "UNOMI-1002: Stop serializing public requests in compatibility mode (#915)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "facb23e7b0c24937f8828f4ccdbdf1f5651fa859",
      "tree": "f4b5ad44ec848da9b68103f1aa53ef23824e273f",
      "parents": [
        "5a263b81104068f067ee485a62dcbab356d876ec"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Oct 09 21:46:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 21:46:03 2026 +0200"
      },
      "message": "UNOMI-1001: Restore 3.0 peer abilities in compatibility mode (#914)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "5a263b81104068f067ee485a62dcbab356d876ec",
      "tree": "108918ca4e6c49aadc7bd36ac4a8d43e8f0be1b6",
      "parents": [
        "670319cce67abc20c3b95a78e9f7c3eaa4279ace"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Oct 09 15:06:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 15:06:16 2026 +0200"
      },
      "message": "UNOMI-1000: Run background tasks for every tenant (#911)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "670319cce67abc20c3b95a78e9f7c3eaa4279ace",
      "tree": "fb531b449360995863c5e08a0776aed3739f4327",
      "parents": [
        "80735e7509dc839d18693ed2adc7b5893576a059"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Oct 08 12:29:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 12:29:59 2026 +0200"
      },
      "message": "UNOMI-998: Cover a 3.0 to 4.0 migration in the integration tests (#910)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "80735e7509dc839d18693ed2adc7b5893576a059",
      "tree": "816e393ff93a7b7a30bf438e5d5ee7e8611538ec",
      "parents": [
        "a01866516ff54e61d48cc2058ac1e2ffeaeb7ca6"
      ],
      "author": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Thu Oct 08 07:34:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 07:34:27 2026 +0200"
      },
      "message": "UNOMI-985: Update the Develocity Maven extension to 2.6.0 for Maven 3.10 (#912)"
    },
    {
      "commit": "a01866516ff54e61d48cc2058ac1e2ffeaeb7ca6",
      "tree": "9814e6e8f405937c8edd2c8953ce9cde06ead5b4",
      "parents": [
        "04a8142deb0c77be446185849bce53d30845af35"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Oct 07 12:30:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 12:30:43 2026 +0200"
      },
      "message": "UNOMI-997: Put migrated items in the right tenant (#909)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "04a8142deb0c77be446185849bce53d30845af35",
      "tree": "416815c9f9b43b7c03a0ab9c0fedbc581013d06d",
      "parents": [
        "ad5fefbb21630bb919cab7001a07caf87de28c81"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 06 20:17:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 20:17:29 2026 +0200"
      },
      "message": "UNOMI-996: Let the 3.0 to 4.0 migration finish (#908)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ad5fefbb21630bb919cab7001a07caf87de28c81",
      "tree": "a495ab07de52e0af74faa843fadc63456c61b9ef",
      "parents": [
        "f1b340db22912ce2fc53de0a1ca348e2bfe97106"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 06 15:19:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 15:19:41 2026 +0200"
      },
      "message": "UNOMI-999: Keep scope purge limited to one scope (#907)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "f1b340db22912ce2fc53de0a1ca348e2bfe97106",
      "tree": "32e9feeea81d922a5314fcadb6c4ab08e495a054",
      "parents": [
        "01dfc2f09cb07622fe2d313dea1dc4200af6626a"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 06 08:52:52 2026 +0200"
      },
      "committer": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Oct 06 08:52:52 2026 +0200"
      },
      "message": "chore: restore 4.0.0-SNAPSHOT after cancelled RC1\n"
    },
    {
      "commit": "01dfc2f09cb07622fe2d313dea1dc4200af6626a",
      "tree": "6c8eb3e17bbfdb077dae5e51f78825c03cec6bfa",
      "parents": [
        "e54cbaebffa4b17fdf6fbc7dc5bf227b94371805"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Oct 04 09:20:23 2026 +0200"
      },
      "committer": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Oct 04 09:20:23 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "e54cbaebffa4b17fdf6fbc7dc5bf227b94371805",
      "tree": "b4b9447a93c37044b7c9346edb57b5c4df8101bd",
      "parents": [
        "edd358aa6487aad3fd94d3c2bf4699d9c52cdee1"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Oct 04 09:20:13 2026 +0200"
      },
      "committer": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Oct 04 09:20:13 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare release unomi-root-4.0.0\n"
    },
    {
      "commit": "edd358aa6487aad3fd94d3c2bf4699d9c52cdee1",
      "tree": "c08d55f9ac8b421a232106c612442c3ff97a9fd6",
      "parents": [
        "d5b3dbaab65d5bca328e6c467a9dc6195b151708"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Oct 02 20:07:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 20:07:00 2026 +0200"
      },
      "message": "chore: add Serge Huber Apache code-signing key to KEYS (#904)"
    },
    {
      "commit": "d5b3dbaab65d5bca328e6c467a9dc6195b151708",
      "tree": "0a3dd79e7fbf9a19e70963a2a2805cf828d61a7f",
      "parents": [
        "6d7b83dc12c25891fe0f4848b2b6bef8453db92c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Oct 02 19:58:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 19:58:43 2026 +0200"
      },
      "message": "Bump brace-expansion from 1.1.11 to 1.1.21 in /extensions/web-tracker/wab (#899)\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6d7b83dc12c25891fe0f4848b2b6bef8453db92c",
      "tree": "d4072bde496ababf726316d8332f877b918b0268",
      "parents": [
        "da5f465091f15d09daaa2ecc8b60aaaac97531a7"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Oct 02 17:06:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 17:06:08 2026 +0200"
      },
      "message": "docs: finish Unomi 3.1→4.0 wording in the manual (#903)"
    },
    {
      "commit": "da5f465091f15d09daaa2ecc8b60aaaac97531a7",
      "tree": "ec1178c958784d22c4c2668d265ff48909fa82c9",
      "parents": [
        "5454ce40fde3a44d0b3a7cfb9ad3d0b958b57faa"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Oct 01 21:48:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 21:48:42 2026 +0200"
      },
      "message": "UNOMI-994: Rename the next Unomi release from 3.1.0 to 4.0.0 (#901)"
    },
    {
      "commit": "5454ce40fde3a44d0b3a7cfb9ad3d0b958b57faa",
      "tree": "6a815e759ec00cf8dedb08f4a66f06be2204c173",
      "parents": [
        "c6a1a3ecbcf130640817e3f4461dda08e1746cd5"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Oct 01 09:14:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 09:14:46 2026 +0200"
      },
      "message": "UNOMI-993: Remove the blank line between log entries (#900)"
    },
    {
      "commit": "c6a1a3ecbcf130640817e3f4461dda08e1746cd5",
      "tree": "7cacda6c00361c1defd648e45ddfa573911f0c8b",
      "parents": [
        "68aec95a43fdb5f53b9b5ebda832496eb8c39729"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Sep 30 17:54:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 17:54:01 2026 +0200"
      },
      "message": "UNOMI-990: Update several third-party dependencies (#893)"
    },
    {
      "commit": "68aec95a43fdb5f53b9b5ebda832496eb8c39729",
      "tree": "e947fa128ecc657b5d0c2c20bca0f18a63cc2793",
      "parents": [
        "f154b25c560070f190ab2ef319727b096ffd48e6"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Sep 30 10:44:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 10:44:15 2026 +0200"
      },
      "message": "UNOMI-988: Update the Karaf version used by Unomi (#889)"
    },
    {
      "commit": "f154b25c560070f190ab2ef319727b096ffd48e6",
      "tree": "169e0e2894852bccca5774758fa66f33ed7f4d35",
      "parents": [
        "1991f3503f2c723509e85fe88cf670bb51b3c942"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Sep 28 21:42:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 21:42:39 2026 +0200"
      },
      "message": "UNOMI-973: Confine recurrent import/export file endpoints to each tenant\u0027s directory (#887)\n\nCo-authored-by: Jerome Blanchard \u003cjblanchard@jahia.com\u003e\nCo-authored-by: Jonathan SINOVASSIN-NAIK \u003c58434978+jsinovassin@users.noreply.github.com\u003e\nCo-authored-by: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "1991f3503f2c723509e85fe88cf670bb51b3c942",
      "tree": "accf82c4cba6f54179d90756c707e5aef6872cf5",
      "parents": [
        "dccddfbdaa0d60e28a31341dade71d80958503c6"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Mon Sep 28 16:29:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 16:29:41 2026 +0200"
      },
      "message": "UNOMI-983: Refuse to save an item that carries no itemId (#865)\n\nCo-authored-by: Serge Huber \u003cshuber@apache.org\u003e"
    },
    {
      "commit": "dccddfbdaa0d60e28a31341dade71d80958503c6",
      "tree": "dbef7ba4112bb2f488d011631774f50e0f7e7df4",
      "parents": [
        "bb4faf115faf0a28fb7e9bc4a94091a7b7e8f319"
      ],
      "author": {
        "name": "Clay Johnson",
        "email": "cjohnson@gradle.com",
        "time": "Sun Sep 27 08:05:20 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 27 15:05:20 2026 +0200"
      },
      "message": "UNOMI-985: Update Develocity and Common Custom User Data Maven extensions (#868)\n\nCo-authored-by: Claude Opus 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "bb4faf115faf0a28fb7e9bc4a94091a7b7e8f319",
      "tree": "a2e381cc6e3f4708437e32cbcfa3a69556e195b5",
      "parents": [
        "76aa368584d4924f6f2f95fd22c9fa2428d1873f"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Sun Sep 27 09:43:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 27 09:43:39 2026 +0200"
      },
      "message": "UNOMI-986: Write a one-shot import CSV to the directory of its tenant (#867)\n\nCo-authored-by: Serge Huber \u003cshuber@apache.org\u003e"
    },
    {
      "commit": "76aa368584d4924f6f2f95fd22c9fa2428d1873f",
      "tree": "029646483b7b53db79923cabef15669d590ad534",
      "parents": [
        "e9c6439fed4de3dcd0644316e5e537b041a7b765"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Sat Sep 26 17:25:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 26 17:25:24 2026 +0200"
      },
      "message": "UNOMI-984: Record how 3.1 answers a search condition with no resolvable type (#866)"
    },
    {
      "commit": "e9c6439fed4de3dcd0644316e5e537b041a7b765",
      "tree": "7f4ee8891314dc376e3409293b886caef70b048e",
      "parents": [
        "a561a00ddbabc5f3081763f3c29cf8ea3177ef81"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Sat Sep 26 17:23:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 26 17:23:19 2026 +0200"
      },
      "message": "UNOMI-980: create the compatibility tenant, and name the mode for what it does (#861)\n\nCo-authored-by: Serge Huber \u003cshuber@apache.org\u003e"
    },
    {
      "commit": "a561a00ddbabc5f3081763f3c29cf8ea3177ef81",
      "tree": "55da3b84b42db737e7ad7e08a2d3d9dbefb70854",
      "parents": [
        "7dab55a5068a0ba169367b73f8e24492ea4e8452"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 19:55:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 19:55:46 2026 +0200"
      },
      "message": "Refresh list indexes on each poll in GraphQLListIT (#884)"
    },
    {
      "commit": "7dab55a5068a0ba169367b73f8e24492ea4e8452",
      "tree": "aa558d2f9a4e1ae96f94e2c09555a26562b3fa4a",
      "parents": [
        "b6e4545219bcc35f7e00c1f8cb01b5b1d77b0178"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 19:54:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 19:54:47 2026 +0200"
      },
      "message": "Simplify identifier validation patterns to a single character class (#873)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b6e4545219bcc35f7e00c1f8cb01b5b1d77b0178",
      "tree": "e055f9ef100f0e2cdb613c4a0c2aad8aa734bfde",
      "parents": [
        "503a0d690f47d858ad135aff2dda612ef9068c63"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 14:22:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 14:22:12 2026 +0200"
      },
      "message": "Apply the restricted-event-type gate to events submitted over GraphQL (#870)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "503a0d690f47d858ad135aff2dda612ef9068c63",
      "tree": "d4b1fa3ab91ac4273c6f2cc40b16d7be23b279d7",
      "parents": [
        "5edd1e9b78b6e078a737cfc50f15642eac42906e"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 12:59:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 12:59:37 2026 +0200"
      },
      "message": "Check roles and tenant authority after a realm login (#875)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "5edd1e9b78b6e078a737cfc50f15642eac42906e",
      "tree": "e4660a4dfcf5c815e3e702a55fd9aaba8bfdcfc9",
      "parents": [
        "58c7aebb67e67709259e6c86861a4fca0bbbb92f"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 11:08:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 11:08:40 2026 +0200"
      },
      "message": "Authorize the executed GraphQL operation, not the first definition (#874)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "58c7aebb67e67709259e6c86861a4fca0bbbb92f",
      "tree": "af4676c75e6cfcc6568f8f6370bb1be2244d7a15",
      "parents": [
        "4bbad657dcc20c19d7b4f5042f26d6d57176cdfb"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 09:57:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 09:57:58 2026 +0200"
      },
      "message": "Bound regular-expression evaluation in the matchesRegex operator (#872)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "4bbad657dcc20c19d7b4f5042f26d6d57176cdfb",
      "tree": "7566057fb6f5c13ca5ad0c83cbc62ddaf8a53927",
      "parents": [
        "11edea0a3b6ba7c5d71d8f4a472fe05dac4e5429"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 09:50:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 09:50:16 2026 +0200"
      },
      "message": "Combine the profile scope with client event filters instead of replacing it (#871)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "11edea0a3b6ba7c5d71d8f4a472fe05dac4e5429",
      "tree": "b384eed74bb7853223fff06da6ed29fad4a17755",
      "parents": [
        "be15fd61ac050400fb3a19e88123aa5d1a4faa5c"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 09:36:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 09:36:16 2026 +0200"
      },
      "message": "UNOMI-977: Restrict router import/export configuration to system administrators (#853)\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "be15fd61ac050400fb3a19e88123aa5d1a4faa5c",
      "tree": "99817600b175af1d40eef542cd9a77ec33f08cc1",
      "parents": [
        "60edd20c9f00c7ff612004a334332b106a52aeab"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 09:29:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 09:29:22 2026 +0200"
      },
      "message": "Bound diagnostic type tracking and the MVEL expression cache (#879)"
    },
    {
      "commit": "60edd20c9f00c7ff612004a334332b106a52aeab",
      "tree": "647d05a86094b644cf66a8a05e878b7513a2838a",
      "parents": [
        "cf52160eb63a45480fb76f717a7f7aebe9ca3984"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 09:28:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 09:28:01 2026 +0200"
      },
      "message": "Drop credentialed CORS on the public tracker endpoints (#878)"
    },
    {
      "commit": "cf52160eb63a45480fb76f717a7f7aebe9ca3984",
      "tree": "f3e2c8b9f9ab99846a47c99602cb48e94613c8b7",
      "parents": [
        "a51bf3c9ebf4aea42e7dd39d0f5607cefd25d1bd"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 24 06:35:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 06:35:34 2026 +0200"
      },
      "message": "Deny public MVEL eval APIs from the scripting class loader (#877)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a51bf3c9ebf4aea42e7dd39d0f5607cefd25d1bd",
      "tree": "ea188aab309e6c2112723b759b326baa18d0b4c9",
      "parents": [
        "ce3eff265abd1e49faf7ba88ac28afc6abf94d14"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Sep 23 06:18:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 06:18:05 2026 +0200"
      },
      "message": "Write filtered personalization contents back onto the request (#876)"
    },
    {
      "commit": "ce3eff265abd1e49faf7ba88ac28afc6abf94d14",
      "tree": "237c1f9e3bf85ba0dc29df7f3a45324ac80d8ad0",
      "parents": [
        "668a15fbfca583f47809519c9dd52a358b6294ef"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Sep 23 06:14:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 06:14:02 2026 +0200"
      },
      "message": "UNOMI-978: Gate cross-profile merge and systemProperties writes on a trusted caller (#854)\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "668a15fbfca583f47809519c9dd52a358b6294ef",
      "tree": "850dcb542cedd6a7bcfc86207ace9e44e697a09c",
      "parents": [
        "aab6c9e5ef3a65ec8c20235970bac62c2616c144"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Sep 22 16:48:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 16:48:51 2026 +0200"
      },
      "message": "UNOMI-976: Restrict Groovy action upload to system administrators (#852)\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "aab6c9e5ef3a65ec8c20235970bac62c2616c144",
      "tree": "d5228b0b677f3cb1fea99ab953d3660eaa274e46",
      "parents": [
        "ab028177a0503a83331fe4afc97279720812c49d"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Sep 22 15:57:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 15:57:13 2026 +0200"
      },
      "message": "Keep Jetty client types out of GraphQLWebSocketIT method signatures (#882)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ab028177a0503a83331fe4afc97279720812c49d",
      "tree": "cd69d8456d42ce853d9ddaf5de0ff5b13a65013c",
      "parents": [
        "a456a6a28b3360cc131d025b4801946e93b92d2a"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Mon Sep 21 16:38:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 16:38:50 2026 +0200"
      },
      "message": "UNOMI-982: Drop a condition whose optional parameter the context does not supply (#864)"
    },
    {
      "commit": "a456a6a28b3360cc131d025b4801946e93b92d2a",
      "tree": "c5739d05f57b5fdbace9ce9a4f55cc59fbab889c",
      "parents": [
        "c1fc6efdc75cd306cced6dbdec06b4caec09d6f8"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Sep 17 11:55:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 11:55:34 2026 +0200"
      },
      "message": "Stop the GraphQL WebSocket deadline scheduler when the servlet is destroyed (#858)\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c1fc6efdc75cd306cced6dbdec06b4caec09d6f8",
      "tree": "a41745efc5ae15a135749d0e55ef45bf82d8dc29",
      "parents": [
        "e995c2b757c76e8d48d1db61ce1e23d34ea9bfe4"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Thu Sep 17 10:48:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 10:48:12 2026 +0200"
      },
      "message": "UNOMI-987: List unomi-plugins-advanced-conditions in the BOM (#869)"
    },
    {
      "commit": "e995c2b757c76e8d48d1db61ce1e23d34ea9bfe4",
      "tree": "faa799d45b34fa5972e84fffec9cc7d7434e210e",
      "parents": [
        "4d4d73922d08de2bf9433f8eea3414a5a414b1cb"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Tue Sep 15 18:00:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 18:00:26 2026 +0200"
      },
      "message": "UNOMI-981: deploy the distribution again (#862)"
    },
    {
      "commit": "4d4d73922d08de2bf9433f8eea3414a5a414b1cb",
      "tree": "f7fe1c2135735c91186da60b69776fc49a225b86",
      "parents": [
        "0ff5e659e88f9f9ba0845502d690819f97717189"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Fri Sep 04 11:58:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 11:58:35 2026 +0200"
      },
      "message": "Require authentication for GraphQL WebSocket upgrade (master) (#843)"
    },
    {
      "commit": "0ff5e659e88f9f9ba0845502d690819f97717189",
      "tree": "20a2d0d86ca92be250382826eff1ff0ceee244da",
      "parents": [
        "0163e13f0189b1ce672789be0125e7cad3585ae3"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Aug 18 14:18:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 14:18:58 2026 +0200"
      },
      "message": "UNOMI-979: Judge scheduler lock expiry by the owner\u0027s recorded lease, deflake scheduler tests (#855)\n\nMerge UNOMI-979 unit test fix"
    },
    {
      "commit": "0163e13f0189b1ce672789be0125e7cad3585ae3",
      "tree": "a74b0b096b39275581ef539874a0632daf784cf1",
      "parents": [
        "c46ff23632db752317ba0222068a74488d43761f"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Aug 17 10:21:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 10:21:52 2026 +0200"
      },
      "message": "UNOMI-975: Bind a public context request to the profile its own cookie names (#851)"
    },
    {
      "commit": "c46ff23632db752317ba0222068a74488d43761f",
      "tree": "a02905a289636b2dc4d66791bce35dd2fa675c2e",
      "parents": [
        "f539d4f9d848771a8a98022d97c3e96603110228"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Aug 16 08:39:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 08:39:19 2026 +0200"
      },
      "message": "UNOMI-974: Require an explicit admin and health-check password at startup (#850)"
    },
    {
      "commit": "f539d4f9d848771a8a98022d97c3e96603110228",
      "tree": "bc5e775c07f7578c3dfdfeedee80350a5b2e7469",
      "parents": [
        "38a32b402dac75891916cbe68fc61307ef347d27"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Jul 22 16:18:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 16:18:07 2026 +0200"
      },
      "message": "UNOMI-971: Remove obsolete Maven repositories that stall CI (#840)"
    },
    {
      "commit": "38a32b402dac75891916cbe68fc61307ef347d27",
      "tree": "8c4947578bc72ea274e52331b85768bc17014970",
      "parents": [
        "360a4d86ce1ba8cd1f5ab042f1ef0c26433973af"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Jul 21 21:02:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 21:02:31 2026 +0200"
      },
      "message": "UNOMI-970: Fix IT ProgressListener ETA using live suite pace (#834)"
    },
    {
      "commit": "360a4d86ce1ba8cd1f5ab042f1ef0c26433973af",
      "tree": "eea2674a261a5e872eea83edb2c39928e1ee80ff",
      "parents": [
        "d95bc6f0341d7c2296d3e3980e639eae4387aafd"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Jul 21 11:47:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:47:11 2026 +0200"
      },
      "message": "UNOMI-968: Pluggable persistence IT harness for ES, OS, and other backends (#833)\n\nMerge pluggeable persistence integration tests modifications"
    },
    {
      "commit": "d95bc6f0341d7c2296d3e3980e639eae4387aafd",
      "tree": "f940e97a3e00481814fee2d24fe655a5040c6754",
      "parents": [
        "b9c0b496ce4db79893941ebc0b6aeb57bc929676"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jul 20 23:00:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 23:00:48 2026 +0200"
      },
      "message": "UNOMI-969: Brand PlantUML diagrams with Unomi theme colors (#831)\n\nMerge manual theming and corrections"
    },
    {
      "commit": "b9c0b496ce4db79893941ebc0b6aeb57bc929676",
      "tree": "8f50e137d2fdeca5af3005f744509770774fab0e",
      "parents": [
        "24b3641f8deefba82921d8a3ad0229caa9ae4513"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jul 20 19:56:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 19:56:59 2026 +0200"
      },
      "message": "UNOMI-967: Harden clustered scheduler locks, recovery, and tests (#830)\n\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "24b3641f8deefba82921d8a3ad0229caa9ae4513",
      "tree": "d33ed4bc7baa8aefdb590928c2ac518db5d1c366",
      "parents": [
        "d4b57f052217fea1d9d9483bcddeafe98fe74659"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jul 18 08:13:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 08:13:44 2026 +0200"
      },
      "message": "UNOMI-966: Upgrade remaining setup-java actions to v5 and speed up CI workflows (#829)\n\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d4b57f052217fea1d9d9483bcddeafe98fe74659",
      "tree": "02b126df75845957f4cb730a4006a3bf4f1bb4fb",
      "parents": [
        "2d5cee076f92dbd91ea32b1fde5ea46c2f32d87b"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jul 16 09:35:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 09:35:44 2026 +0200"
      },
      "message": "UNOMI-964: Fix flaky GraphQLListIT via live condition-type resolution (#827)\n\nMerge flaky test fixes"
    },
    {
      "commit": "2d5cee076f92dbd91ea32b1fde5ea46c2f32d87b",
      "tree": "cd52500e33c34a6b4f69d4f4601d783e89f905fe",
      "parents": [
        "d4aa5627ae36d4419dfd71f2e55186e3c66fa437"
      ],
      "author": {
        "name": "Jonathan SINOVASSIN-NAIK",
        "email": "58434978+jsinovassin@users.noreply.github.com",
        "time": "Wed Jul 15 16:59:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 16:59:58 2026 +0200"
      },
      "message": "update copyright in notice file (#828)"
    },
    {
      "commit": "d4aa5627ae36d4419dfd71f2e55186e3c66fa437",
      "tree": "90c9731d8fc74489f61ba536fb9a85f90d673359",
      "parents": [
        "36e9ac4cf49514ecadc81e07c1518e88c3505bc2"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Jul 15 13:20:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 13:20:45 2026 +0200"
      },
      "message": "[UNOMI-963] Enrich OpenAPI from Javadoc via openapi-enrich 0.1.0 (#826)"
    },
    {
      "commit": "36e9ac4cf49514ecadc81e07c1518e88c3505bc2",
      "tree": "15ce01f157938ac252d449db21a1442bb65ba3b1",
      "parents": [
        "fa413ad24831c27814049bd66d0014699ca0ad75"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Jul 14 06:34:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 06:34:13 2026 +0200"
      },
      "message": "[UNOMI-962] Harden 3.1 REST API: V2 compat auth, missing-resource 404s, and export validation (#823)\n\nREST API Hardening"
    },
    {
      "commit": "fa413ad24831c27814049bd66d0014699ca0ad75",
      "tree": "70d8c6e55830876f0ded67cf5b15428ba90d1602",
      "parents": [
        "e5047430ab89ac586ab87a660c59c875c6c03e42"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Jul 12 18:33:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 18:33:38 2026 +0200"
      },
      "message": "UNOMI-960: API Javadoc, manual docs, and validation tooling (#821)\n\nJavadoc cleanup"
    },
    {
      "commit": "e5047430ab89ac586ab87a660c59c875c6c03e42",
      "tree": "d55415a90dd0a344fa9d15ea8dc240f98b7b4c2d",
      "parents": [
        "d24b3467c8b54c4db4bf72886c9a19e0fd5133c5"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jul 11 20:12:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 20:12:47 2026 +0200"
      },
      "message": "UNOMI-875: Document unomi-3-dev branch archive in agent guides (#820)"
    },
    {
      "commit": "d24b3467c8b54c4db4bf72886c9a19e0fd5133c5",
      "tree": "e4dee175e73de7ddd86538a8ed85854e466351a3",
      "parents": [
        "c8878afa542b107f6aaccb2e5685abbe1c790eb9"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jul 11 20:01:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 20:01:44 2026 +0200"
      },
      "message": "UNOMI-875: REST delete routes, IT closure, and Postman docs (PR9) (#819)"
    },
    {
      "commit": "c8878afa542b107f6aaccb2e5685abbe1c790eb9",
      "tree": "5aa0ed756f081532f3238ecdd0f9442bf5414f4e",
      "parents": [
        "153833a4ee6baea09387fb7e20c3213a81f847a6"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jul 11 09:38:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 09:38:57 2026 +0200"
      },
      "message": "UNOMI-875: Post-3.1 npm hygiene (wab + graphql-ui Dependabot batch) (#818)\n\nUNOMI-875: Post-3.1 npm hygiene"
    },
    {
      "commit": "153833a4ee6baea09387fb7e20c3213a81f847a6",
      "tree": "d24c42c00ac791614ae5b37574a68f6cadc77764",
      "parents": [
        "b8fb5f7c446cddfb86b801984938450b557b4456"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jul 11 07:46:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 07:46:11 2026 +0200"
      },
      "message": "UNOMI-947/946: Platform hygiene, graphql-ui upgrade, and IT cluster health (#812)"
    },
    {
      "commit": "b8fb5f7c446cddfb86b801984938450b557b4456",
      "tree": "05bea186287eafbff0a35214f9c8e991aa86e04d",
      "parents": [
        "a843e7a6e06d3b3174aee4493dec508ea6220771"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jul 09 12:34:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 12:34:49 2026 +0200"
      },
      "message": "UNOMI-958: Extend tenant usage API and add event retention purge (#811)\n\nUNOMI-958: Extend tenant usage API and add event retention purge"
    },
    {
      "commit": "a843e7a6e06d3b3174aee4493dec508ea6220771",
      "tree": "7f42018d9960e6feb941defb3f7469e4a7f29db5",
      "parents": [
        "962647c53e356e7e0904e2cf1f1ec6352fd3c874"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Jul 07 21:31:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 21:31:37 2026 +0200"
      },
      "message": "UNOMI-943: Fix 3.1.0 migration resume and document script authoring (#810)\n\nMigration cleanup merge"
    },
    {
      "commit": "962647c53e356e7e0904e2cf1f1ec6352fd3c874",
      "tree": "0971c956802f6196e3d96ff85eb46cab77eef6a1",
      "parents": [
        "dd56b73b54200dd66e658ab6f9595ba7d581eb34"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jul 06 13:33:30 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 13:33:30 2026 +0200"
      },
      "message": "UNOMI-875: PR4 security and tenant hardening (941/942/938) (#809)\n\nMerging PR 4 security tenant improvements"
    },
    {
      "commit": "dd56b73b54200dd66e658ab6f9595ba7d581eb34",
      "tree": "0bdebc207f2e43bb03f6a4ca3098b91aa53b23e1",
      "parents": [
        "ef10dfe15c2337d479a3c8745e7ad21b30c82205"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Jul 05 11:10:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 11:10:37 2026 +0200"
      },
      "message": "UNOMI-875: PR3 platform upgrade (Karaf 4.4.11, ES 9.4.3, OS 3.7.0, log4j 2.24) (#796)\n\nMerge platform upgrade"
    },
    {
      "commit": "ef10dfe15c2337d479a3c8745e7ad21b30c82205",
      "tree": "b92af960f48f25a9ffab850823cd4d4ed484ba9d",
      "parents": [
        "b1b73db8824343d03fd871f8c6aa9699fa4ee728"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jul 02 09:45:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 09:45:05 2026 +0200"
      },
      "message": "UNOMI-875: PR2 dependency hygiene (E1 + E2) (#795)\n\nMerge minor dependencies upgrades"
    },
    {
      "commit": "b1b73db8824343d03fd871f8c6aa9699fa4ee728",
      "tree": "e2f7decfcfb4361dcea4de76d7c985bd4bfc949a",
      "parents": [
        "5f8f4dc300fe72c82775a3d2448acbf121952729"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Jul 01 13:21:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 13:21:51 2026 +0200"
      },
      "message": "UNOMI-933/934/935: Add REST input validation integration tests (#794)\n\nMerge additional input validation integration tests"
    },
    {
      "commit": "5f8f4dc300fe72c82775a3d2448acbf121952729",
      "tree": "b358d47386a00c7d85b95d74763f059f81a41a46",
      "parents": [
        "a9de07a14b03fdd7a06dae0053ae381e96f2b2bf"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Wed Jul 01 06:09:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 06:09:20 2026 +0200"
      },
      "message": "UNOMI-939/940: Scheduler dispatch and cache refresh race fixes (#792)\n\nMerge scheduler cache improvements"
    },
    {
      "commit": "a9de07a14b03fdd7a06dae0053ae381e96f2b2bf",
      "tree": "7506622ba74a62bf3c1632e74a17adb27caba1a4",
      "parents": [
        "41deed722621e81029f1825d38459b6c2d6ad273"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Jun 30 16:22:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 16:22:08 2026 +0200"
      },
      "message": "docs: Archive 3-dev backport guidance after #791 (#793)\n\nDoc only modifications, nothing needs testing or review at this point."
    },
    {
      "commit": "41deed722621e81029f1825d38459b6c2d6ad273",
      "tree": "2fbf80b2cad9e5035893db79675412a06c136cf4",
      "parents": [
        "c71577130f7a40b448af922cce000a9da3718926"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Tue Jun 30 08:27:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 08:27:34 2026 +0200"
      },
      "message": "UNOMI-875: Final unomi-3-dev hygiene port (#791)"
    },
    {
      "commit": "c71577130f7a40b448af922cce000a9da3718926",
      "tree": "1539ff673685f135b6cd0fd71488cb1f0aad0ca4",
      "parents": [
        "5ebbe8a818a5d584555f4f156f7d22fdd3c5343c"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jun 29 19:54:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 19:54:21 2026 +0200"
      },
      "message": "UNOMI-945: Fix context filter list sanitization and add tests (#789)"
    },
    {
      "commit": "5ebbe8a818a5d584555f4f156f7d22fdd3c5343c",
      "tree": "262f03ac8184625ab41ad9cb28182b0ff8df82f8",
      "parents": [
        "3c6f936bfdc07412889348ea2b6f8f36293cde98"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jun 29 13:03:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 13:03:19 2026 +0200"
      },
      "message": "UNOMI-881: Harden GoalsServiceImplTest against CI flakiness (#788)\n\nMerge goals test flake fix"
    },
    {
      "commit": "3c6f936bfdc07412889348ea2b6f8f36293cde98",
      "tree": "79721b87dcca770472dae47dde3f80bc6a5575ea",
      "parents": [
        "df5f313de936be97826731b04f505bb61c6ed87d"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jun 29 11:52:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 11:52:50 2026 +0200"
      },
      "message": "UNOMI-934/935: Return 400 for invalid rule/segment create (Phase 2 PR 4) (#787)\n\nMerge REST create validation"
    },
    {
      "commit": "df5f313de936be97826731b04f505bb61c6ed87d",
      "tree": "2b271d7c420db1b136e130eccc4fe38808b33336",
      "parents": [
        "ba8a4c29df2345e4a852cf2a8a967ed74aa593d9"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jun 29 09:23:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 09:23:15 2026 +0200"
      },
      "message": "UNOMI-884: Platform polish audit (Phase 2 PR 3) (#786)\n\nMerge platform polish PR"
    },
    {
      "commit": "ba8a4c29df2345e4a852cf2a8a967ed74aa593d9",
      "tree": "909d3ac26584aed5fdb88afb1d7d1f46571df887",
      "parents": [
        "91d6d2cfa75be4f2090151cdefcfff3fa4ed2efb"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Mon Jun 29 06:37:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 06:37:18 2026 +0200"
      },
      "message": "UNOMI-953: Backport packaging bundle (Phase 2 PR 2) (#785)\n\nMerge packaging bundle"
    },
    {
      "commit": "91d6d2cfa75be4f2090151cdefcfff3fa4ed2efb",
      "tree": "874bcb6dd8678d558ae38324bbb47d6123bcc26b",
      "parents": [
        "2419fe39b5bc9656e2bd745daf62872d6dec8600"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Jun 28 18:30:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 18:30:42 2026 +0200"
      },
      "message": "UNOMI-887: Backport dev tooling bundle (Phase 2 PR 1) (#784)\n\nMerge dev tooling bundle"
    },
    {
      "commit": "2419fe39b5bc9656e2bd745daf62872d6dec8600",
      "tree": "128de03ef63da311e5f210520664fbbf6b3e392c",
      "parents": [
        "2a2f6cf9e5dfa3be064b67b5d22c4d139c883c37"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Jun 28 08:08:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 08:08:32 2026 +0200"
      },
      "message": "UNOMI-882: Sync Unomi 3.x manual documentation (#783)\n\nMerge new documentation"
    },
    {
      "commit": "2a2f6cf9e5dfa3be064b67b5d22c4d139c883c37",
      "tree": "e99ed01258e259fd88470111574206fb9c2fc7e7",
      "parents": [
        "8c5bfa2fee3de57646074540b00e38e6070af52b"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jun 27 21:56:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 21:56:15 2026 +0200"
      },
      "message": "UNOMI-957: Add cross-platform memory sampling for integration test runs (#782)\n\nMerge memory sampling improvement"
    },
    {
      "commit": "8c5bfa2fee3de57646074540b00e38e6070af52b",
      "tree": "fe232c84497920c9a3a0d105ba07ddeb8c594e60",
      "parents": [
        "9eeac6d21baf8aa30c59d286861651a5d2d07955"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sat Jun 27 15:02:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 15:02:19 2026 +0200"
      },
      "message": "UNOMI-948: Add PersistenceService.rangeQuery API (#781)\n\nMerge range query improvements as well as IT fixes"
    },
    {
      "commit": "9eeac6d21baf8aa30c59d286861651a5d2d07955",
      "tree": "ecce156fd62bf4b9e98d32484fa54e1a6302c434",
      "parents": [
        "5e7f613aef2eee2a25e9d373b6b558afd40d3a42"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jun 25 13:12:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 13:12:39 2026 +0200"
      },
      "message": "UNOMI-955: Fix CI Javadoc failures and a dead shutdown crash-recovery path (#780)\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "5e7f613aef2eee2a25e9d373b6b558afd40d3a42",
      "tree": "6d0887d2c84c0698288e57d947ebe6dfb31b7a88",
      "parents": [
        "85fa6f215707d1be6f189321bfdf095710226f7e"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jun 25 11:22:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 11:22:47 2026 +0200"
      },
      "message": "UNOMI-954: Make Camel route refresh resilient to transient failures (#779)"
    },
    {
      "commit": "85fa6f215707d1be6f189321bfdf095710226f7e",
      "tree": "11ea9eed6f142633bc5ffca054233a748dfbae08",
      "parents": [
        "5ad23143756871e61162fc65fef73fdf7cf2cb12"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Sun Jun 21 21:49:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 21:49:18 2026 +0200"
      },
      "message": "UNOMI-952: Return HTTP 400 for malformed Item JSON in REST requests (#777)"
    },
    {
      "commit": "5ad23143756871e61162fc65fef73fdf7cf2cb12",
      "tree": "8df00f1f39f5d4e7d0c8463a90c035dc212434b5",
      "parents": [
        "54d29244f54b037753b14ce6515096e4449e6960"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jun 18 21:52:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 21:52:22 2026 +0200"
      },
      "message": "UNOMI-881: Add service and extension unit tests (part 2/2) (#776)"
    },
    {
      "commit": "54d29244f54b037753b14ce6515096e4449e6960",
      "tree": "98ef6c7f5f8875ead1017d7c3b2071bffc892ca5",
      "parents": [
        "493ad95ab2def1972c3eb43dcb1ab20afdd5bea3"
      ],
      "author": {
        "name": "Serge Huber",
        "email": "shuber@apache.org",
        "time": "Thu Jun 18 06:05:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 06:05:21 2026 +0200"
      },
      "message": "UNOMI-873: Add request tracing and web-servlets extraction (#775)"
    }
  ],
  "next": "493ad95ab2def1972c3eb43dcb1ab20afdd5bea3"
}
