{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":258506292,"defaultBranch":"main","name":"alchemy-json_api","ownerLogin":"AlchemyCMS","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-04-24T12:28:19.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6218554?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718047669.0","currentOid":""},"activityList":{"items":[{"before":"f62c4f397d2ea72363aaf32117e154d38aea649a","after":"85d6ec7a73cef370e2978cd9f7fb7309f1864d95","ref":"refs/heads/main","pushedAt":"2024-06-10T19:28:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Bump alchemy-json_api to 2.3.0","shortMessageHtmlLink":"Bump alchemy-json_api to 2.3.0"}},{"before":"f62c4f397d2ea72363aaf32117e154d38aea649a","after":"90de5b7cacd5acde89fef1e86be8a567aa9ebf23","ref":"refs/heads/fix-undefined-error","pushedAt":"2024-06-10T18:09:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pelargir","name":"Matthew Bass","path":"/pelargir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3756?s=80&v=4"},"commit":{"message":"Fix error when response is missing `included`\n\nThis fixes the following error when the response from the server does\nnot have the `included` key:\n\nTypeError: Cannot read properties of undefined (reading 'included')\n\nWhen missing, the value already defaults to an empty array so this\nshould be safe when it's \"undefined\" as well.","shortMessageHtmlLink":"Fix error when response is missing included"}},{"before":null,"after":"f62c4f397d2ea72363aaf32117e154d38aea649a","ref":"refs/heads/fix-undefined-error","pushedAt":"2024-06-10T18:08:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"pelargir","name":"Matthew Bass","path":"/pelargir","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3756?s=80&v=4"},"commit":{"message":"Merge pull request #82 from manleyac/include-restricted-in-page-serializer\n\nAdd restricted value to page serializer","shortMessageHtmlLink":"Merge pull request #82 from manleyac/include-restricted-in-page-seria…"}},{"before":"f38b20253c8c5f3196d592c66903ad2775091e5d","after":"f62c4f397d2ea72363aaf32117e154d38aea649a","ref":"refs/heads/main","pushedAt":"2024-06-07T09:57:41.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Merge pull request #82 from manleyac/include-restricted-in-page-serializer\n\nAdd restricted value to page serializer","shortMessageHtmlLink":"Merge pull request #82 from manleyac/include-restricted-in-page-seria…"}},{"before":"1bd7cc06864b368fd4f886c6c5ba794f9c5968ea","after":"f38b20253c8c5f3196d592c66903ad2775091e5d","ref":"refs/heads/main","pushedAt":"2024-05-16T09:54:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Bump alchemy-json_api to 2.2.0","shortMessageHtmlLink":"Bump alchemy-json_api to 2.2.0"}},{"before":"230fdea2f21f261dcd31df62753523e99aa1b9aa","after":null,"ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-15T11:14:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"}},{"before":"19af451423049de1cbfb92388a452901c014e42c","after":"1bd7cc06864b368fd4f886c6c5ba794f9c5968ea","ref":"refs/heads/main","pushedAt":"2024-05-15T11:14:14.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Merge pull request #80 from AlchemyCMS/use-updated-at-for-etag\n\nImprove etag generation","shortMessageHtmlLink":"Merge pull request #80 from AlchemyCMS/use-updated-at-for-etag"}},{"before":"4adc5937783bba0b52b52dd71742a5acf8d47cf8","after":"230fdea2f21f261dcd31df62753523e99aa1b9aa","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-15T11:13:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Rely on improved etag for caching\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.\n\nAlso sets the etag based on JSONAPI's typical set of params, so that we\nget a different etag for different `include`, `sort`, `page`, `fields`,\nor `filter` params.","shortMessageHtmlLink":"Rely on improved etag for caching"}},{"before":"7d79b01d54737ad718ec30271c47c42b9f8ed22e","after":"4adc5937783bba0b52b52dd71742a5acf8d47cf8","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-15T11:10:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Rely on improved etag for caching\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.\n\nAlso sets the etag based on JSONAPI's typical set of params, so that we\nget a different etag for different `include`, `sort`, `page`, `fields`,\nor `filter` params.","shortMessageHtmlLink":"Rely on improved etag for caching"}},{"before":"3f11dd6c4ca00e5e018545c1aacb6b5912d3bfea","after":"7d79b01d54737ad718ec30271c47c42b9f8ed22e","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-15T11:01:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Rely on improved etag for caching\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.\n\nAlso sets the etag based on JSONAPI's typical set of params, so that we\nget a different etag for different `include`, `sort`, `page`, `fields`,\nor `filter` params.","shortMessageHtmlLink":"Rely on improved etag for caching"}},{"before":"ae5602b56c9307067d06759ffe2ae8cbf38c6c97","after":null,"ref":"refs/heads/configure-ttl-in-secondes","pushedAt":"2024-05-15T10:53:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"}},{"before":"7b1d334bcdfd2dc4a38975cae9e64235b317387a","after":"19af451423049de1cbfb92388a452901c014e42c","ref":"refs/heads/main","pushedAt":"2024-05-15T10:53:22.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Merge pull request #81 from AlchemyCMS/configure-ttl-in-secondes\n\nDo not convert cache duration to hours","shortMessageHtmlLink":"Merge pull request #81 from AlchemyCMS/configure-ttl-in-secondes"}},{"before":"2a0d06bcce03d07b1a130158ab143ef15603981a","after":"ae5602b56c9307067d06759ffe2ae8cbf38c6c97","ref":"refs/heads/configure-ttl-in-secondes","pushedAt":"2024-05-15T09:22:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Do not convert cache duration to hours\n\nHours is not fine enough as granularity for good cache control. For this\nreason, the `Cache-Control` header operates with a granularity of\nseconds as well. Let's also work with seconds here.\n\nThis is literally a breaking change, but it will only break caches.","shortMessageHtmlLink":"Do not convert cache duration to hours"}},{"before":null,"after":"2a0d06bcce03d07b1a130158ab143ef15603981a","ref":"refs/heads/configure-ttl-in-secondes","pushedAt":"2024-05-15T09:02:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Do not convert cache duration to hours\n\nHours is not fine enough as granularity for good cache control. For this\nreason, the `Cache-Control` header operates with a granularity of\nseconds as well. Let's also work with seconds here.\n\nThis is literally a breaking change, but it will only break caches.","shortMessageHtmlLink":"Do not convert cache duration to hours"}},{"before":"9343574ade5478ec350f6b7af2ccaa436f86d6cd","after":"3f11dd6c4ca00e5e018545c1aacb6b5912d3bfea","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-14T06:54:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Do not set a Last-Modified header\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.","shortMessageHtmlLink":"Do not set a Last-Modified header"}},{"before":"80b2f078b2fc3faacde41b69ef679ceaf6947d60","after":"9343574ade5478ec350f6b7af2ccaa436f86d6cd","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-13T15:21:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Do not set a Last-Modified header\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.","shortMessageHtmlLink":"Do not set a Last-Modified header"}},{"before":"961b4ddbdbb8eeef37f431c0cdd9886c43887db6","after":"80b2f078b2fc3faacde41b69ef679ceaf6947d60","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-13T15:20:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Do not set a Last-Modified header\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.","shortMessageHtmlLink":"Do not set a Last-Modified header"}},{"before":"761dc59d40d480e67be0152357267db34af1b88c","after":"961b4ddbdbb8eeef37f431c0cdd9886c43887db6","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-13T14:55:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Do not set a Last-Modified header\n\nThe Last-Modified header is a weaker cache key than the etag, and thus\nwe rely solely on the etag from now on. Browsers and Rails will ignore\nit if it's not set while validating if a request is fresh.","shortMessageHtmlLink":"Do not set a Last-Modified header"}},{"before":"1bf0c2d872d165f7fce30650cb26b08e28a16aa0","after":"761dc59d40d480e67be0152357267db34af1b88c","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-13T12:53:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Include JSONAPI params in etag","shortMessageHtmlLink":"Include JSONAPI params in etag"}},{"before":"5de2ef3e45929854310e15f7fd81e217e85fe195","after":null,"ref":"refs/heads/fix-specs","pushedAt":"2024-05-13T10:35:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"}},{"before":"3a8a8957c126ebf4df8940c377ec1cb365b36886","after":"7b1d334bcdfd2dc4a38975cae9e64235b317387a","ref":"refs/heads/main","pushedAt":"2024-05-13T10:35:36.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Merge pull request #79 from AlchemyCMS/fix-specs\n\nFix specs by traveling to the past","shortMessageHtmlLink":"Merge pull request #79 from AlchemyCMS/fix-specs"}},{"before":null,"after":"1bf0c2d872d165f7fce30650cb26b08e28a16aa0","ref":"refs/heads/use-updated-at-for-etag","pushedAt":"2024-05-13T08:54:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Use the same value for etag as for last-modified\n\nAccording to MDN, the last-modified header is a fallback to the etag.\nThus, we should be using the same value.\n\nWe have a rather complicated way of getting the right timestamp for the\nupdated_at timestamp, so what this does it just parses that and gives it\nback as a date.","shortMessageHtmlLink":"Use the same value for etag as for last-modified"}},{"before":null,"after":"5de2ef3e45929854310e15f7fd81e217e85fe195","ref":"refs/heads/fix-specs","pushedAt":"2024-05-13T08:14:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mamhoff","name":"Martin Meyerhoff","path":"/mamhoff","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/703401?s=80&v=4"},"commit":{"message":"Fix specs by traveling to the past\n\nMay 2024 was a long time in the future some time in the past.","shortMessageHtmlLink":"Fix specs by traveling to the past"}},{"before":"7302dac7a893d51a550cc6833f26c301c6c7574c","after":"3a8a8957c126ebf4df8940c377ec1cb365b36886","ref":"refs/heads/main","pushedAt":"2024-05-07T09:58:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Bump alchemy-json_api to 2.1.0","shortMessageHtmlLink":"Bump alchemy-json_api to 2.1.0"}},{"before":"eb160660f5f70122b7205b980a7c8a03eaeb38a9","after":"7302dac7a893d51a550cc6833f26c301c6c7574c","ref":"refs/heads/main","pushedAt":"2024-05-07T09:51:50.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Merge pull request #76 from AlchemyCMS/cache-key-with-version\n\nfix(HTTP Cache): Use cache_key_with_version for etag","shortMessageHtmlLink":"Merge pull request #76 from AlchemyCMS/cache-key-with-version"}},{"before":"0b28e436cbafeffabe0598038d24a7d42f54b60a","after":null,"ref":"refs/heads/cache-key-with-version","pushedAt":"2024-05-07T09:51:50.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"}},{"before":"cb919758c5868b24ea7c3466a6076c093add8601","after":"0b28e436cbafeffabe0598038d24a7d42f54b60a","ref":"refs/heads/cache-key-with-version","pushedAt":"2024-05-07T09:49:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"fix(HTTP Cache): Use cache_key_with_version for etag\n\nThe cache_key is just the page id. We need to include\nthe cache_version (the page published_at date).","shortMessageHtmlLink":"fix(HTTP Cache): Use cache_key_with_version for etag"}},{"before":"960192c921b3db18c8e9dd20b0ba57d42d83c17b","after":null,"ref":"refs/heads/standard-linting","pushedAt":"2024-05-07T09:01:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"}},{"before":"e022e20fc5b19cb7ee6544032d101e46f6f78cc6","after":"eb160660f5f70122b7205b980a7c8a03eaeb38a9","ref":"refs/heads/main","pushedAt":"2024-05-07T09:01:11.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Merge pull request #78 from AlchemyCMS/standard-linting\n\nStandard linting","shortMessageHtmlLink":"Merge pull request #78 from AlchemyCMS/standard-linting"}},{"before":"d2d94549c264b71b5fc54726e3025efbd8437597","after":"960192c921b3db18c8e9dd20b0ba57d42d83c17b","ref":"refs/heads/standard-linting","pushedAt":"2024-05-07T08:57:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tvdeyen","name":"Thomas von Deyen","path":"/tvdeyen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42868?s=80&v=4"},"commit":{"message":"Use StandardRb as Ruby linter","shortMessageHtmlLink":"Use StandardRb as Ruby linter"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYXqg_AA","startCursor":null,"endCursor":null}},"title":"Activity · AlchemyCMS/alchemy-json_api"}