[{"data":1,"prerenderedAt":2576},["ShallowReactive",2],{"docs-navigation":3,"content-query-S7jeHWOfM1":348},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,187,190,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283,285,288,291,294,297,300,303,306,309,312,315,318,321,324,327,330,333,336,339,342,345],{"_path":5,"title":6},"/docs/account/account-management","Account management",{"_path":8,"title":9},"/docs/account/mfa","Multi-factor authentication (MFA)",{"_path":11,"title":12},"/docs/account/team","Teams and sub-accounts",{"_path":14,"title":15},"/docs/account/billing-and-subscriptions","Billing & subscriptions",{"_path":17,"title":18},"/docs/account/access-tokens","Webhook Relay access tokens: permissions and subscription scopes",{"_path":20,"title":21},"/docs/clawhub","Webhook Relay on ClawHub",{"_path":23,"title":24},"/docs/email","Receive emails as webhooks",{"_path":26,"title":27},"/docs/email/payload","Email webhook payload",{"_path":29,"title":30},"/docs/email/filtering-and-policy","Sender filtering & policy",{"_path":32,"title":33},"/docs/email/cli","Create & poll email addresses from the CLI",{"_path":35,"title":36},"/docs","Getting Started",{"_path":38,"title":39},"/docs/installation/cli","CLI",{"_path":41,"title":42},"/docs/installation/docker","Docker container",{"_path":44,"title":45},"/docs/installation/docker-compose","Docker Compose",{"_path":47,"title":48},"/docs/installation/kubernetes","Kubernetes",{"_path":50,"title":51},"/docs/installation/autostart-windows","Autostart (Windows)",{"_path":53,"title":54},"/docs/installation/autostart-linux","Autostart (Linux)",{"_path":56,"title":57},"/docs/installation/autostart-macos","Autostart (MacOS)",{"_path":59,"title":60},"/docs/installation/behind-proxy","HTTP proxy configuration",{"_path":62,"title":63},"/docs/mcp","MCP Server",{"_path":65,"title":66},"/docs/outbound","Outbound Gateway: send webhooks to your customers",{"_path":68,"title":69},"/docs/outbound/setup","Set up the Outbound Gateway",{"_path":71,"title":72},"/docs/outbound/receiving","Receive and verify outbound webhooks",{"_path":74,"title":75},"/docs/outbound/operating","Monitor, retry and recover deliveries",{"_path":77,"title":78},"/docs/outbound/migrate","Migrate to the Outbound Gateway",{"_path":80,"title":81},"/docs/outbound/migrate/svix","Migrate from Svix",{"_path":83,"title":84},"/docs/outbound/migrate/hookdeck-outpost","Migrate from Hookdeck Outpost",{"_path":86,"title":87},"/docs/outbound/migrate/convoy","Migrate from Convoy",{"_path":89,"title":90},"/docs/outbound/migrate/hook0","Migrate from Hook0",{"_path":92,"title":93},"/docs/outbound/migrate/diy","Migrate a homegrown webhook sender",{"_path":95,"title":96},"/docs/security","Security & Tech",{"_path":98,"title":99},"/docs/service-connections","Service Connections",{"_path":101,"title":102},"/docs/service-connections/ai-providers","AI provider connections",{"_path":104,"title":105},"/docs/service-connections/aws_s3","AWS S3",{"_path":107,"title":108},"/docs/service-connections/aws_sns","AWS SNS",{"_path":110,"title":111},"/docs/service-connections/aws_sqs","AWS SQS",{"_path":113,"title":114},"/docs/service-connections/azure","Azure",{"_path":116,"title":117},"/docs/service-connections/gcp_gcs","GCP Cloud Storage",{"_path":119,"title":120},"/docs/service-connections/gcp_pubsub","GCP Pub/Sub",{"_path":122,"title":123},"/docs/service-connections/secrets","Secrets",{"_path":125,"title":126},"/docs/skills","Agent Skills",{"_path":128,"title":129},"/docs/skills-cli","skills.sh — the Agent Skills CLI",{"_path":131,"title":132},"/docs/tunnels/demoing-your-website","Demoing your website",{"_path":134,"title":135},"/docs/tunnels/regions","Regions",{"_path":137,"title":138},"/docs/tutorials/cicd/jenkins-bitbucket","Jenkins and Bitbucket",{"_path":140,"title":141},"/docs/tutorials/cicd/jenkins-github","Jenkins and GitHub",{"_path":143,"title":144},"/docs/tutorials/cicd/jenkins-plugin","Jenkins Plugin",{"_path":146,"title":147},"/docs/tutorials/cicd/jenkins-plugin-multibranch","Jenkins Multibranch Pipelines",{"_path":149,"title":150},"/docs/tutorials/cicd/kubernetes-operator","Kubernetes Operator",{"_path":152,"title":153},"/docs/tutorials/cicd/terraform-atlantis","Terraform Atlantis",{"_path":155,"title":156},"/docs/tutorials/cicd/webhook-exec","Execute scripts on webhook",{"_path":158,"title":159},"/docs/tutorials/edge/home-assistant","Home Assistant",{"_path":161,"title":162},"/docs/tutorials/edge/javascript-app","JavaScript app",{"_path":164,"title":165},"/docs/tutorials/edge/node-red","Node-RED",{"_path":167,"title":168},"/docs/tutorials/email/airtable","Email to Airtable",{"_path":170,"title":171},"/docs/tutorials/email/api","Email to API",{"_path":173,"title":174},"/docs/tutorials/email/database","Email to Database",{"_path":176,"title":177},"/docs/tutorials/email/discord","Email to Discord",{"_path":179,"title":180},"/docs/tutorials/email/google-sheets","Email to Google Sheets",{"_path":182,"title":183},"/docs/tutorials/email/microsoft-teams","Email to Microsoft Teams",{"_path":185,"title":186},"/docs/tutorials/email/notion","Email to Notion",{"_path":188,"title":189},"/docs/tutorials/email/slack","Email to Slack",{"_path":191,"title":192},"/docs/tutorials","Tutorials",{"_path":194,"title":195},"/docs/tutorials/n8n/email-trigger","n8n Email Trigger (Inbound Email)",{"_path":197,"title":198},"/docs/tutorials/n8n/webhook-trigger","n8n Webhook Trigger (No Public IP)",{"_path":200,"title":201},"/docs/tutorials/n8n/whatsapp-cloud-api-webhook","n8n WhatsApp Cloud API Webhook Setup",{"_path":203,"title":204},"/docs/tutorials/outbound/send-webhooks-nodejs","Send webhooks to your customers from a Node.js / TypeScript app",{"_path":206,"title":207},"/docs/tutorials/outbound/send-webhooks-go","Send webhooks to your customers from a Go service",{"_path":209,"title":210},"/docs/tutorials/outbound/nextjs-saas-webhooks","Add webhooks to a Next.js SaaS app",{"_path":212,"title":213},"/docs/tutorials/transform/docker-to-slack","DockerHub webhook to Slack notification",{"_path":215,"title":216},"/docs/tutorials/transform/enrich-webhooks","Enrich webhooks from APIs",{"_path":218,"title":219},"/docs/tutorials/transform/stripe-to-plain","Sync Stripe subscriptions to Plain.com tenants",{"_path":221,"title":222},"/docs/tutorials/warehouse/bigquery","GCP BigQuery",{"_path":224,"title":225},"/docs/webhooks/alerts","Alerts",{"_path":227,"title":228},"/docs/webhooks/auth/username-password","Username and password",{"_path":230,"title":231},"/docs/webhooks/auth/hmac","HMAC",{"_path":233,"title":234},"/docs/webhooks/auth/jwt","JWT authentication",{"_path":236,"title":237},"/docs/webhooks/auth/http-method","Auth using request method",{"_path":239,"title":240},"/docs/webhooks/cors","CORS for webhooks",{"_path":242,"title":243},"/docs/webhooks/cron/using-cron-webhooks","Schedule recurring webhooks",{"_path":245,"title":246},"/docs/webhooks/custom-domains","Custom webhook domains",{"_path":248,"title":249},"/docs/webhooks/custom-subdomains","Custom webhook subdomains",{"_path":251,"title":252},"/docs/webhooks/custom-webhook-response","Custom response to webhooks",{"_path":254,"title":255},"/docs/webhooks/durable-webhooks","Durable webhooks: reliable delivery with automatic retries",{"_path":257,"title":258},"/docs/webhooks/functions/manipulating-json","JSON encoding",{"_path":260,"title":261},"/docs/webhooks/functions/make-http-request","Make HTTP request",{"_path":263,"title":264},"/docs/webhooks/functions/modify-request","Modify webhook headers, body, method and path",{"_path":266,"title":267},"/docs/webhooks/functions/multipart-form-data","Multipart form to JSON",{"_path":269,"title":270},"/docs/webhooks/functions/url-encoded-data","URL Encoded Form",{"_path":272,"title":273},"/docs/webhooks/functions/working-with-time","Working with time",{"_path":275,"title":276},"/docs/webhooks/functions/send-emails","Sending emails",{"_path":278,"title":279},"/docs/webhooks/functions/crypto-functions","Base64, encryption",{"_path":281,"title":282},"/docs/webhooks/functions/integrate-into-cicd","Integrating into CI/CD",{"_path":284,"title":222},"/docs/webhooks/functions/big-query",{"_path":286,"title":287},"/docs/webhooks/functions/accessing-metadata","Accessing metadata",{"_path":289,"title":290},"/docs/webhooks/functions/response-functions","Response (post-delivery) functions",{"_path":292,"title":293},"/docs/webhooks/functions/alerting","Alerting from functions",{"_path":295,"title":296},"/docs/webhooks/functions/helper-libraries","Helper libraries",{"_path":298,"title":299},"/docs/webhooks/functions/transform-webhook-payload","Transform a webhook payload",{"_path":301,"title":302},"/docs/webhooks/functions/filter-webhooks","Filter or drop webhooks before forwarding",{"_path":304,"title":305},"/docs/webhooks/functions/provider-helpers","Provider-aware function helpers",{"_path":307,"title":308},"/docs/webhooks/functions/kv-store","KV store for functions: persist state, dedupe and cache with TTL",{"_path":310,"title":311},"/docs/webhooks/functions/file-store","File store for functions: save files and share pre-signed URLs",{"_path":313,"title":314},"/docs/webhooks/functions","Webhook transformations (functions): modify body, headers, method and path",{"_path":316,"title":317},"/docs/webhooks/internal/localhost","Receive webhooks on localhost with the relay CLI",{"_path":319,"title":320},"/docs/webhooks/large-webhooks","Large Webhooks",{"_path":322,"title":323},"/docs/webhooks/outbound-throttling","Outbound throttling: control webhook delivery speed",{"_path":325,"title":326},"/docs/webhooks/polling-webhooks","Polling webhooks with /v1/events",{"_path":328,"title":329},"/docs/webhooks/public/public-destination","Forward to public URL",{"_path":331,"title":332},"/docs/webhooks/public/multiple-destination-urls","Forward webhooks to multiple destinations",{"_path":334,"title":335},"/docs/webhooks/replay-on-agent-connect","Webhook replay on agent connect: recover missed webhooks",{"_path":337,"title":338},"/docs/webhooks/static-ip-address","Static IP Address",{"_path":340,"title":341},"/docs/webhooks/tls-ssl-errors","Fix TLS/SSL handshake errors: unsupported protocol, wrong version number, handshake failure",{"_path":343,"title":344},"/docs/webhooks/websocket-server","Connecting to websocket server",{"_path":346,"title":347},"/docs/webhooks/zero-retention-buckets","Zero Retention Buckets",{"_path":310,"_dir":349,"_draft":350,"_partial":350,"_locale":351,"title":311,"description":352,"intro":353,"type":354,"section":349,"level":355,"layout":356,"tags":357,"faq":360,"body":376,"_type":2569,"_id":2570,"_source":2571,"_file":2572,"_stem":2573,"_extension":2574,"sitemap":2575},"functions",false,"","Give Webhook Relay functions persistent file storage with require(\"files:name\"): write reports and exports, read files between runs, list folders and hand out pre-signed download or upload URLs, in JavaScript or Lua.","Write, read and list files from a function, and share them with pre-signed URLs. Archive payloads, build reports and pass files between runs without your own bucket.","example","intermediate","doc",[358,359],"Functions","File Store",[361,364,367,370,373],{"q":362,"a":363},"Can Webhook Relay functions store files?","Yes. A function calls require(\"files:name\") and gets a persistent file store with put, get, getBuffer, exists, stat, list, delete and url. Files persist between runs, can be organised in folders by path, and can be shared with pre-signed download or upload URLs.",{"q":365,"a":366},"Do I need to create the file store first?","No. The first time a function runs require(\"files:exports\"), Webhook Relay creates an empty file store named exports and binds it to that function. Other functions that require the same name share it. You can browse, upload, download and delete files in the dashboard under Functions, Files Store.",{"q":368,"a":369},"How large can files be?","A function can write up to 32 MiB in one put call and read up to 8 MiB with get or getBuffer. For larger objects, generate a pre-signed URL with files.url(path, \"PUT\") and upload or download directly against storage.",{"q":371,"a":372},"How do I share a file from a function?","Call files.url(path) to get a pre-signed download link, valid for 30 minutes by default. Pass a method and a lifetime in seconds to change it, for example files.url(path, \"PUT\", 600) for a ten-minute upload link. Links can last up to seven days.",{"q":374,"a":375},"Can I write binary files?","Function code writes text content with put, and reads binary files back as base64 with getBuffer. For binary uploads such as images or PDFs, create a pre-signed PUT URL and upload the bytes directly, or upload them in the dashboard.",{"type":377,"children":378,"toc":2559},"root",[379,402,1130,1137,1174,1211,1232,1238,1251,1515,1520,1526,1531,1758,1784,1790,1802,2119,2124,2130,2135,2271,2299,2305,2425,2437,2443,2498,2504,2553],{"type":380,"tag":381,"props":382,"children":383},"element","p",{},[384,400],{"type":380,"tag":385,"props":386,"children":387},"strong",{},[388,391,398],{"type":389,"value":390},"text","A Webhook Relay function can save and read files with ",{"type":380,"tag":392,"props":393,"children":395},"code",{"className":394},[],[396],{"type":389,"value":397},"require(\"files:name\")",{"type":389,"value":399},", a persistent file store with folders and pre-signed URLs.",{"type":389,"value":401}," Use it to archive webhook payloads, build a daily CSV, keep a template the function reads on every run, or hand someone a download link, without setting up your own bucket. The store is created automatically the first time a function imports it.",{"type":380,"tag":403,"props":404,"children":405},"code-switcher",{},[406,792],{"type":380,"tag":407,"props":408,"children":409},"template",{"v-slot:javascript":351},[410],{"type":380,"tag":411,"props":412,"children":416},"pre",{"className":413,"code":414,"language":415,"meta":351,"style":351},"language-javascript shiki shiki-themes github-dark","const files = require(\"files:exports\")\n\n// Write a file; the content type is optional\nfiles.put(\"reports/today.csv\", \"id,total\\n1,49.00\\n\", \"text/csv\")\n\n// Read it back as text and inspect its metadata\nconst csv = files.get(\"reports/today.csv\")\nconst info = files.stat(\"reports/today.csv\") // { path, size, content_type, modified_at }\n\n// List a folder, then share a download link (valid 30 minutes by default)\nconst listing = files.list(\"reports/\", 100) // { files: [...], cursor: \"...\" }\nconst link = files.url(\"reports/today.csv\")\n\nfiles.delete(\"reports/today.csv\")\n","javascript",[417],{"type":380,"tag":392,"props":418,"children":419},{"__ignoreMap":351},[420,466,476,486,551,559,568,607,651,659,668,721,759,767],{"type":380,"tag":421,"props":422,"children":425},"span",{"class":423,"line":424},"line",1,[426,432,438,443,449,455,461],{"type":380,"tag":421,"props":427,"children":429},{"style":428},"--shiki-default:#F97583",[430],{"type":389,"value":431},"const",{"type":380,"tag":421,"props":433,"children":435},{"style":434},"--shiki-default:#79B8FF",[436],{"type":389,"value":437}," files",{"type":380,"tag":421,"props":439,"children":440},{"style":428},[441],{"type":389,"value":442}," =",{"type":380,"tag":421,"props":444,"children":446},{"style":445},"--shiki-default:#B392F0",[447],{"type":389,"value":448}," require",{"type":380,"tag":421,"props":450,"children":452},{"style":451},"--shiki-default:#E1E4E8",[453],{"type":389,"value":454},"(",{"type":380,"tag":421,"props":456,"children":458},{"style":457},"--shiki-default:#9ECBFF",[459],{"type":389,"value":460},"\"files:exports\"",{"type":380,"tag":421,"props":462,"children":463},{"style":451},[464],{"type":389,"value":465},")\n",{"type":380,"tag":421,"props":467,"children":469},{"class":423,"line":468},2,[470],{"type":380,"tag":421,"props":471,"children":473},{"emptyLinePlaceholder":472},true,[474],{"type":389,"value":475},"\n",{"type":380,"tag":421,"props":477,"children":479},{"class":423,"line":478},3,[480],{"type":380,"tag":421,"props":481,"children":483},{"style":482},"--shiki-default:#6A737D",[484],{"type":389,"value":485},"// Write a file; the content type is optional\n",{"type":380,"tag":421,"props":487,"children":489},{"class":423,"line":488},4,[490,495,500,504,509,514,519,524,529,533,538,542,547],{"type":380,"tag":421,"props":491,"children":492},{"style":451},[493],{"type":389,"value":494},"files.",{"type":380,"tag":421,"props":496,"children":497},{"style":445},[498],{"type":389,"value":499},"put",{"type":380,"tag":421,"props":501,"children":502},{"style":451},[503],{"type":389,"value":454},{"type":380,"tag":421,"props":505,"children":506},{"style":457},[507],{"type":389,"value":508},"\"reports/today.csv\"",{"type":380,"tag":421,"props":510,"children":511},{"style":451},[512],{"type":389,"value":513},", ",{"type":380,"tag":421,"props":515,"children":516},{"style":457},[517],{"type":389,"value":518},"\"id,total",{"type":380,"tag":421,"props":520,"children":521},{"style":434},[522],{"type":389,"value":523},"\\n",{"type":380,"tag":421,"props":525,"children":526},{"style":457},[527],{"type":389,"value":528},"1,49.00",{"type":380,"tag":421,"props":530,"children":531},{"style":434},[532],{"type":389,"value":523},{"type":380,"tag":421,"props":534,"children":535},{"style":457},[536],{"type":389,"value":537},"\"",{"type":380,"tag":421,"props":539,"children":540},{"style":451},[541],{"type":389,"value":513},{"type":380,"tag":421,"props":543,"children":544},{"style":457},[545],{"type":389,"value":546},"\"text/csv\"",{"type":380,"tag":421,"props":548,"children":549},{"style":451},[550],{"type":389,"value":465},{"type":380,"tag":421,"props":552,"children":554},{"class":423,"line":553},5,[555],{"type":380,"tag":421,"props":556,"children":557},{"emptyLinePlaceholder":472},[558],{"type":389,"value":475},{"type":380,"tag":421,"props":560,"children":562},{"class":423,"line":561},6,[563],{"type":380,"tag":421,"props":564,"children":565},{"style":482},[566],{"type":389,"value":567},"// Read it back as text and inspect its metadata\n",{"type":380,"tag":421,"props":569,"children":571},{"class":423,"line":570},7,[572,576,581,585,590,595,599,603],{"type":380,"tag":421,"props":573,"children":574},{"style":428},[575],{"type":389,"value":431},{"type":380,"tag":421,"props":577,"children":578},{"style":434},[579],{"type":389,"value":580}," csv",{"type":380,"tag":421,"props":582,"children":583},{"style":428},[584],{"type":389,"value":442},{"type":380,"tag":421,"props":586,"children":587},{"style":451},[588],{"type":389,"value":589}," files.",{"type":380,"tag":421,"props":591,"children":592},{"style":445},[593],{"type":389,"value":594},"get",{"type":380,"tag":421,"props":596,"children":597},{"style":451},[598],{"type":389,"value":454},{"type":380,"tag":421,"props":600,"children":601},{"style":457},[602],{"type":389,"value":508},{"type":380,"tag":421,"props":604,"children":605},{"style":451},[606],{"type":389,"value":465},{"type":380,"tag":421,"props":608,"children":610},{"class":423,"line":609},8,[611,615,620,624,628,633,637,641,646],{"type":380,"tag":421,"props":612,"children":613},{"style":428},[614],{"type":389,"value":431},{"type":380,"tag":421,"props":616,"children":617},{"style":434},[618],{"type":389,"value":619}," info",{"type":380,"tag":421,"props":621,"children":622},{"style":428},[623],{"type":389,"value":442},{"type":380,"tag":421,"props":625,"children":626},{"style":451},[627],{"type":389,"value":589},{"type":380,"tag":421,"props":629,"children":630},{"style":445},[631],{"type":389,"value":632},"stat",{"type":380,"tag":421,"props":634,"children":635},{"style":451},[636],{"type":389,"value":454},{"type":380,"tag":421,"props":638,"children":639},{"style":457},[640],{"type":389,"value":508},{"type":380,"tag":421,"props":642,"children":643},{"style":451},[644],{"type":389,"value":645},") ",{"type":380,"tag":421,"props":647,"children":648},{"style":482},[649],{"type":389,"value":650},"// { path, size, content_type, modified_at }\n",{"type":380,"tag":421,"props":652,"children":654},{"class":423,"line":653},9,[655],{"type":380,"tag":421,"props":656,"children":657},{"emptyLinePlaceholder":472},[658],{"type":389,"value":475},{"type":380,"tag":421,"props":660,"children":662},{"class":423,"line":661},10,[663],{"type":380,"tag":421,"props":664,"children":665},{"style":482},[666],{"type":389,"value":667},"// List a folder, then share a download link (valid 30 minutes by default)\n",{"type":380,"tag":421,"props":669,"children":671},{"class":423,"line":670},11,[672,676,681,685,689,694,698,703,707,712,716],{"type":380,"tag":421,"props":673,"children":674},{"style":428},[675],{"type":389,"value":431},{"type":380,"tag":421,"props":677,"children":678},{"style":434},[679],{"type":389,"value":680}," listing",{"type":380,"tag":421,"props":682,"children":683},{"style":428},[684],{"type":389,"value":442},{"type":380,"tag":421,"props":686,"children":687},{"style":451},[688],{"type":389,"value":589},{"type":380,"tag":421,"props":690,"children":691},{"style":445},[692],{"type":389,"value":693},"list",{"type":380,"tag":421,"props":695,"children":696},{"style":451},[697],{"type":389,"value":454},{"type":380,"tag":421,"props":699,"children":700},{"style":457},[701],{"type":389,"value":702},"\"reports/\"",{"type":380,"tag":421,"props":704,"children":705},{"style":451},[706],{"type":389,"value":513},{"type":380,"tag":421,"props":708,"children":709},{"style":434},[710],{"type":389,"value":711},"100",{"type":380,"tag":421,"props":713,"children":714},{"style":451},[715],{"type":389,"value":645},{"type":380,"tag":421,"props":717,"children":718},{"style":482},[719],{"type":389,"value":720},"// { files: [...], cursor: \"...\" }\n",{"type":380,"tag":421,"props":722,"children":724},{"class":423,"line":723},12,[725,729,734,738,742,747,751,755],{"type":380,"tag":421,"props":726,"children":727},{"style":428},[728],{"type":389,"value":431},{"type":380,"tag":421,"props":730,"children":731},{"style":434},[732],{"type":389,"value":733}," link",{"type":380,"tag":421,"props":735,"children":736},{"style":428},[737],{"type":389,"value":442},{"type":380,"tag":421,"props":739,"children":740},{"style":451},[741],{"type":389,"value":589},{"type":380,"tag":421,"props":743,"children":744},{"style":445},[745],{"type":389,"value":746},"url",{"type":380,"tag":421,"props":748,"children":749},{"style":451},[750],{"type":389,"value":454},{"type":380,"tag":421,"props":752,"children":753},{"style":457},[754],{"type":389,"value":508},{"type":380,"tag":421,"props":756,"children":757},{"style":451},[758],{"type":389,"value":465},{"type":380,"tag":421,"props":760,"children":762},{"class":423,"line":761},13,[763],{"type":380,"tag":421,"props":764,"children":765},{"emptyLinePlaceholder":472},[766],{"type":389,"value":475},{"type":380,"tag":421,"props":768,"children":770},{"class":423,"line":769},14,[771,775,780,784,788],{"type":380,"tag":421,"props":772,"children":773},{"style":451},[774],{"type":389,"value":494},{"type":380,"tag":421,"props":776,"children":777},{"style":445},[778],{"type":389,"value":779},"delete",{"type":380,"tag":421,"props":781,"children":782},{"style":451},[783],{"type":389,"value":454},{"type":380,"tag":421,"props":785,"children":786},{"style":457},[787],{"type":389,"value":508},{"type":380,"tag":421,"props":789,"children":790},{"style":451},[791],{"type":389,"value":465},{"type":380,"tag":407,"props":793,"children":794},{"v-slot:lua":351},[795],{"type":380,"tag":411,"props":796,"children":800},{"className":797,"code":798,"language":799,"meta":351,"style":351},"language-lua shiki shiki-themes github-dark","local files = require(\"files:exports\")\n\n-- Write a file; the content type is optional\nfiles.put(\"reports/today.csv\", \"id,total\\n1,49.00\\n\", \"text/csv\")\n\n-- Read it back as text and inspect its metadata\nlocal csv = files.get(\"reports/today.csv\")\nlocal info = files.stat(\"reports/today.csv\") -- { path, size, content_type, modified_at }\n\n-- List a folder, then share a download link (valid 30 minutes by default)\nlocal listing = files.list(\"reports/\", 100) -- { files = {...}, cursor = \"...\" }\nlocal link = files.url(\"reports/today.csv\")\n\nfiles.delete(\"reports/today.csv\")\n","lua",[801],{"type":380,"tag":392,"props":802,"children":803},{"__ignoreMap":351},[804,838,845,853,908,915,923,959,1000,1007,1015,1064,1100,1107],{"type":380,"tag":421,"props":805,"children":806},{"class":423,"line":424},[807,812,817,822,826,830,834],{"type":380,"tag":421,"props":808,"children":809},{"style":428},[810],{"type":389,"value":811},"local",{"type":380,"tag":421,"props":813,"children":814},{"style":451},[815],{"type":389,"value":816}," files ",{"type":380,"tag":421,"props":818,"children":819},{"style":428},[820],{"type":389,"value":821},"=",{"type":380,"tag":421,"props":823,"children":824},{"style":434},[825],{"type":389,"value":448},{"type":380,"tag":421,"props":827,"children":828},{"style":451},[829],{"type":389,"value":454},{"type":380,"tag":421,"props":831,"children":832},{"style":457},[833],{"type":389,"value":460},{"type":380,"tag":421,"props":835,"children":836},{"style":451},[837],{"type":389,"value":465},{"type":380,"tag":421,"props":839,"children":840},{"class":423,"line":468},[841],{"type":380,"tag":421,"props":842,"children":843},{"emptyLinePlaceholder":472},[844],{"type":389,"value":475},{"type":380,"tag":421,"props":846,"children":847},{"class":423,"line":478},[848],{"type":380,"tag":421,"props":849,"children":850},{"style":482},[851],{"type":389,"value":852},"-- Write a file; the content type is optional\n",{"type":380,"tag":421,"props":854,"children":855},{"class":423,"line":488},[856,860,864,868,872,876,880,884,888,892,896,900,904],{"type":380,"tag":421,"props":857,"children":858},{"style":451},[859],{"type":389,"value":494},{"type":380,"tag":421,"props":861,"children":862},{"style":434},[863],{"type":389,"value":499},{"type":380,"tag":421,"props":865,"children":866},{"style":451},[867],{"type":389,"value":454},{"type":380,"tag":421,"props":869,"children":870},{"style":457},[871],{"type":389,"value":508},{"type":380,"tag":421,"props":873,"children":874},{"style":451},[875],{"type":389,"value":513},{"type":380,"tag":421,"props":877,"children":878},{"style":457},[879],{"type":389,"value":518},{"type":380,"tag":421,"props":881,"children":882},{"style":434},[883],{"type":389,"value":523},{"type":380,"tag":421,"props":885,"children":886},{"style":457},[887],{"type":389,"value":528},{"type":380,"tag":421,"props":889,"children":890},{"style":434},[891],{"type":389,"value":523},{"type":380,"tag":421,"props":893,"children":894},{"style":457},[895],{"type":389,"value":537},{"type":380,"tag":421,"props":897,"children":898},{"style":451},[899],{"type":389,"value":513},{"type":380,"tag":421,"props":901,"children":902},{"style":457},[903],{"type":389,"value":546},{"type":380,"tag":421,"props":905,"children":906},{"style":451},[907],{"type":389,"value":465},{"type":380,"tag":421,"props":909,"children":910},{"class":423,"line":553},[911],{"type":380,"tag":421,"props":912,"children":913},{"emptyLinePlaceholder":472},[914],{"type":389,"value":475},{"type":380,"tag":421,"props":916,"children":917},{"class":423,"line":561},[918],{"type":380,"tag":421,"props":919,"children":920},{"style":482},[921],{"type":389,"value":922},"-- Read it back as text and inspect its metadata\n",{"type":380,"tag":421,"props":924,"children":925},{"class":423,"line":570},[926,930,935,939,943,947,951,955],{"type":380,"tag":421,"props":927,"children":928},{"style":428},[929],{"type":389,"value":811},{"type":380,"tag":421,"props":931,"children":932},{"style":451},[933],{"type":389,"value":934}," csv ",{"type":380,"tag":421,"props":936,"children":937},{"style":428},[938],{"type":389,"value":821},{"type":380,"tag":421,"props":940,"children":941},{"style":451},[942],{"type":389,"value":589},{"type":380,"tag":421,"props":944,"children":945},{"style":434},[946],{"type":389,"value":594},{"type":380,"tag":421,"props":948,"children":949},{"style":451},[950],{"type":389,"value":454},{"type":380,"tag":421,"props":952,"children":953},{"style":457},[954],{"type":389,"value":508},{"type":380,"tag":421,"props":956,"children":957},{"style":451},[958],{"type":389,"value":465},{"type":380,"tag":421,"props":960,"children":961},{"class":423,"line":609},[962,966,971,975,979,983,987,991,995],{"type":380,"tag":421,"props":963,"children":964},{"style":428},[965],{"type":389,"value":811},{"type":380,"tag":421,"props":967,"children":968},{"style":451},[969],{"type":389,"value":970}," info ",{"type":380,"tag":421,"props":972,"children":973},{"style":428},[974],{"type":389,"value":821},{"type":380,"tag":421,"props":976,"children":977},{"style":451},[978],{"type":389,"value":589},{"type":380,"tag":421,"props":980,"children":981},{"style":434},[982],{"type":389,"value":632},{"type":380,"tag":421,"props":984,"children":985},{"style":451},[986],{"type":389,"value":454},{"type":380,"tag":421,"props":988,"children":989},{"style":457},[990],{"type":389,"value":508},{"type":380,"tag":421,"props":992,"children":993},{"style":451},[994],{"type":389,"value":645},{"type":380,"tag":421,"props":996,"children":997},{"style":482},[998],{"type":389,"value":999},"-- { path, size, content_type, modified_at }\n",{"type":380,"tag":421,"props":1001,"children":1002},{"class":423,"line":653},[1003],{"type":380,"tag":421,"props":1004,"children":1005},{"emptyLinePlaceholder":472},[1006],{"type":389,"value":475},{"type":380,"tag":421,"props":1008,"children":1009},{"class":423,"line":661},[1010],{"type":380,"tag":421,"props":1011,"children":1012},{"style":482},[1013],{"type":389,"value":1014},"-- List a folder, then share a download link (valid 30 minutes by default)\n",{"type":380,"tag":421,"props":1016,"children":1017},{"class":423,"line":670},[1018,1022,1027,1031,1035,1039,1043,1047,1051,1055,1059],{"type":380,"tag":421,"props":1019,"children":1020},{"style":428},[1021],{"type":389,"value":811},{"type":380,"tag":421,"props":1023,"children":1024},{"style":451},[1025],{"type":389,"value":1026}," listing ",{"type":380,"tag":421,"props":1028,"children":1029},{"style":428},[1030],{"type":389,"value":821},{"type":380,"tag":421,"props":1032,"children":1033},{"style":451},[1034],{"type":389,"value":589},{"type":380,"tag":421,"props":1036,"children":1037},{"style":434},[1038],{"type":389,"value":693},{"type":380,"tag":421,"props":1040,"children":1041},{"style":451},[1042],{"type":389,"value":454},{"type":380,"tag":421,"props":1044,"children":1045},{"style":457},[1046],{"type":389,"value":702},{"type":380,"tag":421,"props":1048,"children":1049},{"style":451},[1050],{"type":389,"value":513},{"type":380,"tag":421,"props":1052,"children":1053},{"style":434},[1054],{"type":389,"value":711},{"type":380,"tag":421,"props":1056,"children":1057},{"style":451},[1058],{"type":389,"value":645},{"type":380,"tag":421,"props":1060,"children":1061},{"style":482},[1062],{"type":389,"value":1063},"-- { files = {...}, cursor = \"...\" }\n",{"type":380,"tag":421,"props":1065,"children":1066},{"class":423,"line":723},[1067,1071,1076,1080,1084,1088,1092,1096],{"type":380,"tag":421,"props":1068,"children":1069},{"style":428},[1070],{"type":389,"value":811},{"type":380,"tag":421,"props":1072,"children":1073},{"style":451},[1074],{"type":389,"value":1075}," link ",{"type":380,"tag":421,"props":1077,"children":1078},{"style":428},[1079],{"type":389,"value":821},{"type":380,"tag":421,"props":1081,"children":1082},{"style":451},[1083],{"type":389,"value":589},{"type":380,"tag":421,"props":1085,"children":1086},{"style":434},[1087],{"type":389,"value":746},{"type":380,"tag":421,"props":1089,"children":1090},{"style":451},[1091],{"type":389,"value":454},{"type":380,"tag":421,"props":1093,"children":1094},{"style":457},[1095],{"type":389,"value":508},{"type":380,"tag":421,"props":1097,"children":1098},{"style":451},[1099],{"type":389,"value":465},{"type":380,"tag":421,"props":1101,"children":1102},{"class":423,"line":761},[1103],{"type":380,"tag":421,"props":1104,"children":1105},{"emptyLinePlaceholder":472},[1106],{"type":389,"value":475},{"type":380,"tag":421,"props":1108,"children":1109},{"class":423,"line":769},[1110,1114,1118,1122,1126],{"type":380,"tag":421,"props":1111,"children":1112},{"style":451},[1113],{"type":389,"value":494},{"type":380,"tag":421,"props":1115,"children":1116},{"style":434},[1117],{"type":389,"value":779},{"type":380,"tag":421,"props":1119,"children":1120},{"style":451},[1121],{"type":389,"value":454},{"type":380,"tag":421,"props":1123,"children":1124},{"style":457},[1125],{"type":389,"value":508},{"type":380,"tag":421,"props":1127,"children":1128},{"style":451},[1129],{"type":389,"value":465},{"type":380,"tag":1131,"props":1132,"children":1134},"h2",{"id":1133},"how-stores-are-created-and-shared",[1135],{"type":389,"value":1136},"How stores are created and shared",{"type":380,"tag":381,"props":1138,"children":1139},{},[1140,1142,1148,1150,1156,1158,1164,1166,1172],{"type":389,"value":1141},"The name after ",{"type":380,"tag":392,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":389,"value":1147},"files:",{"type":389,"value":1149}," is the store. The first time a function runs ",{"type":380,"tag":392,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":389,"value":1155},"require(\"files:exports\")",{"type":389,"value":1157},", Webhook Relay creates an empty file store called ",{"type":380,"tag":392,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":389,"value":1163},"exports",{"type":389,"value":1165}," in your account and binds it to that function. Other functions that require ",{"type":380,"tag":392,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":389,"value":1171},"files:exports",{"type":389,"value":1173}," share it, so one function can write a file that another reads.",{"type":380,"tag":381,"props":1175,"children":1176},{},[1177,1179,1185,1187,1193,1195,1201,1203,1209],{"type":389,"value":1178},"Store names start with a letter, contain only letters, numbers, ",{"type":380,"tag":392,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":389,"value":1184},"_",{"type":389,"value":1186}," or ",{"type":380,"tag":392,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":389,"value":1192},"-",{"type":389,"value":1194},", and are at most 64 characters. Paths inside a store can contain ",{"type":380,"tag":392,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":389,"value":1200},"/",{"type":389,"value":1202},", which the dashboard and ",{"type":380,"tag":392,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":389,"value":1208},"list()",{"type":389,"value":1210}," treat as folders.",{"type":380,"tag":381,"props":1212,"children":1213},{},[1214,1216,1230],{"type":389,"value":1215},"In the dashboard, ",{"type":380,"tag":385,"props":1217,"children":1218},{},[1219,1221],{"type":389,"value":1220},"Functions → ",{"type":380,"tag":1222,"props":1223,"children":1227},"a",{"href":1224,"rel":1225},"https://my.webhookrelay.com/functions?tab=files",[1226],"nofollow",[1228],{"type":389,"value":1229},"Files Store",{"type":389,"value":1231}," lets you browse folders, upload and download files, and delete files or whole stores. Deleting a store works as a reset. The next run that requires the name gets a fresh, empty store.",{"type":380,"tag":1131,"props":1233,"children":1235},{"id":1234},"api",[1236],{"type":389,"value":1237},"API",{"type":380,"tag":381,"props":1239,"children":1240},{},[1241,1243,1249],{"type":389,"value":1242},"All methods are synchronous: they return the result directly, with no ",{"type":380,"tag":392,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":389,"value":1248},"await",{"type":389,"value":1250}," or callback.",{"type":380,"tag":1252,"props":1253,"children":1254},"table",{},[1255,1279],{"type":380,"tag":1256,"props":1257,"children":1258},"thead",{},[1259],{"type":380,"tag":1260,"props":1261,"children":1262},"tr",{},[1263,1269,1274],{"type":380,"tag":1264,"props":1265,"children":1266},"th",{},[1267],{"type":389,"value":1268},"Method",{"type":380,"tag":1264,"props":1270,"children":1271},{},[1272],{"type":389,"value":1273},"Returns",{"type":380,"tag":1264,"props":1275,"children":1276},{},[1277],{"type":389,"value":1278},"Notes",{"type":380,"tag":1280,"props":1281,"children":1282},"tbody",{},[1283,1310,1332,1354,1374,1398,1447,1470],{"type":380,"tag":1260,"props":1284,"children":1285},{},[1286,1296,1305],{"type":380,"tag":1287,"props":1288,"children":1289},"td",{},[1290],{"type":380,"tag":392,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":389,"value":1295},"files.put(path, content[, contentType])",{"type":380,"tag":1287,"props":1297,"children":1298},{},[1299],{"type":380,"tag":392,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":389,"value":1304},"true",{"type":380,"tag":1287,"props":1306,"children":1307},{},[1308],{"type":389,"value":1309},"Writes text content, replacing any existing file. Up to 32 MiB",{"type":380,"tag":1260,"props":1311,"children":1312},{},[1313,1322,1327],{"type":380,"tag":1287,"props":1314,"children":1315},{},[1316],{"type":380,"tag":392,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":389,"value":1321},"files.get(path)",{"type":380,"tag":1287,"props":1323,"children":1324},{},[1325],{"type":389,"value":1326},"string",{"type":380,"tag":1287,"props":1328,"children":1329},{},[1330],{"type":389,"value":1331},"Reads the file as text. Up to 8 MiB",{"type":380,"tag":1260,"props":1333,"children":1334},{},[1335,1344,1349],{"type":380,"tag":1287,"props":1336,"children":1337},{},[1338],{"type":380,"tag":392,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":389,"value":1343},"files.getBuffer(path)",{"type":380,"tag":1287,"props":1345,"children":1346},{},[1347],{"type":389,"value":1348},"base64 string",{"type":380,"tag":1287,"props":1350,"children":1351},{},[1352],{"type":389,"value":1353},"Reads binary content. Up to 8 MiB",{"type":380,"tag":1260,"props":1355,"children":1356},{},[1357,1366,1371],{"type":380,"tag":1287,"props":1358,"children":1359},{},[1360],{"type":380,"tag":392,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":389,"value":1365},"files.exists(path)",{"type":380,"tag":1287,"props":1367,"children":1368},{},[1369],{"type":389,"value":1370},"boolean",{"type":380,"tag":1287,"props":1372,"children":1373},{},[],{"type":380,"tag":1260,"props":1375,"children":1376},{},[1377,1386,1395],{"type":380,"tag":1287,"props":1378,"children":1379},{},[1380],{"type":380,"tag":392,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":389,"value":1385},"files.stat(path)",{"type":380,"tag":1287,"props":1387,"children":1388},{},[1389],{"type":380,"tag":392,"props":1390,"children":1392},{"className":1391},[],[1393],{"type":389,"value":1394},"{ path, size, content_type, modified_at }",{"type":380,"tag":1287,"props":1396,"children":1397},{},[],{"type":380,"tag":1260,"props":1399,"children":1400},{},[1401,1410,1419],{"type":380,"tag":1287,"props":1402,"children":1403},{},[1404],{"type":380,"tag":392,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":389,"value":1409},"files.list([prefix[, limit[, cursor]]])",{"type":380,"tag":1287,"props":1411,"children":1412},{},[1413],{"type":380,"tag":392,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":389,"value":1418},"{ files, cursor }",{"type":380,"tag":1287,"props":1420,"children":1421},{},[1422,1424,1430,1431,1437,1439,1445],{"type":389,"value":1423},"Each entry has ",{"type":380,"tag":392,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":389,"value":1429},"path",{"type":389,"value":513},{"type":380,"tag":392,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":389,"value":1436},"size",{"type":389,"value":1438}," and ",{"type":380,"tag":392,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":389,"value":1444},"modified_at",{"type":389,"value":1446},". 100 per page by default, up to 1,000",{"type":380,"tag":1260,"props":1448,"children":1449},{},[1450,1459,1467],{"type":380,"tag":1287,"props":1451,"children":1452},{},[1453],{"type":380,"tag":392,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":389,"value":1458},"files.delete(path)",{"type":380,"tag":1287,"props":1460,"children":1461},{},[1462],{"type":380,"tag":392,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":389,"value":1304},{"type":380,"tag":1287,"props":1468,"children":1469},{},[],{"type":380,"tag":1260,"props":1471,"children":1472},{},[1473,1482,1486],{"type":380,"tag":1287,"props":1474,"children":1475},{},[1476],{"type":380,"tag":392,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":389,"value":1481},"files.url(path[, method[, ttl]])",{"type":380,"tag":1287,"props":1483,"children":1484},{},[1485],{"type":389,"value":1326},{"type":380,"tag":1287,"props":1487,"children":1488},{},[1489,1491,1497,1499,1505,1507,1513],{"type":389,"value":1490},"Pre-signed URL. ",{"type":380,"tag":392,"props":1492,"children":1494},{"className":1493},[],[1495],{"type":389,"value":1496},"method",{"type":389,"value":1498}," defaults to ",{"type":380,"tag":392,"props":1500,"children":1502},{"className":1501},[],[1503],{"type":389,"value":1504},"GET",{"type":389,"value":1506},"; ",{"type":380,"tag":392,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":389,"value":1512},"ttl",{"type":389,"value":1514}," in seconds defaults to 30 minutes, up to 7 days",{"type":380,"tag":381,"props":1516,"children":1517},{},[1518],{"type":389,"value":1519},"A missing file, an oversized read or a storage failure is thrown as an exception with a short message.",{"type":380,"tag":1131,"props":1521,"children":1523},{"id":1522},"archive-webhook-payloads",[1524],{"type":389,"value":1525},"Archive webhook payloads",{"type":380,"tag":381,"props":1527,"children":1528},{},[1529],{"type":389,"value":1530},"Keep a copy of every event, one file per day, alongside the normal delivery:",{"type":380,"tag":411,"props":1532,"children":1534},{"className":413,"code":1533,"language":415,"meta":351,"style":351},"const files = require(\"files:archive\")\nconst event = JSON.parse(r.body)\n\nconst day = new Date().toISOString().slice(0, 10)       // 2026-10-28\nfiles.put(\"stripe/\" + day + \"/\" + event.id + \".json\", r.body, \"application/json\")\n",[1535],{"type":380,"tag":392,"props":1536,"children":1537},{"__ignoreMap":351},[1538,1570,1606,1613,1686],{"type":380,"tag":421,"props":1539,"children":1540},{"class":423,"line":424},[1541,1545,1549,1553,1557,1561,1566],{"type":380,"tag":421,"props":1542,"children":1543},{"style":428},[1544],{"type":389,"value":431},{"type":380,"tag":421,"props":1546,"children":1547},{"style":434},[1548],{"type":389,"value":437},{"type":380,"tag":421,"props":1550,"children":1551},{"style":428},[1552],{"type":389,"value":442},{"type":380,"tag":421,"props":1554,"children":1555},{"style":445},[1556],{"type":389,"value":448},{"type":380,"tag":421,"props":1558,"children":1559},{"style":451},[1560],{"type":389,"value":454},{"type":380,"tag":421,"props":1562,"children":1563},{"style":457},[1564],{"type":389,"value":1565},"\"files:archive\"",{"type":380,"tag":421,"props":1567,"children":1568},{"style":451},[1569],{"type":389,"value":465},{"type":380,"tag":421,"props":1571,"children":1572},{"class":423,"line":468},[1573,1577,1582,1586,1591,1596,1601],{"type":380,"tag":421,"props":1574,"children":1575},{"style":428},[1576],{"type":389,"value":431},{"type":380,"tag":421,"props":1578,"children":1579},{"style":434},[1580],{"type":389,"value":1581}," event",{"type":380,"tag":421,"props":1583,"children":1584},{"style":428},[1585],{"type":389,"value":442},{"type":380,"tag":421,"props":1587,"children":1588},{"style":434},[1589],{"type":389,"value":1590}," JSON",{"type":380,"tag":421,"props":1592,"children":1593},{"style":451},[1594],{"type":389,"value":1595},".",{"type":380,"tag":421,"props":1597,"children":1598},{"style":445},[1599],{"type":389,"value":1600},"parse",{"type":380,"tag":421,"props":1602,"children":1603},{"style":451},[1604],{"type":389,"value":1605},"(r.body)\n",{"type":380,"tag":421,"props":1607,"children":1608},{"class":423,"line":478},[1609],{"type":380,"tag":421,"props":1610,"children":1611},{"emptyLinePlaceholder":472},[1612],{"type":389,"value":475},{"type":380,"tag":421,"props":1614,"children":1615},{"class":423,"line":488},[1616,1620,1625,1629,1634,1639,1644,1649,1653,1658,1662,1667,1671,1676,1681],{"type":380,"tag":421,"props":1617,"children":1618},{"style":428},[1619],{"type":389,"value":431},{"type":380,"tag":421,"props":1621,"children":1622},{"style":434},[1623],{"type":389,"value":1624}," day",{"type":380,"tag":421,"props":1626,"children":1627},{"style":428},[1628],{"type":389,"value":442},{"type":380,"tag":421,"props":1630,"children":1631},{"style":428},[1632],{"type":389,"value":1633}," new",{"type":380,"tag":421,"props":1635,"children":1636},{"style":445},[1637],{"type":389,"value":1638}," Date",{"type":380,"tag":421,"props":1640,"children":1641},{"style":451},[1642],{"type":389,"value":1643},"().",{"type":380,"tag":421,"props":1645,"children":1646},{"style":445},[1647],{"type":389,"value":1648},"toISOString",{"type":380,"tag":421,"props":1650,"children":1651},{"style":451},[1652],{"type":389,"value":1643},{"type":380,"tag":421,"props":1654,"children":1655},{"style":445},[1656],{"type":389,"value":1657},"slice",{"type":380,"tag":421,"props":1659,"children":1660},{"style":451},[1661],{"type":389,"value":454},{"type":380,"tag":421,"props":1663,"children":1664},{"style":434},[1665],{"type":389,"value":1666},"0",{"type":380,"tag":421,"props":1668,"children":1669},{"style":451},[1670],{"type":389,"value":513},{"type":380,"tag":421,"props":1672,"children":1673},{"style":434},[1674],{"type":389,"value":1675},"10",{"type":380,"tag":421,"props":1677,"children":1678},{"style":451},[1679],{"type":389,"value":1680},")       ",{"type":380,"tag":421,"props":1682,"children":1683},{"style":482},[1684],{"type":389,"value":1685},"// 2026-10-28\n",{"type":380,"tag":421,"props":1687,"children":1688},{"class":423,"line":553},[1689,1693,1697,1701,1706,1711,1716,1721,1726,1730,1735,1739,1744,1749,1754],{"type":380,"tag":421,"props":1690,"children":1691},{"style":451},[1692],{"type":389,"value":494},{"type":380,"tag":421,"props":1694,"children":1695},{"style":445},[1696],{"type":389,"value":499},{"type":380,"tag":421,"props":1698,"children":1699},{"style":451},[1700],{"type":389,"value":454},{"type":380,"tag":421,"props":1702,"children":1703},{"style":457},[1704],{"type":389,"value":1705},"\"stripe/\"",{"type":380,"tag":421,"props":1707,"children":1708},{"style":428},[1709],{"type":389,"value":1710}," +",{"type":380,"tag":421,"props":1712,"children":1713},{"style":451},[1714],{"type":389,"value":1715}," day ",{"type":380,"tag":421,"props":1717,"children":1718},{"style":428},[1719],{"type":389,"value":1720},"+",{"type":380,"tag":421,"props":1722,"children":1723},{"style":457},[1724],{"type":389,"value":1725}," \"/\"",{"type":380,"tag":421,"props":1727,"children":1728},{"style":428},[1729],{"type":389,"value":1710},{"type":380,"tag":421,"props":1731,"children":1732},{"style":451},[1733],{"type":389,"value":1734}," event.id ",{"type":380,"tag":421,"props":1736,"children":1737},{"style":428},[1738],{"type":389,"value":1720},{"type":380,"tag":421,"props":1740,"children":1741},{"style":457},[1742],{"type":389,"value":1743}," \".json\"",{"type":380,"tag":421,"props":1745,"children":1746},{"style":451},[1747],{"type":389,"value":1748},", r.body, ",{"type":380,"tag":421,"props":1750,"children":1751},{"style":457},[1752],{"type":389,"value":1753},"\"application/json\"",{"type":380,"tag":421,"props":1755,"children":1756},{"style":451},[1757],{"type":389,"value":465},{"type":380,"tag":381,"props":1759,"children":1760},{},[1761,1763,1769,1771,1776,1777,1782],{"type":389,"value":1762},"The request is forwarded as usual. The archive is a side effect you can list later with ",{"type":380,"tag":392,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":389,"value":1768},"files.list(\"stripe/2026-10-28/\")",{"type":389,"value":1770},". For high volume or long retention, a ",{"type":380,"tag":1222,"props":1772,"children":1773},{"href":116},[1774],{"type":389,"value":1775},"GCS",{"type":389,"value":1186},{"type":380,"tag":1222,"props":1778,"children":1779},{"href":104},[1780],{"type":389,"value":1781},"S3",{"type":389,"value":1783}," service connection writes straight to your own bucket instead.",{"type":380,"tag":1131,"props":1785,"children":1787},{"id":1786},"build-a-report-and-share-a-link",[1788],{"type":389,"value":1789},"Build a report and share a link",{"type":380,"tag":381,"props":1791,"children":1792},{},[1793,1795,1800],{"type":389,"value":1794},"Append rows during the day and send a link when a ",{"type":380,"tag":1222,"props":1796,"children":1797},{"href":242},[1798],{"type":389,"value":1799},"scheduled webhook",{"type":389,"value":1801}," fires:",{"type":380,"tag":411,"props":1803,"children":1805},{"className":413,"code":1804,"language":415,"meta":351,"style":351},"const files = require(\"files:reports\")\nconst path = \"orders/\" + new Date().toISOString().slice(0, 10) + \".csv\"\n\nconst existing = files.exists(path) ? files.get(path) : \"id,total\\n\"\nconst order = JSON.parse(r.body)\nfiles.put(path, existing + order.id + \",\" + order.total + \"\\n\", \"text/csv\")\n\n// Later, from the scheduled run: a link that works for 24 hours\n// const link = files.url(path, \"GET\", 24 * 3600)\n",[1806],{"type":380,"tag":392,"props":1807,"children":1808},{"__ignoreMap":351},[1809,1841,1919,1926,1992,2024,2096,2103,2111],{"type":380,"tag":421,"props":1810,"children":1811},{"class":423,"line":424},[1812,1816,1820,1824,1828,1832,1837],{"type":380,"tag":421,"props":1813,"children":1814},{"style":428},[1815],{"type":389,"value":431},{"type":380,"tag":421,"props":1817,"children":1818},{"style":434},[1819],{"type":389,"value":437},{"type":380,"tag":421,"props":1821,"children":1822},{"style":428},[1823],{"type":389,"value":442},{"type":380,"tag":421,"props":1825,"children":1826},{"style":445},[1827],{"type":389,"value":448},{"type":380,"tag":421,"props":1829,"children":1830},{"style":451},[1831],{"type":389,"value":454},{"type":380,"tag":421,"props":1833,"children":1834},{"style":457},[1835],{"type":389,"value":1836},"\"files:reports\"",{"type":380,"tag":421,"props":1838,"children":1839},{"style":451},[1840],{"type":389,"value":465},{"type":380,"tag":421,"props":1842,"children":1843},{"class":423,"line":468},[1844,1848,1853,1857,1862,1866,1870,1874,1878,1882,1886,1890,1894,1898,1902,1906,1910,1914],{"type":380,"tag":421,"props":1845,"children":1846},{"style":428},[1847],{"type":389,"value":431},{"type":380,"tag":421,"props":1849,"children":1850},{"style":434},[1851],{"type":389,"value":1852}," path",{"type":380,"tag":421,"props":1854,"children":1855},{"style":428},[1856],{"type":389,"value":442},{"type":380,"tag":421,"props":1858,"children":1859},{"style":457},[1860],{"type":389,"value":1861}," \"orders/\"",{"type":380,"tag":421,"props":1863,"children":1864},{"style":428},[1865],{"type":389,"value":1710},{"type":380,"tag":421,"props":1867,"children":1868},{"style":428},[1869],{"type":389,"value":1633},{"type":380,"tag":421,"props":1871,"children":1872},{"style":445},[1873],{"type":389,"value":1638},{"type":380,"tag":421,"props":1875,"children":1876},{"style":451},[1877],{"type":389,"value":1643},{"type":380,"tag":421,"props":1879,"children":1880},{"style":445},[1881],{"type":389,"value":1648},{"type":380,"tag":421,"props":1883,"children":1884},{"style":451},[1885],{"type":389,"value":1643},{"type":380,"tag":421,"props":1887,"children":1888},{"style":445},[1889],{"type":389,"value":1657},{"type":380,"tag":421,"props":1891,"children":1892},{"style":451},[1893],{"type":389,"value":454},{"type":380,"tag":421,"props":1895,"children":1896},{"style":434},[1897],{"type":389,"value":1666},{"type":380,"tag":421,"props":1899,"children":1900},{"style":451},[1901],{"type":389,"value":513},{"type":380,"tag":421,"props":1903,"children":1904},{"style":434},[1905],{"type":389,"value":1675},{"type":380,"tag":421,"props":1907,"children":1908},{"style":451},[1909],{"type":389,"value":645},{"type":380,"tag":421,"props":1911,"children":1912},{"style":428},[1913],{"type":389,"value":1720},{"type":380,"tag":421,"props":1915,"children":1916},{"style":457},[1917],{"type":389,"value":1918}," \".csv\"\n",{"type":380,"tag":421,"props":1920,"children":1921},{"class":423,"line":478},[1922],{"type":380,"tag":421,"props":1923,"children":1924},{"emptyLinePlaceholder":472},[1925],{"type":389,"value":475},{"type":380,"tag":421,"props":1927,"children":1928},{"class":423,"line":488},[1929,1933,1938,1942,1946,1951,1956,1961,1965,1969,1973,1978,1983,1987],{"type":380,"tag":421,"props":1930,"children":1931},{"style":428},[1932],{"type":389,"value":431},{"type":380,"tag":421,"props":1934,"children":1935},{"style":434},[1936],{"type":389,"value":1937}," existing",{"type":380,"tag":421,"props":1939,"children":1940},{"style":428},[1941],{"type":389,"value":442},{"type":380,"tag":421,"props":1943,"children":1944},{"style":451},[1945],{"type":389,"value":589},{"type":380,"tag":421,"props":1947,"children":1948},{"style":445},[1949],{"type":389,"value":1950},"exists",{"type":380,"tag":421,"props":1952,"children":1953},{"style":451},[1954],{"type":389,"value":1955},"(path) ",{"type":380,"tag":421,"props":1957,"children":1958},{"style":428},[1959],{"type":389,"value":1960},"?",{"type":380,"tag":421,"props":1962,"children":1963},{"style":451},[1964],{"type":389,"value":589},{"type":380,"tag":421,"props":1966,"children":1967},{"style":445},[1968],{"type":389,"value":594},{"type":380,"tag":421,"props":1970,"children":1971},{"style":451},[1972],{"type":389,"value":1955},{"type":380,"tag":421,"props":1974,"children":1975},{"style":428},[1976],{"type":389,"value":1977},":",{"type":380,"tag":421,"props":1979,"children":1980},{"style":457},[1981],{"type":389,"value":1982}," \"id,total",{"type":380,"tag":421,"props":1984,"children":1985},{"style":434},[1986],{"type":389,"value":523},{"type":380,"tag":421,"props":1988,"children":1989},{"style":457},[1990],{"type":389,"value":1991},"\"\n",{"type":380,"tag":421,"props":1993,"children":1994},{"class":423,"line":553},[1995,1999,2004,2008,2012,2016,2020],{"type":380,"tag":421,"props":1996,"children":1997},{"style":428},[1998],{"type":389,"value":431},{"type":380,"tag":421,"props":2000,"children":2001},{"style":434},[2002],{"type":389,"value":2003}," order",{"type":380,"tag":421,"props":2005,"children":2006},{"style":428},[2007],{"type":389,"value":442},{"type":380,"tag":421,"props":2009,"children":2010},{"style":434},[2011],{"type":389,"value":1590},{"type":380,"tag":421,"props":2013,"children":2014},{"style":451},[2015],{"type":389,"value":1595},{"type":380,"tag":421,"props":2017,"children":2018},{"style":445},[2019],{"type":389,"value":1600},{"type":380,"tag":421,"props":2021,"children":2022},{"style":451},[2023],{"type":389,"value":1605},{"type":380,"tag":421,"props":2025,"children":2026},{"class":423,"line":561},[2027,2031,2035,2040,2044,2049,2053,2058,2062,2067,2071,2076,2080,2084,2088,2092],{"type":380,"tag":421,"props":2028,"children":2029},{"style":451},[2030],{"type":389,"value":494},{"type":380,"tag":421,"props":2032,"children":2033},{"style":445},[2034],{"type":389,"value":499},{"type":380,"tag":421,"props":2036,"children":2037},{"style":451},[2038],{"type":389,"value":2039},"(path, existing ",{"type":380,"tag":421,"props":2041,"children":2042},{"style":428},[2043],{"type":389,"value":1720},{"type":380,"tag":421,"props":2045,"children":2046},{"style":451},[2047],{"type":389,"value":2048}," order.id ",{"type":380,"tag":421,"props":2050,"children":2051},{"style":428},[2052],{"type":389,"value":1720},{"type":380,"tag":421,"props":2054,"children":2055},{"style":457},[2056],{"type":389,"value":2057}," \",\"",{"type":380,"tag":421,"props":2059,"children":2060},{"style":428},[2061],{"type":389,"value":1710},{"type":380,"tag":421,"props":2063,"children":2064},{"style":451},[2065],{"type":389,"value":2066}," order.total ",{"type":380,"tag":421,"props":2068,"children":2069},{"style":428},[2070],{"type":389,"value":1720},{"type":380,"tag":421,"props":2072,"children":2073},{"style":457},[2074],{"type":389,"value":2075}," \"",{"type":380,"tag":421,"props":2077,"children":2078},{"style":434},[2079],{"type":389,"value":523},{"type":380,"tag":421,"props":2081,"children":2082},{"style":457},[2083],{"type":389,"value":537},{"type":380,"tag":421,"props":2085,"children":2086},{"style":451},[2087],{"type":389,"value":513},{"type":380,"tag":421,"props":2089,"children":2090},{"style":457},[2091],{"type":389,"value":546},{"type":380,"tag":421,"props":2093,"children":2094},{"style":451},[2095],{"type":389,"value":465},{"type":380,"tag":421,"props":2097,"children":2098},{"class":423,"line":570},[2099],{"type":380,"tag":421,"props":2100,"children":2101},{"emptyLinePlaceholder":472},[2102],{"type":389,"value":475},{"type":380,"tag":421,"props":2104,"children":2105},{"class":423,"line":609},[2106],{"type":380,"tag":421,"props":2107,"children":2108},{"style":482},[2109],{"type":389,"value":2110},"// Later, from the scheduled run: a link that works for 24 hours\n",{"type":380,"tag":421,"props":2112,"children":2113},{"class":423,"line":653},[2114],{"type":380,"tag":421,"props":2115,"children":2116},{"style":482},[2117],{"type":389,"value":2118},"// const link = files.url(path, \"GET\", 24 * 3600)\n",{"type":380,"tag":381,"props":2120,"children":2121},{},[2122],{"type":389,"value":2123},"Read-modify-write is not atomic, so two webhooks arriving at the same moment can overwrite each other's row. For an exact ledger, write one file per event and combine them when you build the report.",{"type":380,"tag":1131,"props":2125,"children":2127},{"id":2126},"large-files-and-uploads",[2128],{"type":389,"value":2129},"Large files and uploads",{"type":380,"tag":381,"props":2131,"children":2132},{},[2133],{"type":389,"value":2134},"Function code works with files up to 32 MiB on write and 8 MiB on read. For anything bigger, or for binary uploads such as images and PDFs, create a pre-signed URL and transfer the bytes directly:",{"type":380,"tag":411,"props":2136,"children":2138},{"className":413,"code":2137,"language":415,"meta":351,"style":351},"const files = require(\"files:uploads\")\nconst uploadUrl = files.url(\"invoices/inv_123.pdf\", \"PUT\", 600)   // valid for 10 minutes\nr.setResponseBody(JSON.stringify({ upload_url: uploadUrl }))\n",[2139],{"type":380,"tag":392,"props":2140,"children":2141},{"__ignoreMap":351},[2142,2174,2235],{"type":380,"tag":421,"props":2143,"children":2144},{"class":423,"line":424},[2145,2149,2153,2157,2161,2165,2170],{"type":380,"tag":421,"props":2146,"children":2147},{"style":428},[2148],{"type":389,"value":431},{"type":380,"tag":421,"props":2150,"children":2151},{"style":434},[2152],{"type":389,"value":437},{"type":380,"tag":421,"props":2154,"children":2155},{"style":428},[2156],{"type":389,"value":442},{"type":380,"tag":421,"props":2158,"children":2159},{"style":445},[2160],{"type":389,"value":448},{"type":380,"tag":421,"props":2162,"children":2163},{"style":451},[2164],{"type":389,"value":454},{"type":380,"tag":421,"props":2166,"children":2167},{"style":457},[2168],{"type":389,"value":2169},"\"files:uploads\"",{"type":380,"tag":421,"props":2171,"children":2172},{"style":451},[2173],{"type":389,"value":465},{"type":380,"tag":421,"props":2175,"children":2176},{"class":423,"line":468},[2177,2181,2186,2190,2194,2198,2202,2207,2211,2216,2220,2225,2230],{"type":380,"tag":421,"props":2178,"children":2179},{"style":428},[2180],{"type":389,"value":431},{"type":380,"tag":421,"props":2182,"children":2183},{"style":434},[2184],{"type":389,"value":2185}," uploadUrl",{"type":380,"tag":421,"props":2187,"children":2188},{"style":428},[2189],{"type":389,"value":442},{"type":380,"tag":421,"props":2191,"children":2192},{"style":451},[2193],{"type":389,"value":589},{"type":380,"tag":421,"props":2195,"children":2196},{"style":445},[2197],{"type":389,"value":746},{"type":380,"tag":421,"props":2199,"children":2200},{"style":451},[2201],{"type":389,"value":454},{"type":380,"tag":421,"props":2203,"children":2204},{"style":457},[2205],{"type":389,"value":2206},"\"invoices/inv_123.pdf\"",{"type":380,"tag":421,"props":2208,"children":2209},{"style":451},[2210],{"type":389,"value":513},{"type":380,"tag":421,"props":2212,"children":2213},{"style":457},[2214],{"type":389,"value":2215},"\"PUT\"",{"type":380,"tag":421,"props":2217,"children":2218},{"style":451},[2219],{"type":389,"value":513},{"type":380,"tag":421,"props":2221,"children":2222},{"style":434},[2223],{"type":389,"value":2224},"600",{"type":380,"tag":421,"props":2226,"children":2227},{"style":451},[2228],{"type":389,"value":2229},")   ",{"type":380,"tag":421,"props":2231,"children":2232},{"style":482},[2233],{"type":389,"value":2234},"// valid for 10 minutes\n",{"type":380,"tag":421,"props":2236,"children":2237},{"class":423,"line":478},[2238,2243,2248,2252,2257,2261,2266],{"type":380,"tag":421,"props":2239,"children":2240},{"style":451},[2241],{"type":389,"value":2242},"r.",{"type":380,"tag":421,"props":2244,"children":2245},{"style":445},[2246],{"type":389,"value":2247},"setResponseBody",{"type":380,"tag":421,"props":2249,"children":2250},{"style":451},[2251],{"type":389,"value":454},{"type":380,"tag":421,"props":2253,"children":2254},{"style":434},[2255],{"type":389,"value":2256},"JSON",{"type":380,"tag":421,"props":2258,"children":2259},{"style":451},[2260],{"type":389,"value":1595},{"type":380,"tag":421,"props":2262,"children":2263},{"style":445},[2264],{"type":389,"value":2265},"stringify",{"type":380,"tag":421,"props":2267,"children":2268},{"style":451},[2269],{"type":389,"value":2270},"({ upload_url: uploadUrl }))\n",{"type":380,"tag":381,"props":2272,"children":2273},{},[2274,2276,2282,2284,2290,2292,2298],{"type":389,"value":2275},"The client then ",{"type":380,"tag":392,"props":2277,"children":2279},{"className":2278},[],[2280],{"type":389,"value":2281},"PUT",{"type":389,"value":2283},"s the file to that URL, and later runs read its metadata with ",{"type":380,"tag":392,"props":2285,"children":2287},{"className":2286},[],[2288],{"type":389,"value":2289},"files.stat()",{"type":389,"value":2291}," or share it with ",{"type":380,"tag":392,"props":2293,"children":2295},{"className":2294},[],[2296],{"type":389,"value":2297},"files.url()",{"type":389,"value":1595},{"type":380,"tag":1131,"props":2300,"children":2302},{"id":2301},"limits",[2303],{"type":389,"value":2304},"Limits",{"type":380,"tag":1252,"props":2306,"children":2307},{},[2308,2324],{"type":380,"tag":1256,"props":2309,"children":2310},{},[2311],{"type":380,"tag":1260,"props":2312,"children":2313},{},[2314,2319],{"type":380,"tag":1264,"props":2315,"children":2316},{},[2317],{"type":389,"value":2318},"Limit",{"type":380,"tag":1264,"props":2320,"children":2321},{},[2322],{"type":389,"value":2323},"Value",{"type":380,"tag":1280,"props":2325,"children":2326},{},[2327,2340,2368,2381,2399,2412],{"type":380,"tag":1260,"props":2328,"children":2329},{},[2330,2335],{"type":380,"tag":1287,"props":2331,"children":2332},{},[2333],{"type":389,"value":2334},"Single write from a function",{"type":380,"tag":1287,"props":2336,"children":2337},{},[2338],{"type":389,"value":2339},"32 MiB",{"type":380,"tag":1260,"props":2341,"children":2342},{},[2343,2363],{"type":380,"tag":1287,"props":2344,"children":2345},{},[2346,2348,2353,2355,2361],{"type":389,"value":2347},"Single read (",{"type":380,"tag":392,"props":2349,"children":2351},{"className":2350},[],[2352],{"type":389,"value":594},{"type":389,"value":2354}," / ",{"type":380,"tag":392,"props":2356,"children":2358},{"className":2357},[],[2359],{"type":389,"value":2360},"getBuffer",{"type":389,"value":2362},")",{"type":380,"tag":1287,"props":2364,"children":2365},{},[2366],{"type":389,"value":2367},"8 MiB",{"type":380,"tag":1260,"props":2369,"children":2370},{},[2371,2376],{"type":380,"tag":1287,"props":2372,"children":2373},{},[2374],{"type":389,"value":2375},"File path",{"type":380,"tag":1287,"props":2377,"children":2378},{},[2379],{"type":389,"value":2380},"1,024 bytes",{"type":380,"tag":1260,"props":2382,"children":2383},{},[2384,2394],{"type":380,"tag":1287,"props":2385,"children":2386},{},[2387,2392],{"type":380,"tag":392,"props":2388,"children":2390},{"className":2389},[],[2391],{"type":389,"value":1208},{"type":389,"value":2393}," page size",{"type":380,"tag":1287,"props":2395,"children":2396},{},[2397],{"type":389,"value":2398},"100 by default, up to 1,000",{"type":380,"tag":1260,"props":2400,"children":2401},{},[2402,2407],{"type":380,"tag":1287,"props":2403,"children":2404},{},[2405],{"type":389,"value":2406},"Pre-signed URL lifetime",{"type":380,"tag":1287,"props":2408,"children":2409},{},[2410],{"type":389,"value":2411},"30 minutes by default, up to 7 days",{"type":380,"tag":1260,"props":2413,"children":2414},{},[2415,2420],{"type":380,"tag":1287,"props":2416,"children":2417},{},[2418],{"type":389,"value":2419},"Stores per account",{"type":380,"tag":1287,"props":2421,"children":2422},{},[2423],{"type":389,"value":2424},"50 (KV and file stores combined)",{"type":380,"tag":381,"props":2426,"children":2427},{},[2428,2430,2435],{"type":389,"value":2429},"For small structured values, such as IDs, tokens, counters and cursors, the ",{"type":380,"tag":1222,"props":2431,"children":2432},{"href":307},[2433],{"type":389,"value":2434},"KV store",{"type":389,"value":2436}," is simpler and supports TTL.",{"type":380,"tag":1131,"props":2438,"children":2440},{"id":2439},"manage-files-from-the-api-mcp-or-an-agent",[2441],{"type":389,"value":2442},"Manage files from the API, MCP or an agent",{"type":380,"tag":381,"props":2444,"children":2445},{},[2446,2448,2454,2456,2461,2463,2469,2470,2476,2477,2483,2484,2490,2491,2497],{"type":389,"value":2447},"File stores are also available through the REST API under ",{"type":380,"tag":392,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":389,"value":2453},"/v1/function-stores",{"type":389,"value":2455}," (list, upload, download, stat, delete and pre-signed URLs) and through the ",{"type":380,"tag":1222,"props":2457,"children":2458},{"href":62},[2459],{"type":389,"value":2460},"Webhook Relay MCP server",{"type":389,"value":2462},". The MCP tools include ",{"type":380,"tag":392,"props":2464,"children":2466},{"className":2465},[],[2467],{"type":389,"value":2468},"list_function_store_files",{"type":389,"value":513},{"type":380,"tag":392,"props":2471,"children":2473},{"className":2472},[],[2474],{"type":389,"value":2475},"read_function_store_file",{"type":389,"value":513},{"type":380,"tag":392,"props":2478,"children":2480},{"className":2479},[],[2481],{"type":389,"value":2482},"write_function_store_file",{"type":389,"value":513},{"type":380,"tag":392,"props":2485,"children":2487},{"className":2486},[],[2488],{"type":389,"value":2489},"get_function_store_file_url",{"type":389,"value":1438},{"type":380,"tag":392,"props":2492,"children":2494},{"className":2493},[],[2495],{"type":389,"value":2496},"create_function_store_upload_url",{"type":389,"value":1595},{"type":380,"tag":1131,"props":2499,"children":2501},{"id":2500},"migrating-from-pipedream-file-stores",[2502],{"type":389,"value":2503},"Migrating from Pipedream File Stores",{"type":380,"tag":381,"props":2505,"children":2506},{},[2507,2509,2515,2517,2523,2525,2530,2531,2536,2538,2543,2545,2551],{"type":389,"value":2508},"Pipedream steps stage files on ",{"type":380,"tag":392,"props":2510,"children":2512},{"className":2511},[],[2513],{"type":389,"value":2514},"/tmp",{"type":389,"value":2516},", which Webhook Relay's sandbox does not have. When porting, replace ",{"type":380,"tag":392,"props":2518,"children":2520},{"className":2519},[],[2521],{"type":389,"value":2522},"$.files.open(path).toFile(\"/tmp/x\")",{"type":389,"value":2524}," with ",{"type":380,"tag":392,"props":2526,"children":2528},{"className":2527},[],[2529],{"type":389,"value":1321},{"type":389,"value":1186},{"type":380,"tag":392,"props":2532,"children":2534},{"className":2533},[],[2535],{"type":389,"value":1343},{"type":389,"value":2537},", and pass bytes or a ",{"type":380,"tag":392,"props":2539,"children":2541},{"className":2540},[],[2542],{"type":389,"value":2297},{"type":389,"value":2544}," link to the next step instead of a local path. The ",{"type":380,"tag":1222,"props":2546,"children":2548},{"href":2547},"/blog/pipedream-workflows-shutdown-migration",[2549],{"type":389,"value":2550},"Pipedream Workflows migration guide",{"type":389,"value":2552}," covers the rest of the mapping.",{"type":380,"tag":2554,"props":2555,"children":2556},"style",{},[2557],{"type":389,"value":2558},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":351,"searchDepth":478,"depth":478,"links":2560},[2561,2562,2563,2564,2565,2566,2567,2568],{"id":1133,"depth":468,"text":1136},{"id":1234,"depth":468,"text":1237},{"id":1522,"depth":468,"text":1525},{"id":1786,"depth":468,"text":1789},{"id":2126,"depth":468,"text":2129},{"id":2301,"depth":468,"text":2304},{"id":2439,"depth":468,"text":2442},{"id":2500,"depth":468,"text":2503},"markdown","content:docs:webhooks:functions:20.file-store.md","content","docs/webhooks/functions/20.file-store.md","docs/webhooks/functions/20.file-store","md",{"loc":310},1793185647767]