{
  "catalog_version": "3.6.0",
  "ports": [
    "auth.signup",
    "auth.signin",
    "auth.signout",
    "auth.refresh",
    "auth.session",
    "auth.me",
    "auth.profile",
    "auth.magic_link_request",
    "auth.magic_link_verify",
    "auth.otp_request",
    "auth.otp_verify",
    "auth.verify_email",
    "auth.invite_accept",
    "auth.password_reset_request",
    "auth.password_reset",
    "auth.users_list",
    "auth.users_create",
    "auth.users_get",
    "auth.users_update",
    "auth.users_delete",
    "auth.users_set_password",
    "records.search",
    "records.query",
    "records.create",
    "records.update",
    "records.delete",
    "storage.presign_upload",
    "storage.list",
    "storage.get",
    "storage.delete",
    "storage.confirm",
    "storage.presign_download",
    "storage.copy",
    "storage.move",
    "storage.attach",
    "storage.metadata",
    "bookings.list_resources",
    "bookings.upsert_resource",
    "bookings.availability",
    "bookings.reserve",
    "bookings.get",
    "bookings.cancel",
    "jobs.email_send",
    "jobs.form_forward",
    "jobs.webhook_dispatch",
    "jobs.integration_execute",
    "jobs.dropbox_import",
    "jobs.storage_extract",
    "jobs.voice_call_outbound",
    "jobs.voice_tool_execute",
    "jobs.booking_reserve",
    "jobs.booking_cancel",
    "jobs.inventory_reserve",
    "jobs.inventory_release",
    "jobs.inventory_commit",
    "jobs.record_renew",
    "jobs.workforce_shift_assign",
    "jobs.workforce_shift_release",
    "inventory.reservations.list",
    "inventory.reservations.get",
    "workforce.shifts.list",
    "workforce.shifts.get",
    "jobs.reminder_send",
    "jobs.reminder_schedule",
    "jobs.payment_checkout_create",
    "jobs.payment_capture",
    "jobs.payment_refund",
    "jobs.payment_catalog_upsert",
    "jobs.get",
    "jobs.result",
    "jobs.cancel",
    "ai.embed",
    "ai.search",
    "ai.complete",
    "functions.invoke",
    "records.aggregate",
    "records.facet",
    "records.bulk_update",
    "records.bulk_delete",
    "imports.create",
    "imports.get",
    "imports.preview",
    "imports.map_fields",
    "imports.validate",
    "imports.commit",
    "imports.cancel"
  ],
  "routes": [
    "/api/auth/signup",
    "/api/auth/signin",
    "/api/auth/signout",
    "/api/auth/refresh",
    "/api/auth/session",
    "/api/auth/me",
    "/api/auth/me",
    "/api/auth/magic-link/request",
    "/api/auth/magic-link/verify",
    "/api/auth/otp/request",
    "/api/auth/otp/verify",
    "/api/auth/verify-email",
    "/api/auth/invite/accept",
    "/api/auth/forgot-password",
    "/api/auth/reset-password",
    "/api/admin/users",
    "/api/admin/users",
    "/api/admin/users/:user_id",
    "/api/admin/users/:user_id",
    "/api/admin/users/:user_id",
    "/api/admin/users/:user_id/password",
    "/api/records/search",
    "/api/records/:entity/query",
    "/api/records/:entity",
    "/api/records/:entity/:id",
    "/api/records/:entity/:id",
    "/api/storage/:bucket/presign",
    "/api/storage/:bucket/files",
    "/api/storage/:bucket/files/:fid",
    "/api/storage/:bucket/files/:fid",
    "/api/storage/:bucket/files/:fid/confirm",
    "/api/storage/:bucket/files/:fid/presign-download",
    "/api/storage/:bucket/files/:fid/copy",
    "/api/storage/:bucket/files/:fid/move",
    "/api/storage/:bucket/files/:fid/attach",
    "/api/storage/:bucket/files/:fid/metadata",
    "/api/bookings/resources",
    "/api/bookings/resources",
    "/api/bookings/resources/:resource_key/availability",
    "/api/bookings/reserve",
    "/api/bookings/:reservation_id",
    "/api/bookings/:reservation_id/cancel",
    "/api/jobs/email.send",
    "/api/jobs/form.forward",
    "/api/jobs/webhook.dispatch",
    "/api/jobs/integration.execute",
    "/api/jobs/dropbox.import",
    "/api/jobs/storage.extract",
    "/api/jobs/voice.call.outbound",
    "/api/jobs/voice.tool.execute",
    "/api/jobs/booking.reserve",
    "/api/jobs/booking.cancel",
    "/api/jobs/inventory.reserve",
    "/api/jobs/inventory.release",
    "/api/jobs/inventory.commit",
    "/api/jobs/record.renew",
    "/api/jobs/workforce.shift_assign",
    "/api/jobs/workforce.shift_release",
    "/api/inventory/reservations",
    "/api/inventory/reservations/:id",
    "/api/workforce/shifts",
    "/api/workforce/shifts/:id",
    "/api/jobs/reminder.send",
    "/api/jobs/reminder.schedule",
    "/api/jobs/payment.checkout.create",
    "/api/jobs/payment.capture",
    "/api/jobs/payment.refund",
    "/api/jobs/payment.catalog.upsert",
    "/api/jobs/:job_id",
    "/api/jobs/:job_id/result",
    "/api/jobs/:job_id/cancel",
    "/api/ai/embed",
    "/api/ai/search",
    "/api/ai/complete",
    "/api/fn/:slug",
    "/api/records/:entity/aggregate",
    "/api/records/:entity/facet",
    "/api/records/:entity/bulk-update",
    "/api/records/:entity/bulk-delete",
    "/api/imports",
    "/api/imports/:session_id",
    "/api/imports/:session_id/preview",
    "/api/imports/:session_id/map-fields",
    "/api/imports/:session_id/validate",
    "/api/imports/:session_id/commit",
    "/api/imports/:session_id/cancel",
    "/api/public-config",
    "/api/contact/inbox",
    "/api/auth/magic-link/consume"
  ],
  "legacy_contact_submit": false,
  "files": {
    "functions/_lib/p2hs-records.mjs": "b23247e16867e5180035d23abc654dcb8235f117037e911f2639cc9ca94820e6",
    "functions/api/records/[[path]].js": "f3bdee8d7495fcf254f6863af537397115d47bbcad990c51eb8851781531788f",
    "functions/_lib/p2hs-files.mjs": "f4fae74bd4fcd98f53b684bbdd677296a8a5cae8ff3d57127723524d7cef3538",
    "functions/api/files/[[path]].js": "b5ceabbc7c4719cd1c993d4622795749976168f091fc2d9b173ced09c5810474",
    "functions/_lib/p2hs-auth-users.mjs": "d53845d415646a33ede54057f1d57bd2ea1760df0796da34464b9157b4634f41",
    "functions/_lib/p2hs-auth-password.mjs": "1acb9ce0e4409e46962edf85e96ac7d340a265f8a740051831251a4716a0a7fe",
    "functions/api/admin/users.js": "44a2dff1a802a04f50fcc7cf70618ff6479e273b71b4ef541be6dee5bfe237ec",
    "functions/api/auth/forgot-password.js": "6c647c0e0b7e9bc5807d27849c9a7ff90ed619c69c1aaa4605a35ce119e4ce45",
    "functions/api/auth/reset-password.js": "d2fa5417fb6fb3c2622681f11f3e912be6472e58512f5406d0e47f3717bf7b67",
    "functions/api/admin/users/[[path]].js": "d3392abcdd4913b7e61bfd60f4f73338ed9a48d635c12e3eca4446a593906619",
    "functions/_lib/p2hs-contact.mjs": "e70950e7bd2de6591eae4ff880698ece8948434888631b9e8135e7c16c45b50f",
    "functions/_lib/p2hs-auth-magic.mjs": "e02684c84267cb867e60e31bb2d72623ddc9cd98a56026dfc9926c29dcec8fdb",
    "functions/api/contact/inbox.js": "bb3991476cd0fffbdaa10d074140fd948095faa37a612b0faf6bd2b2bbb419f9",
    "functions/api/public-config.js": "cefd9f2baf826585eadcc1f8750f1192ed4d34cd47364d1182b8bec628c29776",
    "functions/api/auth/magic-link/consume.js": "e0a6b37471fe4a31277f516b5146dae69aa1b2edc00b15fdb63dc601d2450f71",
    "functions/_lib/p2hs-forms.mjs": "3bad781993c7f6e34df1b330004baf279fefb1ba047e72f913ea55580770a258",
    "functions/_lib/p2hs-forms-runtime.mjs": "8d4bbf855144246af69de808be9b7d2a62e0136040f2288b137ed855dca2c065",
    "functions/_lib/p2hs-forms-submit.mjs": "0e7b4136545869a10bfcf7164592454da9c4547144707170fe7c30de607879af",
    "functions/api/forms/[formKey]/submissions.js": "f3681e6f6046ff24164de0b1ff0227d7f2994aca744bc841e26663384ba9f9cb",
    "p2hs/app-recipe.json": "c312a518e2c8933d6d4051c33d92e88102949b91ba7d1afd4dd007f29abf44d5",
    "js/p2hs-app.js": "b0cd7a7aaa70bb8e2021cebf17294a652c9a03a85a7f1cba671b86fce1977449",
    "functions/_lib/p2hs-ports.mjs": "a6b6602f33d9b7ada43ccbc342d5779cb5e22331e05f467941105073c3171e52",
    "functions/_lib/p2hs-port-contract.mjs": "bc7ce2af160d7e04b9af375100ce3156ec768c868367a3dd5e445ae77206bff4",
    "functions/api/auth/signup.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/signin.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/signout.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/refresh.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/session.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/me.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/magic-link/request.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/auth/magic-link/verify.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/auth/otp/request.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/auth/otp/verify.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/auth/verify-email.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/auth/invite/accept.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/storage/[bucket]/presign.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/storage/[bucket]/files.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/storage/[bucket]/files/[fid].js": "ab043dac94f2de59e6cf1a207179b0009e60f81b3db19ccff23c945e53ccf5c5",
    "functions/api/storage/[bucket]/files/[fid]/confirm.js": "2c31f968a058fb92f9fb47b30b31784e0988da4f66e336d4af3071b4a69d88a0",
    "functions/api/storage/[bucket]/files/[fid]/presign-download.js": "2c31f968a058fb92f9fb47b30b31784e0988da4f66e336d4af3071b4a69d88a0",
    "functions/api/storage/[bucket]/files/[fid]/copy.js": "2c31f968a058fb92f9fb47b30b31784e0988da4f66e336d4af3071b4a69d88a0",
    "functions/api/storage/[bucket]/files/[fid]/move.js": "2c31f968a058fb92f9fb47b30b31784e0988da4f66e336d4af3071b4a69d88a0",
    "functions/api/storage/[bucket]/files/[fid]/attach.js": "2c31f968a058fb92f9fb47b30b31784e0988da4f66e336d4af3071b4a69d88a0",
    "functions/api/storage/[bucket]/files/[fid]/metadata.js": "2c31f968a058fb92f9fb47b30b31784e0988da4f66e336d4af3071b4a69d88a0",
    "functions/api/bookings/resources.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/bookings/resources/[resource_key]/availability.js": "ab043dac94f2de59e6cf1a207179b0009e60f81b3db19ccff23c945e53ccf5c5",
    "functions/api/bookings/reserve.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/bookings/[reservation_id].js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/bookings/[reservation_id]/cancel.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/jobs/email.send.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/form.forward.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/webhook.dispatch.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/integration.execute.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/dropbox.import.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/storage.extract.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/voice.call.outbound.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/voice.tool.execute.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/booking.reserve.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/booking.cancel.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/inventory.reserve.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/inventory.release.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/inventory.commit.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/record.renew.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/workforce.shift_assign.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/workforce.shift_release.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/inventory/reservations.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/inventory/reservations/[id].js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/workforce/shifts.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/workforce/shifts/[id].js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/jobs/reminder.send.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/reminder.schedule.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/payment.checkout.create.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/payment.capture.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/payment.refund.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/payment.catalog.upsert.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/[job_id].js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/jobs/[job_id]/result.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/jobs/[job_id]/cancel.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/ai/embed.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/ai/search.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/ai/complete.js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/fn/[slug].js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/records/[entity]/aggregate.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/records/[entity]/facet.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/records/[entity]/bulk-update.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/records/[entity]/bulk-delete.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/imports.js": "1cdbd7b55df7a554a709bd09d7a3c5bb6785da6b7387aa3e2935348f0cc590c1",
    "functions/api/imports/[session_id].js": "159e93f761cb64135b19e391dca77ee90dc0d66a6c3723dae1a4b237e48f4b47",
    "functions/api/imports/[session_id]/preview.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/imports/[session_id]/map-fields.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/imports/[session_id]/validate.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/imports/[session_id]/commit.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "functions/api/imports/[session_id]/cancel.js": "a860a9cbfb984cf2b83f20f51f46909b0713a2686ce855f0fdba96c6a08f251b",
    "p2hs/cloud-contract.json": "58b086c15c48a19e37b5fc7e6a10e4c946b5fe34f06a9ab8e3f5481c4eea755a",
    "p2hs/verify-cloud-contract.py": "2d9179c79aabc0c5de543dbf6f951a2a87cd7e6f224f558db593340aef31515f"
  }
}
