[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"github-stars":3,"marketplace-site-banners":110,"@significa\u002Fdirectus-extension-raw-body":116},{"id":4,"node_id":5,"name":6,"full_name":7,"private":8,"owner":9,"html_url":27,"description":28,"fork":8,"url":29,"forks_url":30,"keys_url":31,"collaborators_url":32,"teams_url":33,"hooks_url":34,"issue_events_url":35,"events_url":36,"assignees_url":37,"branches_url":38,"tags_url":39,"blobs_url":40,"git_tags_url":41,"git_refs_url":42,"trees_url":43,"statuses_url":44,"languages_url":45,"stargazers_url":46,"contributors_url":47,"subscribers_url":48,"subscription_url":49,"commits_url":50,"git_commits_url":51,"comments_url":52,"issue_comment_url":53,"contents_url":54,"compare_url":55,"merges_url":56,"archive_url":57,"downloads_url":58,"issues_url":59,"pulls_url":60,"milestones_url":61,"notifications_url":62,"labels_url":63,"releases_url":64,"deployments_url":65,"created_at":66,"updated_at":67,"pushed_at":68,"git_url":69,"ssh_url":70,"clone_url":71,"svn_url":27,"homepage":72,"size":73,"stargazers_count":74,"watchers_count":74,"language":75,"has_issues":76,"has_projects":76,"has_downloads":76,"has_wiki":8,"has_pages":8,"has_discussions":76,"forks_count":77,"mirror_url":78,"archived":8,"disabled":8,"open_issues_count":79,"license":80,"allow_forking":76,"is_template":8,"web_commit_signoff_required":8,"has_pull_requests":76,"pull_request_creation_policy":85,"topics":86,"visibility":26,"forks":77,"open_issues":79,"watchers":74,"default_branch":106,"temp_clone_token":78,"custom_properties":107,"organization":108,"network_count":77,"subscribers_count":109},7122594,"MDEwOlJlcG9zaXRvcnk3MTIyNTk0","directus","directus\u002Fdirectus",false,{"login":6,"id":10,"node_id":11,"avatar_url":12,"gravatar_id":13,"url":14,"html_url":15,"followers_url":16,"following_url":17,"gists_url":18,"starred_url":19,"subscriptions_url":20,"organizations_url":21,"repos_url":22,"events_url":23,"received_events_url":24,"type":25,"user_view_type":26,"site_admin":8},15967950,"MDEyOk9yZ2FuaXphdGlvbjE1OTY3OTUw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F15967950?v=4","","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus","https:\u002F\u002Fgithub.com\u002Fdirectus","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Ffollowers","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Ffollowing{\u002Fother_user}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fgists{\u002Fgist_id}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fstarred{\u002Fowner}{\u002Frepo}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fsubscriptions","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Forgs","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Frepos","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fevents{\u002Fprivacy}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Freceived_events","Organization","public","https:\u002F\u002Fgithub.com\u002Fdirectus\u002Fdirectus","The flexible backend for all your projects 🐰 Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more.","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fforks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fkeys{\u002Fkey_id}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcollaborators{\u002Fcollaborator}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fteams","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fhooks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fissues\u002Fevents{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fevents","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fassignees{\u002Fuser}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fbranches{\u002Fbranch}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Ftags","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Fblobs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Ftags{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Frefs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Ftrees{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fstatuses\u002F{sha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Flanguages","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fstargazers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcontributors","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fsubscribers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fsubscription","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fissues\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcontents\u002F{+path}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcompare\u002F{base}...{head}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fmerges","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002F{archive_format}{\u002Fref}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fdownloads","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fissues{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fpulls{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fmilestones{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fnotifications{?since,all,participating}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Flabels{\u002Fname}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Freleases{\u002Fid}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fdeployments","2012-12-12T01:35:36Z","2026-06-01T20:57:39Z","2026-06-01T21:41:46Z","git:\u002F\u002Fgithub.com\u002Fdirectus\u002Fdirectus.git","git@github.com:directus\u002Fdirectus.git","https:\u002F\u002Fgithub.com\u002Fdirectus\u002Fdirectus.git","https:\u002F\u002Fdirectus.io",442985,36031,"TypeScript",true,4790,null,402,{"key":81,"name":82,"spdx_id":83,"url":78,"node_id":84},"other","Other","NOASSERTION","MDc6TGljZW5zZTA=","all",[87,88,89,90,91,92,6,93,94,95,96,97,98,99,100,101,102,103,104,105],"api","app","cms","composable","data-visualization","database","graphql","headless-cms","javascript","mariadb","mssql","mysql","no-code","node","postgresql","sql","sqlite","typescript","vue","main",{},{"login":6,"id":10,"node_id":11,"avatar_url":12,"gravatar_id":13,"url":14,"html_url":15,"followers_url":16,"following_url":17,"gists_url":18,"starred_url":19,"subscriptions_url":20,"organizations_url":21,"repos_url":22,"events_url":23,"received_events_url":24,"type":25,"user_view_type":26,"site_admin":8},327,[111],{"id":112,"icon":113,"content":114,"link":115,"include_paths":78,"exclude_paths":78},"812bf73d-ebfb-4246-9538-937a09a0c795","connected_tv","Learn more about our native MCP","https:\u002F\u002Fdirectus.io\u002Fmcp",{"name":117,"description":118,"verified":8,"id":119,"readme":120,"type":121,"last_updated":122,"host_version":123,"downloads":124,"total_downloads":194,"sandbox":8,"license":78,"publisher":195,"versions":198,"formatted_name":240,"formatted_readme":241,"formatted_description":118,"images":242,"repository_url":202,"recent_downloads_7_days":243,"recent_downloads_30_days":244},"@significa\u002Fdirectus-extension-raw-body","Simple Directus extension that sets the serialized request body in the express request object.","4fb10da5-c262-40ae-9db0-41d46f75b556","# Directus raw body extension\n\nSimple Directus extension that sets the serialized request body in the express request object.\n\n\n## Installation \u002F Configuration guide\n\nIn your Directus project directory run:\n\n```sh\nnpm install @significa\u002Fdirectus-extension-raw-body\n```\n\nCreate an environment variable `RAW_BODY_ENDPOINT_PATTERN` with a Regex Expression matching the\nendpoints\u002Froutes where `rawBody` will be added to the request object.\n\nExamples:\n\n```env\n# Matches all endpoints for a specific extension\nRAW_BODY_ENDPOINT_PATTERN='^\\\u002Fsample-extension\\\u002F.*$'\n\n# Matches all endpoints (avoid: you should only set rawBody for custom endpoints)\nRAW_BODY_ENDPOINT_PATTERN='^.*$'\n\n# Matches two routes \u002Fhello-world and \u002Fsample\u002Fpath\nRAW_BODY_ENDPOINT_PATTERN='^(\\\u002Fhello-world|\\\u002Fsample\\\u002Fpath)$'\n\n# Matches routes with variable input in path. Ex:\n#  - \u002Fsample\u002Fcats\u002Ffifi\n#  - \u002Fsample\u002Fcats\u002Fbob1\n#  - \u002Fsample\u002Faaaa\u002Finfo\n#  - \u002Fsample\u002Fbbbb\u002Finfo\nRAW_BODY_ENDPOINT_PATTERN='^(\\\u002Fsample\\\u002Fcats\\\u002F\\D+|\\\u002Fsample\\\u002F[a-z]+\\\u002Finfo)$'\n```\n\nRestart Directus for the changes to take effect.\n\n\n## Usage\n\nCreate a directus endpoint extension:\n\n - JS\n    ```js\n    export default (router, _) => {\n      router.post(\n        '\u002Fsample',\n        async (req, res, _next) => {\n        console.log('Raw body:', req.rawBody)\n\n         return res.json({\n           status: 'OK',\n           rawBody: req.rawBody,\n         })\n      }\n    )\n    ```\n\n - TS\n    ```ts\n    import { NextFunction, Request, Response, Router, } from 'express'\n    import { ApiExtensionContext } from '@directus\u002Fshared\u002Ftypes'\n    import { RequestWithRawBody } from \"@significa\u002Fdirectus-extension-raw-body\";\n  \n    export default (router, extensionContext: ApiExtensionContext) => {\n      router.post(\n        '\u002Fsample',\n        async (req: RequestWithRawBody, res: Response, _next: NextFunction) => {\n          console.log('Raw body:', req.rawBody)\n\n          return res.json({\n            status: 'OK',\n            rawBody: req.rawBody,\n          })\n        }\n      )\n    })\n    ```\n\n\n","hook","2023-01-17T19:14:44.674Z","^9.22.4",[125,128,130,133,135,137,140,143,146,149,151,154,157,159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189,192],{"date":126,"count":127},"2026-05-02",0,{"date":129,"count":127},"2026-05-03",{"date":131,"count":132},"2026-05-04",10,{"date":134,"count":127},"2026-05-05",{"date":136,"count":127},"2026-05-06",{"date":138,"count":139},"2026-05-07",1,{"date":141,"count":142},"2026-05-08",3,{"date":144,"count":145},"2026-05-09",6,{"date":147,"count":148},"2026-05-10",2,{"date":150,"count":148},"2026-05-11",{"date":152,"count":153},"2026-05-12",4,{"date":155,"count":156},"2026-05-13",5,{"date":158,"count":139},"2026-05-14",{"date":160,"count":148},"2026-05-15",{"date":162,"count":127},"2026-05-16",{"date":164,"count":127},"2026-05-17",{"date":166,"count":127},"2026-05-18",{"date":168,"count":139},"2026-05-19",{"date":170,"count":153},"2026-05-20",{"date":172,"count":148},"2026-05-21",{"date":174,"count":127},"2026-05-22",{"date":176,"count":127},"2026-05-23",{"date":178,"count":139},"2026-05-24",{"date":180,"count":127},"2026-05-25",{"date":182,"count":139},"2026-05-26",{"date":184,"count":139},"2026-05-27",{"date":186,"count":127},"2026-05-28",{"date":188,"count":139},"2026-05-29",{"date":190,"count":191},"2026-05-30",7,{"date":193,"count":148},"2026-05-31",1982,{"username":196,"verified":8,"id":197,"github_username":78,"github_name":78,"github_blog":78,"github_bio":78,"github_location":78,"github_company":78,"github_avatar_url":78},"francisco-significa","d126af3b-4565-4581-8ab0-659edbe2b583",[199,210,222,231],{"version":200,"package":119,"publisher":197,"type":121,"host_version":123,"publish_date":122,"verified":8,"id":201,"url_repository":202,"url_homepage":203,"url_bugs":204,"file_count":156,"unpacked_size":205,"sandbox":8,"sandbox_requested_scopes":78,"license":78,"bundled":206,"maintainers":207},"0.0.3","523ff3ce-124a-4ca7-b8ec-166b8a4cdb41","https:\u002F\u002Fgithub.com\u002Fsignifica\u002Fdirectus-extension-raw-body.git","https:\u002F\u002Fgithub.com\u002Fsignifica\u002Fdirectus-extension-raw-body","https:\u002F\u002Fgithub.com\u002Fsignifica\u002Fdirectus-extension-raw-body\u002Fissues",597936,[],[208,209],10064,10065,{"version":211,"package":119,"publisher":197,"type":121,"host_version":212,"publish_date":213,"verified":8,"id":214,"url_repository":202,"url_homepage":215,"url_bugs":204,"file_count":216,"unpacked_size":217,"sandbox":8,"sandbox_requested_scopes":78,"license":78,"bundled":218,"maintainers":219},"0.0.1-ci-test-3","^9.21.2","2022-12-20T17:53:44.227Z","6b103f46-f750-4fcc-94b1-6f36d8a19ef8","https:\u002F\u002Fgithub.com\u002Fsignifica\u002Fdirectus-extension-raw-body#readme",8,8576,[],[220,221],10058,10059,{"version":223,"package":119,"publisher":197,"type":121,"host_version":212,"publish_date":224,"verified":8,"id":225,"url_repository":202,"url_homepage":215,"url_bugs":204,"file_count":216,"unpacked_size":226,"sandbox":8,"sandbox_requested_scopes":78,"license":78,"bundled":227,"maintainers":228},"0.0.1","2022-12-20T18:01:25.346Z","d07ca14d-08e2-46d0-9cad-263b50068525",8566,[],[229,230],10060,10061,{"version":232,"package":119,"publisher":197,"type":121,"host_version":123,"publish_date":233,"verified":8,"id":234,"url_repository":202,"url_homepage":203,"url_bugs":204,"file_count":156,"unpacked_size":235,"sandbox":8,"sandbox_requested_scopes":78,"license":78,"bundled":236,"maintainers":237},"0.0.2","2023-01-17T17:04:34.289Z","f89e6e60-25a6-4597-aa9b-505e0201669b",597915,[],[238,239],10062,10063,"Raw Body","\u003Ch1>Directus raw body extension\u003C\u002Fh1>\n\u003Cp>Simple Directus extension that sets the serialized request body in the express request object.\u003C\u002Fp>\n\u003Ch2>Installation \u002F Configuration guide\u003C\u002Fh2>\n\u003Cp>In your Directus project directory run:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sh\">npm install @significa\u002Fdirectus-extension-raw-body\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Create an environment variable \u003Ccode>RAW_BODY_ENDPOINT_PATTERN\u003C\u002Fcode> with a Regex Expression matching the\nendpoints\u002Froutes where \u003Ccode>rawBody\u003C\u002Fcode> will be added to the request object.\u003C\u002Fp>\n\u003Cp>Examples:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-env\"># Matches all endpoints for a specific extension\nRAW_BODY_ENDPOINT_PATTERN='^\\\u002Fsample-extension\\\u002F.*$'\n\n# Matches all endpoints (avoid: you should only set rawBody for custom endpoints)\nRAW_BODY_ENDPOINT_PATTERN='^.*$'\n\n# Matches two routes \u002Fhello-world and \u002Fsample\u002Fpath\nRAW_BODY_ENDPOINT_PATTERN='^(\\\u002Fhello-world|\\\u002Fsample\\\u002Fpath)$'\n\n# Matches routes with variable input in path. Ex:\n#  - \u002Fsample\u002Fcats\u002Ffifi\n#  - \u002Fsample\u002Fcats\u002Fbob1\n#  - \u002Fsample\u002Faaaa\u002Finfo\n#  - \u002Fsample\u002Fbbbb\u002Finfo\nRAW_BODY_ENDPOINT_PATTERN='^(\\\u002Fsample\\\u002Fcats\\\u002F\\D+|\\\u002Fsample\\\u002F[a-z]+\\\u002Finfo)$'\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Restart Directus for the changes to take effect.\u003C\u002Fp>\n\u003Ch2>Usage\u003C\u002Fh2>\n\u003Cp>Create a directus endpoint extension:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>JS\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-js\">export default (router, _) =&gt; {\n  router.post(\n    '\u002Fsample',\n    async (req, res, _next) =&gt; {\n    console.log('Raw body:', req.rawBody)\n\n     return res.json({\n       status: 'OK',\n       rawBody: req.rawBody,\n     })\n  }\n)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>TS\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-ts\">import { NextFunction, Request, Response, Router, } from 'express'\nimport { ApiExtensionContext } from '@directus\u002Fshared\u002Ftypes'\nimport { RequestWithRawBody } from \"@significa\u002Fdirectus-extension-raw-body\";\n\nexport default (router, extensionContext: ApiExtensionContext) =&gt; {\n  router.post(\n    '\u002Fsample',\n    async (req: RequestWithRawBody, res: Response, _next: NextFunction) =&gt; {\n      console.log('Raw body:', req.rawBody)\n\n      return res.json({\n        status: 'OK',\n        rawBody: req.rawBody,\n      })\n    }\n  )\n})\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fli>\n\u003C\u002Ful>\n",[],12,56]