{"locator":"npm:@open-mercato/pay-by-links","path":"@open-mercato/pay-by-links","npm":"@open-mercato/pay-by-links","github":null,"repoPath":null,"kind":"module","type":"official","enterprise":false,"title":"Payment Link Pages","summary":"Pay-by-link pages (module payment_link_pages) from an orphaned canary build of March 2026.","whenToUse":"Use when you need public payment link pages: the checkout module now provides them with templates and limits.","whenNotToUse":"Do not install this canary. Use checkout instead.","category":"payments-finance","tags":["pay-links","payments"],"providers":[],"moduleIds":["payment_link_pages"],"requires":[{"raw":"payment_gateways","resolvesTo":"core:payment_gateways"},{"raw":"customers","resolvesTo":"core:customers"},{"raw":"entities","resolvesTo":"core:entities"}],"replaces":[],"slotConflicts":[],"renamedFrom":[],"supersededBy":null,"alternatives":["npm:@open-mercato/checkout"],"status":"hold","listed":false,"featured":false,"license":{"spdx":null,"kind":"unknown","mismatch":false},"version":{"latest":null,"preview":"0.4.9-canary-fcabd45887","publishedAt":"2026-03-18","integrity":"sha512-AqK1X7LoZhQKjoyOhE+B07U8UIOJRPd123q9ZOiwlrpXqS14sxdAKH/1pksRGETAchQa8oCG1dTfPuRKUutQng==","installableFrom":"2026-03-18","gitRef":null,"recommended":{"0.9":null,"0.8":null,"next":null}},"identity":{"builtFrom":"none","claimed":false,"source":"npm"},"compat":{"builtFor":{"range":"0.4.9-canary-fcabd45887","kind":"exact-pin","lines":[]},"lines":{},"verifiedOn":[]},"anatomy":{"version":"0.4.9-canary-fcabd45887","coverage":"full","counts":{"entities":1,"tables":1,"migrations":0,"routes":12,"publicRoutes":6,"aclFeatures":2,"eventsEmitted":6,"eventsConsumed":0,"backendPages":4,"frontendPages":1,"widgets":0,"workers":0,"cli":0,"aiTools":0,"aiAgents":0,"extends":1},"lists":{"aclFeatures":["payment_link_pages.templates.view","payment_link_pages.templates.manage"],"eventsEmitted":["payment_link_pages.page.viewed","payment_link_pages.page.unlocked","payment_link_pages.customer.captured","payment_link_pages.template.created","payment_link_pages.template.updated","payment_link_pages.template.deleted"],"eventsConsumed":[],"env":[],"hosts":[],"tables":["payment_link_templates"],"publicRoutes":["GET /api/payment_gateways/pay/[token]","POST /api/payment_gateways/pay/[token]/unlock","GET /api/payment_link_pages/pay/[token]","POST /api/payment_link_pages/pay/[token]/customer","POST /api/payment_link_pages/pay/[token]/session","POST /api/payment_link_pages/pay/[token]/unlock"],"credentials":[],"backendPages":["/backend/payment-link-templates","/backend/payment-link-templates/[id]","/backend/payment-link-templates/new","/backend/payment-links"]},"callout":"ADDS 1 TABLE · 12 ROUTES (6 PUBLIC) · 2 PERMISSIONS · EMITS 6 EVENTS","diff":null},"signals":{"receipt":{"0.9":"skipped","0.8":"skipped","next":"untested"},"fit":{"0.9":"no-fit","0.8":"no-fit","next":"no-fit"},"anatomy":"full","supplyChain":{"status":"ok","reasons":[]},"hygiene":{"status":"warn","failing":["peer-exact-pin"]},"maintenance":{"status":"behind","lastRelease":"2026-03-18","catchUpDays":null},"declaredVsObserved":{"status":"match","notes":[]}},"tier":null,"quality":null,"agentPolicy":{"0.9":{"decision":"refuse","reasons":[{"code":"HOLD","text":"On hold: Orphaned canary from March 2026. No source in any repository."},{"code":"NOT_VERIFIED","text":"No stable release for this line yet. Only preview builds are published."},{"code":"LICENSE","text":"License: unknown."}]},"0.8":{"decision":"refuse","reasons":[{"code":"HOLD","text":"On hold: Orphaned canary from March 2026. No source in any repository."},{"code":"NOT_VERIFIED","text":"No stable release for this line yet. Only preview builds are published."},{"code":"LICENSE","text":"License: unknown."}]},"next":{"decision":"refuse","reasons":[{"code":"HOLD","text":"On hold: Orphaned canary from March 2026. No source in any repository."},{"code":"NOT_VERIFIED","text":"Not yet tested in a new app on next."},{"code":"LICENSE","text":"License: unknown."}]}},"install":{"cli":"yarn mercato module add @open-mercato/pay-by-links@0.4.9-canary-fcabd45887","cmm":"npx create-mercato-module install @open-mercato/pay-by-links@0.4.9-canary-fcabd45887","needsAllowThirdParty":false,"moduleFlag":null},"stats":{"downloads30d":10,"stars":null},"sigil":{"glyph":"1322001","phase":235,"publicRoutes":true},"links":{"page":"https://modules.openmercato.com/m/@open-mercato/pay-by-links","md":"https://modules.openmercato.com/m/@open-mercato/pay-by-links.md","json":"https://modules.openmercato.com/m/@open-mercato/pay-by-links.json","facts":"https://modules.openmercato.com/m/@open-mercato/pay-by-links/v/0.4.9-canary-fcabd45887/facts.json","npm":"https://www.npmjs.com/package/@open-mercato/pay-by-links","repo":null,"docs":null},"addedAt":"2026-10-23","updatedAt":"2026-10-26T12:02:41Z","_meta":{"com.openmercato.modules/installable":{"0.9":null,"0.8":null,"next":null}},"facts":{"factsVersion":1,"extractor":{"engine":"@open-mercato/cli@0.9.0 extractModuleFacts","factsContractVersion":2,"catalog":"om-modules rentgen 1","durationMs":120},"package":{"locator":"npm:@open-mercato/pay-by-links","name":"@open-mercato/pay-by-links","version":"0.4.9-canary-fcabd45887","integrity":"sha512-AqK1X7LoZhQKjoyOhE+B07U8UIOJRPd123q9ZOiwlrpXqS14sxdAKH/1pksRGETAchQa8oCG1dTfPuRKUutQng==","source":"npm-tarball","gitRef":null},"gate":{"installable":true,"needsModuleFlag":false,"reason":null,"modules":[{"id":"payment_link_pages","src":true,"dist":true}]},"kind":"module","license":{"value":null,"kind":"unknown","mismatch":false,"sources":{"packageJson":null,"licenseFile":null,"moduleInfo":null,"integrationTs":null}},"omPeers":{"@open-mercato/shared":"0.4.9-canary-fcabd45887"},"dependencies":{"@open-mercato/core":"0.4.9-canary-fcabd45887","@open-mercato/ui":"0.4.9-canary-fcabd45887"},"agentsMd":false,"readmeExcerpt":null,"modules":[{"id":"payment_link_pages","title":"Payment Link Pages","description":"Public pay-by-link page host with UMES-friendly customization, events, and enrichers.","requires":[{"raw":"payment_gateways","resolvesTo":"core:payment_gateways"},{"raw":"customers","resolvesTo":"core:customers"},{"raw":"entities","resolvesTo":"core:entities"}],"ejectable":null,"data":{"entities":[{"id":"payment_link_pages:payment_link_template","table":"payment_link_templates","src":{"file":"src/modules/payment_link_pages/data/entities.ts","line":11}}],"migrations":{"count":0,"first":null,"last":null},"customEntities":0},"http":{"routes":[{"method":"GET","path":"/api/payment_gateways/pay/[token]","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/get/payment_gateways/pay/[token]/route.ts","line":15}},{"method":"POST","path":"/api/payment_gateways/pay/[token]/unlock","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/post/payment_gateways/pay/[token]/unlock/route.ts","line":19}},{"method":"GET","path":"/api/payment_gateways/payment-links","requireAuth":true,"requireFeatures":["payment_gateways.view"],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/get/payment_gateways/payment-links/route.ts","line":41}},{"method":"GET","path":"/api/payment_link_pages/pay/[token]","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/pay/[token]/route.ts","line":18}},{"method":"POST","path":"/api/payment_link_pages/pay/[token]/customer","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/pay/[token]/customer/route.ts","line":44}},{"method":"POST","path":"/api/payment_link_pages/pay/[token]/session","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/pay/[token]/session/route.ts","line":41}},{"method":"POST","path":"/api/payment_link_pages/pay/[token]/unlock","requireAuth":false,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/pay/[token]/unlock/route.ts","line":19}},{"method":"GET","path":"/api/payment_link_pages/templates","requireAuth":true,"requireFeatures":["payment_link_pages.templates.view"],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/templates/route.ts","line":139}},{"method":"POST","path":"/api/payment_link_pages/templates","requireAuth":true,"requireFeatures":["payment_link_pages.templates.manage"],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/templates/route.ts","line":139}},{"method":"PUT","path":"/api/payment_link_pages/templates","requireAuth":true,"requireFeatures":["payment_link_pages.templates.manage"],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/templates/route.ts","line":139}},{"method":"DELETE","path":"/api/payment_link_pages/templates","requireAuth":true,"requireFeatures":["payment_link_pages.templates.manage"],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/templates/route.ts","line":139}},{"method":"POST","path":"/api/payment_link_pages/templates/[id]/set-default","requireAuth":true,"requireFeatures":["payment_link_pages.templates.manage"],"hasOpenApi":true,"src":{"file":"src/modules/payment_link_pages/api/templates/[id]/set-default/route.ts","line":13}}],"legacyRouteFiles":3,"authResolved":1},"security":{"aclFeatures":["payment_link_pages.templates.view","payment_link_pages.templates.manage"],"setupDefaultRoleFeatures":true},"events":{"emits":[{"id":"payment_link_pages.page.viewed","src":{"file":"src/modules/payment_link_pages/events.ts","line":4}},{"id":"payment_link_pages.page.unlocked","src":{"file":"src/modules/payment_link_pages/events.ts","line":5}},{"id":"payment_link_pages.customer.captured","src":{"file":"src/modules/payment_link_pages/events.ts","line":6}},{"id":"payment_link_pages.template.created","src":{"file":"src/modules/payment_link_pages/events.ts","line":7}},{"id":"payment_link_pages.template.updated","src":{"file":"src/modules/payment_link_pages/events.ts","line":8}},{"id":"payment_link_pages.template.deleted","src":{"file":"src/modules/payment_link_pages/events.ts","line":9}}],"subscribes":[]},"ui":{"backendPages":[{"path":"/backend/payment-link-templates","requireFeatures":["payment_link_pages.templates.view"]},{"path":"/backend/payment-link-templates/[id]","requireFeatures":["payment_link_pages.templates.manage"]},{"path":"/backend/payment-link-templates/new","requireFeatures":["payment_link_pages.templates.manage"]},{"path":"/backend/payment-links","requireFeatures":["payment_gateways.view"]}],"frontendPages":[{"path":"/pay/[token]"}],"widgets":0,"extensionHosts":7},"background":{"workers":[],"cli":[]},"ai":{"tools":[],"agents":[]},"config":{"credentials":[],"env":[]},"network":{"hosts":[],"undeclared":[]},"extends":[{"kind":"crud-form","target":"crud-form:payment_gateways.transaction-create"}],"omImports":{"@open-mercato/core":{"modules/customers/data/entities":["CustomerEntity","CustomerPersonProfile"],"modules/entities/lib/field-definitions":["ensureCustomFieldDefinitions"],"modules/payment_gateways/api/openapi":["paymentGatewaysTag"],"modules/payment_gateways/components/CreatePaymentTransactionDialog":["CreatePaymentTransactionDialog"],"modules/payment_gateways/data/entities":["GatewayPaymentLink","GatewayPaymentLinkTransaction"],"modules/payment_gateways/data/validators":["listPaymentLinksQuerySchema","paymentLinkUnlockSchema"],"modules/payment_gateways/events":["emitPaymentGatewayEvent"],"modules/payment_gateways/lib/gateway-service":["PaymentGatewayService"],"modules/payment_gateways/lib/payment-link-page-metadata":["buildPaymentLinkStoredMetadata","readPaymentLinkStoredMetadata"],"modules/payment_gateways/lib/payment-links":["buildPaymentLinkUrl","createPaymentLinkAccessToken","isValidCustomPaymentLinkToken","verifyPaymentLinkPassword"],"modules/payment_gateways/lib/public-payment-links":["loadPublicPaymentLinkState"]},"@open-mercato/shared":{"lib/auth/server":["getAuthFromRequest"],"lib/commands/command-bus":["CommandBus"],"lib/crud/enricher-runner":["applyResponseEnricherToRecord"],"lib/crud/factory":["makeCrudRoute"],"lib/crud/ids":["mergeIdFilter","parseIdsParam"],"lib/crud/response-enricher":["ResponseEnricher"],"lib/db/escapeLikePattern":["escapeLikePattern"],"lib/di/container":["createRequestContainer"],"lib/encryption/find":["findOneWithDecryption","findWithDecryption"],"lib/http/readJsonSafe":["readJsonSafe"],"lib/i18n/context":["useLocale","useT"],"lib/openapi":["OpenApiRouteDoc"],"lib/openapi/crud":["CrudOpenApiOptions","createCrudOpenApiFactory","createPagedListResponseSchema","defaultCreateResponseSchema","defaultOkResponseSchema"],"modules/dsl":["cf"],"modules/events":["createModuleEvents"],"modules/payment_gateways/types":["buildPaymentGatewayPaymentLinkWidgetSpotId"],"modules/payment_link_pages/runtime":["registerPayByLinksRuntime","registerPayByLinksTemplateResolver"],"modules/payment_link_pages/types":["PAYMENT_LINK_PAGE_COMPONENT_HANDLE","PAYMENT_LINK_PAGE_CUSTOM_FIELD_ENTITY_ID","PAYMENT_LINK_PAGE_ENRICHER_ENTITY","buildPaymentLinkPageInjectionSpotId","buildPaymentLinkPageSectionHandle"],"modules/setup":["ModuleSetupConfig"],"modules/widgets/injection":["InjectionWidgetComponentProps","InjectionWidgetModule","ModuleInjectionTable"]},"@open-mercato/ui":{"backend/CrudForm":["CrudField","CrudForm","CrudFormGroup"],"backend/DataTable":["DataTable"],"backend/FlashMessages":["flash"],"backend/JsonBuilder":["JsonBuilder"],"backend/Page":["Page","PageBody"],"backend/RowActions":["RowActions"],"backend/confirm-dialog":["useConfirmDialog"],"backend/detail":["ErrorMessage","LoadingMessage"],"backend/injection/InjectionSpot":["InjectionSpot"],"backend/injection/useRegisteredComponent":["useRegisteredComponent"],"backend/inputs/SwitchableMarkdownInput":["SwitchableMarkdownInput"],"backend/markdown/MarkdownContent":["MarkdownContent"],"backend/utils/apiCall":["apiCall","apiCallOrThrow","readApiResultOrThrow"],"backend/utils/crud":["createCrud","updateCrud"],"frontend/LanguageSwitcher":["LanguageSwitcher"],"primitives/badge":["Badge"],"primitives/button":["Button"],"primitives/checkbox":["Checkbox"],"primitives/input":["Input"],"primitives/label":["Label"],"primitives/spinner":["Spinner"],"primitives/textarea":["Textarea"]}},"collisionKeys":{"moduleId":"payment_link_pages","tables":["payment_link_templates"],"aclFeatures":["payment_link_pages.templates.view","payment_link_pages.templates.manage"],"eventIds":["payment_link_pages.page.viewed","payment_link_pages.page.unlocked","payment_link_pages.customer.captured","payment_link_pages.template.created","payment_link_pages.template.updated","payment_link_pages.template.deleted"],"backendRoutes":["/backend/payment-link-templates","/backend/payment-link-templates/[id]","/backend/payment-link-templates/new","/backend/payment-links"]},"publicRoutes":6,"glyph":"1322001","lint":[{"code":"peer-exact-pin","severity":"warn","message":"Peer dependencies pin Open Mercato exactly (@open-mercato/shared 0.4.9-canary-fcabd45887). Use a range.","anchor":"i2 §1.4","src":null},{"code":"no-agents-md","severity":"info","message":"No AGENTS.md in the package.","anchor":"g3 §3","src":null},{"code":"peer-range-behind","severity":"info","message":"Built for 0.4.9-canary-fcabd45887 does not include Open Mercato 0.9.0.","anchor":"w4 §4.2","src":null},{"code":"public-routes","severity":"info","message":"6 of 12 routes do not require authentication.","anchor":null,"src":{"file":"src/modules/payment_link_pages/api/get/payment_gateways/pay/[token]/route.ts","line":15}},{"code":"ships-tests","severity":"info","message":"The tarball ships test files.","anchor":null,"src":null}]}],"coverage":{"routesAuthResolved":1,"integrationTs":"absent"},"diagnostics":[]},"receipts":[],"rules":[{"id":"LST-1","pass":true,"detail":"Descriptor is valid."},{"id":"LST-2","pass":true,"detail":"Official package with a preview only."},{"id":"LST-3","pass":true,"detail":"src/modules and dist/modules pair found."},{"id":"LST-4","pass":true,"detail":"License: unknown."},{"id":"LST-5","pass":true,"detail":"No known malware or open critical advisory."},{"id":"LST-6","pass":true,"detail":"Name reviewed at merge."},{"id":"VER-1","pass":false,"detail":"Receipt on 0.9: skipped."},{"id":"VER-2","pass":false,"detail":"Fits statically on 0.9: no-fit."},{"id":"VER-3","pass":true,"detail":"Supply chain: ok."},{"id":"VER-4","pass":true,"detail":"No lint errors."},{"id":"VER-5","pass":false,"detail":"Not checked: neither the descriptor nor the tarball names a repository."}],"maintainers":["pat-lewczuk","patryk.andrzejewski","piotrkarwatka"]}
