@topy-ai/maggie 0.7.37 → 0.7.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-zh-TW.md +65 -7
- package/README.md +80 -11
- package/bin/maggie.js +10 -2
- package/bundled-contracts/maggie-design/css-utility-evidence-v1.schema.json +10 -0
- package/bundled-contracts/maggie-design/dashboard-surface-v1.schema.json +11 -0
- package/bundled-contracts/maggie-design/progressive-enhancement-v1.schema.json +12 -0
- package/bundled-contracts/maggie-design/sample-surface-v1.schema.json +13 -0
- package/bundled-contracts/maggie-seo/privacy-origin-evidence-v1.schema.json +11 -0
- package/bundled-contracts/maggiedash/README.md +1 -1
- package/bundled-contracts/maggiedash/booking-access-v1.json +5 -4
- package/bundled-contracts/maggiedash/booking-customer-surface-v1.json +12 -1
- package/bundled-contracts/maggiedash/booking-email-templates-v1.json +2 -0
- package/bundled-contracts/maggiedash/booking-host-adapter-v1.json +16 -2
- package/bundled-contracts/maggiedash/booking-runtime.v1.json +41 -0
- package/bundled-contracts/maggiedash/execution-board.json +529 -28
- package/bundled-contracts/maggiedash/host-capabilities-v1.schema.json +10 -0
- package/bundled-contracts/maggiedash/site-structure-v1.schema.json +13 -0
- package/bundled-references/maggiedash-booking/ARCHITECTURE.md +218 -0
- package/bundled-references/maggiedash-booking/CURRENT-STATE.md +92 -0
- package/bundled-references/maggiedash-booking/DATA-FLOW.md +143 -0
- package/bundled-references/maggiedash-booking/DATA-MODEL.md +367 -0
- package/bundled-references/maggiedash-booking/DECISIONS.md +94 -0
- package/bundled-references/maggiedash-booking/EXECUTION-BOARD.json +2387 -0
- package/bundled-references/maggiedash-booking/HOST-ADAPTER.md +314 -0
- package/bundled-references/maggiedash-booking/ORAWELLNESS-INTEGRATION-AUDIT.md +227 -0
- package/bundled-references/maggiedash-booking/PAYMENT-GATEWAY.md +267 -0
- package/bundled-references/maggiedash-booking/PRD.md +228 -0
- package/bundled-references/maggiedash-booking/PROGRESS.md +2434 -0
- package/bundled-references/maggiedash-booking/QA-TEST-PLAN.md +235 -0
- package/bundled-references/maggiedash-booking/README.md +271 -0
- package/bundled-references/maggiedash-booking/RUNTIME-OPERATIONS.md +152 -0
- package/bundled-references/maggiedash-booking/SECURITY-COMPLIANCE.md +158 -0
- package/bundled-references/maggiedash-booking/SKILLS-AND-CLI.md +542 -0
- package/bundled-references/maggiedash-booking/STRIPE-INTEGRATION.md +129 -0
- package/bundled-references/maggiedash-booking/TASK-RUNBOOK.md +107 -0
- package/bundled-references/maggiedash-booking/TASKS.md +137 -0
- package/bundled-references/maggiedash-booking/USER-JOURNEYS.md +224 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-dfd.excalidraw +1 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-dfd.mmd +16 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-dfd.png +0 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-dfd.svg +1 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-state-machine.mmd +19 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-state-machine.png +0 -0
- package/bundled-references/maggiedash-booking/diagrams/booking-state-machine.svg +1 -0
- package/bundled-references/maggiedash-booking/diagrams/manager-journey.excalidraw +1 -0
- package/bundled-references/maggiedash-booking/diagrams/manager-journey.mmd +11 -0
- package/bundled-references/maggiedash-booking/diagrams/manager-journey.png +0 -0
- package/bundled-references/maggiedash-booking/diagrams/manager-journey.svg +1 -0
- package/bundled-references/maggiedash-booking/diagrams/payment-sequence.mmd +20 -0
- package/bundled-references/maggiedash-booking/diagrams/payment-sequence.png +0 -0
- package/bundled-references/maggiedash-booking/diagrams/payment-sequence.svg +1 -0
- package/bundled-references/maggiedash-booking/diagrams/system-context.excalidraw +1 -0
- package/bundled-references/maggiedash-booking/diagrams/system-context.mmd +10 -0
- package/bundled-references/maggiedash-booking/diagrams/system-context.png +0 -0
- package/bundled-references/maggiedash-booking/diagrams/system-context.svg +1 -0
- package/bundled-skills/maggie-blog-bootstrap/SKILL.md +16 -0
- package/bundled-skills/maggie-booking/SKILL.md +103 -22
- package/bundled-skills/maggie-design/SKILL.md +35 -0
- package/bundled-skills/maggie-seo-geo/SKILL.md +12 -0
- package/bundled-skills/maggie-service-booking/SKILL.md +14 -0
- package/bundled-tools/clis/maggie_booking.py +231 -31
- package/bundled-tools/clis/maggie_contracts.py +282 -0
- package/bundled-tools/clis/maggie_dash.py +28 -6
- package/bundled-tools/clis/maggie_design.py +29 -12
- package/bundled-tools/clis/maggie_service_booking.py +50 -1
- package/bundled-tools/clis/site_audit.py +49 -0
- package/package.json +1 -1
package/README-zh-TW.md
CHANGED
|
@@ -2,16 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
[English README](README.md) · [完整繁體中文 README](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/README.zh-TW.md)
|
|
4
4
|
|
|
5
|
-
`@topy-ai/maggie` 提供
|
|
5
|
+
`@topy-ai/maggie` 提供 20 個可安裝的 AI website workflow skills,支援
|
|
6
6
|
Codex、Claude Code 與相容的 coding agents。
|
|
7
7
|
|
|
8
8
|
## 安裝
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
npx @topy-ai/maggie@0.7.
|
|
11
|
+
npx @topy-ai/maggie@0.7.38 init --agent all
|
|
12
12
|
npx @topy-ai/maggie doctor --project .
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
目前 release 是 `0.7.40`,加入 feedback batch 21:progressive enhancement
|
|
16
|
+
的區域/identity/request 驗證、Tailwind utility 與 CSS cascade evidence、
|
|
17
|
+
dashboard/sample surface contract、primary navigation indexability、privacy
|
|
18
|
+
origin parity、provider-neutral site structure、host capability manifest,
|
|
19
|
+
以及包含 duration/price variants 的 Booking treatment group。MaggieDash
|
|
20
|
+
同步更新至 0.2.9,ORA reference host 也提供相同的 capability/site-structure
|
|
21
|
+
邊界。
|
|
22
|
+
|
|
15
23
|
常用流程:
|
|
16
24
|
|
|
17
25
|
```bash
|
|
@@ -21,11 +29,26 @@ maggie memory context --project . --skill <skill-name>
|
|
|
21
29
|
maggie doctor --project . --require-bootstrap --strict
|
|
22
30
|
```
|
|
23
31
|
|
|
32
|
+
Feedback batch quality gates:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
maggie design progressive-check --evidence .maggie/progressive.json
|
|
36
|
+
maggie design dash-validate --plan .maggie/design/dashboard/PLAN.json --evidence .maggie/dashboard.json
|
|
37
|
+
maggie seo privacy-check --evidence .maggie/privacy-origins.json
|
|
38
|
+
maggie dash capabilities-validate --manifest .maggie/host-capabilities.json
|
|
39
|
+
maggie dash structure-validate --model .maggie/site-structure.json --evidence .maggie/site-structure-rendered.json
|
|
40
|
+
maggie service treatment-group-audit --project .
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
這些 gate 只接受經過清理的 build/browser evidence,會在第三方 request 重複、
|
|
44
|
+
Tailwind/CSS cascade、dashboard unsupported surface、privacy origin、site
|
|
45
|
+
structure drift 或重複 treatment product 時 fail closed。
|
|
46
|
+
|
|
24
47
|
主要 skills 包括 clone、design、template、Blog、SEO/GEO、localization、
|
|
25
48
|
deployment、memory、feedback 和 MaggieDash。內容先 draft/review,外部寫入、
|
|
26
49
|
publish 與 production deployment 需要明確確認。
|
|
27
50
|
|
|
28
|
-
目前 release 是 `0.7.
|
|
51
|
+
目前 source tree 的 release candidate 是 `0.7.39`,npm registry 仍是 `0.7.38`;候選版本加入可安裝的 `maggie-booking` workflow:MaggieDash Booking host bootstrap、傳統 email/password 團隊登入與 granular permissions、Stripe payment boundary、Resend outbox/template 管理、public customer booking flow、runtime/ops evidence checks,以及完整的 Booking 維護文件。全新的 Astro host 會自動補上可攜的 Node SSR adapter;已有 Cloudflare、Vercel、Netlify 或 Deno adapter 的專案會保留原本的部署選擇。Production activation 仍會 fail-closed,直到 host migration、owner、Stripe、scheduler 和 authenticated runtime evidence 都完成。上一版 `0.7.36` 完成下一批已驗證 feedback:修正 doctor placeholder scope、Tailwind renderable source scope、internal link/fragment audit、unstable baseline classification、site-wide baseline reason、base64url asset hash、installed-file hash update safety,並加入 provider-routed Gemini v2、venue timezone/DST booking parsing、social-card release path、notification lifecycle contract 和 mobile hero video playback contract。provider-bound video generation 與 transactional delivery 已記錄在 issue #39;前一批延後功能仍在 issue #38,不會直接成為 active memory。0.7.33 記錄並審查一筆更正回饋;確認 0.7.32 已正確處理 batch index,沒有修改已驗證的 shared behavior。0.7.32 加入 feedback 一基索引支援、MaggieDash panel 的 source/freshness/error evidence、Consent Mode 與實際 write/no-op reconciliation、SEO baseline recapture、sitemap origin rebasing、content-diff scope、migration ledger reconciliation、deployment credential preflight、release provenance/runtime preflight、icon release gate、opt-in blog auto-publish gate,以及 least-privilege VPS deployer。也修復 top-level `maggie feedback` dispatcher parity。0.7.31 加入 update 差異摘要、atomic installer copy、subset install manifest merge,以及 inventory drift 時 doctor non-zero。0.7.30 補上 feedback tracking issue closeout gate 與 batch 14/15 audit ledger。0.7.29 修正 npm package landing page 使用英文 README;0.7.28 加入 versioned Gemini model policy、明確 fallback 與 provenance、bundled-first CLI
|
|
29
52
|
dispatch、`maggie --version`、feedback batch review 聚合與重複偵測、marketplace enrichment evidence、booking
|
|
30
53
|
worker/resolver evidence,以及 read-only migration preflight。它也包含 host-owned mobile app surface contract、signed-in
|
|
31
54
|
camera-state QA、直接 Astro route resolution、correlated feedback batch,以及
|
|
@@ -63,15 +86,41 @@ delivery outbox:可查看去識別化的狀態與 sanitized error;owner/mana
|
|
|
63
86
|
這是 Maggie 的 server-side delivery queue 與 audit 管理,不取代 Resend 自己的
|
|
64
87
|
domain、audience、campaign 或 analytics console。
|
|
65
88
|
|
|
89
|
+
Booking manager 也已提供 tenant-scoped 的 prepaid treatment package catalogue,
|
|
90
|
+
以及客戶 package entitlement 的手動授予、餘額查詢和預約時的原子核銷:可設定
|
|
91
|
+
包含的 treatment variant 數量、價格、幣別、有效期與啟用狀態。公開客戶流程
|
|
92
|
+
也支援 package checkout、token-bound payment return;manager 可以查看購買紀錄
|
|
93
|
+
並提出受 redemption 保護的 Stripe package refund。Stripe 確認購買或退款後,
|
|
94
|
+
會透過共用 outbox/worker 發送去識別化且具 idempotency 的 Resend 通知。
|
|
95
|
+
|
|
66
96
|
在全新的 Astro 專案中,可以讓安裝流程補上缺少的 Booking runtime 套件:
|
|
67
97
|
|
|
68
98
|
```bash
|
|
69
99
|
maggie booking install --project . --confirm --install-dependencies
|
|
100
|
+
|
|
101
|
+
# 已審核的新主機:安裝缺少的套件並套用 Booking schema
|
|
102
|
+
maggie booking install --project . --confirm --ready
|
|
70
103
|
```
|
|
71
104
|
|
|
72
105
|
這個選項會依照專案現有的 npm/pnpm/yarn/bun lockfile,只安裝缺少的
|
|
73
|
-
React、Phosphor、Tailwind、PostgreSQL 和
|
|
74
|
-
|
|
106
|
+
React、Phosphor、Tailwind、PostgreSQL、Stripe 和 SSR adapter 套件,保留已存在的
|
|
107
|
+
版本,並更新相對應的 lockfile。空白 Astro 專案會補上可攜的
|
|
108
|
+
`@astrojs/node` 與 `astro.config.mjs`;已有 `astro.config.*` 或
|
|
109
|
+
Cloudflare/Vercel/Netlify/Deno adapter 的專案會保留原本的部署選擇。
|
|
110
|
+
它不能和 `--dry-run` 或 `--diff` 一起使用。
|
|
111
|
+
|
|
112
|
+
如果 host 需要自動處理 Resend outbox、reminder 和 payment reconciliation,
|
|
113
|
+
可以同時產生 scheduler artifact:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
maggie booking install --project . --confirm --bootstrap --schedule systemd
|
|
117
|
+
# 沒有 systemd 的 host:
|
|
118
|
+
maggie booking worker-schedule --project . --scheduler cron --confirm
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
這只會在 `deploy/` 寫入可審查的 service/timer 或 cron 文件,不會修改
|
|
122
|
+
crontab、啟用 systemd、啟動 worker,也不會輸出 secret。啟用前仍要由 host
|
|
123
|
+
管理員審查 service user,並完成 migration、backup/restore 及 release evidence。
|
|
75
124
|
|
|
76
125
|
Booking 的 browser evidence gate 現在涵蓋全部 15 個 manager routes,在 mobile、
|
|
77
126
|
tablet、desktop 三種 viewport 共需要 45 個 screens,包含 waitlist、locations、
|
|
@@ -95,11 +144,20 @@ Booking Team access 支援透過 Resend 發送傳統 email/password 邀請、`ma
|
|
|
95
144
|
maggie booking email-templates-contract
|
|
96
145
|
```
|
|
97
146
|
|
|
98
|
-
Booking
|
|
147
|
+
Booking 內置十種 Resend 事件模板,包含 package purchase confirmation/refund
|
|
148
|
+
與成功 no-show fee charge 通知。No-show 狀態轉換不會自動扣款;只有在
|
|
149
|
+
客戶同意、已有保存的 Stripe payment method、provider off-session capability
|
|
150
|
+
已驗證,且 owner/manager/finance 明確確認後,才會建立 idempotent adjustment
|
|
151
|
+
charge。
|
|
152
|
+
Owner、administrator 和 Booking manager
|
|
99
153
|
可以編輯 draft、用 sandbox sample data 預覽、發佈 audited version,或 rollback
|
|
100
154
|
舊版本。每個事件只接受核准的 placeholder,worker 發送前會 escape value;
|
|
101
155
|
provider credentials 和 recipient address 只留在 server/worker,不會返回瀏覽器。
|
|
102
156
|
|
|
157
|
+
Owner 設定 Stripe secrets 後,Booking Overview 會提供 server-side 的
|
|
158
|
+
「Verify Stripe connection」操作:檢查帳號與 webhook 設定,只保存不含 secrets
|
|
159
|
+
的 capability 狀態,並寫入 audited、可安全重試的結果;Stripe keys 不會進入瀏覽器。
|
|
160
|
+
|
|
103
161
|
新版 release gates:
|
|
104
162
|
|
|
105
163
|
```bash
|
|
@@ -142,6 +200,6 @@ maggie service retirement-audit --project . \
|
|
|
142
200
|
--evidence .maggie/booking/retirement-evidence.json
|
|
143
201
|
```
|
|
144
202
|
|
|
145
|
-
完整中文說明、
|
|
203
|
+
完整中文說明、20 個 skills 清單和 roadmap:
|
|
146
204
|
[繁體中文 README](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/README.zh-TW.md)
|
|
147
205
|
· [Roadmap](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/ROADMAP.md)
|
package/README.md
CHANGED
|
@@ -58,15 +58,41 @@ Then invoke the installed skills from your coding agent, for example:
|
|
|
58
58
|
|
|
59
59
|
Maggie keeps the existing project foundation and asks for decisions before
|
|
60
60
|
shared routes, analytics, or publishing boundaries change. The current
|
|
61
|
-
package ships
|
|
62
|
-
|
|
63
|
-
The current release is `0.7.
|
|
61
|
+
package ships 20 installable skills and a local-first MaggieDash foundation.
|
|
62
|
+
|
|
63
|
+
The current release is `0.7.40`. It adds feedback batch 21 contracts for
|
|
64
|
+
progressive-enhancement identity/request safety, rendered Tailwind utility and
|
|
65
|
+
CSS-cascade checks, dashboard/sample surface evidence, primary-navigation
|
|
66
|
+
indexability, privacy-origin parity, provider-neutral site structure, host
|
|
67
|
+
capability manifests, and Booking treatment groups with duration/price
|
|
68
|
+
variants. It also includes MaggieDash 0.2.9 host-contract updates.
|
|
69
|
+
|
|
70
|
+
The previous `0.7.39` release candidate added adapter-aware fresh Astro Booking
|
|
71
|
+
installation: blank hosts receive a portable Node SSR config while existing
|
|
72
|
+
deployment adapters remain host-owned. It also adds the installable `maggie-booking`
|
|
64
73
|
workflow for MaggieDash Booking: host bootstrap, traditional email/password
|
|
65
74
|
team access with granular permissions, Stripe payment boundaries, Resend
|
|
66
75
|
outbox and tenant email-template management, public customer booking flow,
|
|
67
76
|
runtime/ops evidence checks, and the maintained Booking implementation docs.
|
|
77
|
+
The manager workspace also includes a tenant-scoped prepaid treatment package
|
|
78
|
+
catalogue with included variant quantities, package pricing, optional expiry,
|
|
79
|
+
and active/inactive state. Managers can also grant tenant-scoped customer
|
|
80
|
+
entitlements, inspect remaining balances, and redeem matching visits
|
|
81
|
+
transactionally when creating a manager booking. Public customers can also
|
|
82
|
+
start package checkout, return through a token-bound payment page, and the
|
|
83
|
+
manager can list and request guarded Stripe package refunds. Verified package
|
|
84
|
+
success/refund transitions also enqueue idempotent Resend confirmation/refund
|
|
85
|
+
emails through the shared delivery worker.
|
|
86
|
+
The Booking flow also supports an explicit, consented Stripe off-session
|
|
87
|
+
no-show fee action after a booking is marked `no_show`; it requires a saved
|
|
88
|
+
payment method, verified provider capability, idempotent adjustment state, and
|
|
89
|
+
queues the customer email through the Resend outbox only after a successful
|
|
90
|
+
charge. A status transition never charges automatically.
|
|
68
91
|
Production activation remains fail-closed until the host migration, owner,
|
|
69
|
-
Stripe, scheduler, and authenticated runtime evidence are supplied.
|
|
92
|
+
Stripe, scheduler, and authenticated runtime evidence are supplied. The
|
|
93
|
+
release candidate also regenerates the published Booking contracts and adds
|
|
94
|
+
an exact npm-tarball smoke test so the registry package cannot silently fall
|
|
95
|
+
behind the source CLI.
|
|
70
96
|
|
|
71
97
|
The previous `0.7.36` release closed the next validated feedback batch:
|
|
72
98
|
production demo fixtures are development-only, Dash infers the persisted
|
|
@@ -525,8 +551,8 @@ artifact schemas.
|
|
|
525
551
|
Recommended upgrade sequence for the current release:
|
|
526
552
|
|
|
527
553
|
```bash
|
|
528
|
-
npx @topy-ai/maggie@0.7.
|
|
529
|
-
npx @topy-ai/maggie@0.7.
|
|
554
|
+
npx @topy-ai/maggie@0.7.39 update --project . --force
|
|
555
|
+
npx @topy-ai/maggie@0.7.39 cleanup --project .
|
|
530
556
|
```
|
|
531
557
|
|
|
532
558
|
Maintainers should pass npm credentials through the repository helper, never
|
|
@@ -635,14 +661,21 @@ maggie booking install --project . --confirm
|
|
|
635
661
|
|
|
636
662
|
For a fresh Astro host, let the explicit install also add only the missing
|
|
637
663
|
Booking runtime packages through the host's existing npm/pnpm/yarn/bun
|
|
638
|
-
package manager
|
|
664
|
+
package manager. This includes the server-rendering adapter when the project
|
|
665
|
+
has no existing Astro deployment adapter:
|
|
639
666
|
|
|
640
667
|
```bash
|
|
641
668
|
maggie booking install --project . --confirm --install-dependencies
|
|
669
|
+
|
|
670
|
+
# Reviewed new host: install missing packages and apply the Booking schema
|
|
671
|
+
maggie booking install --project . --confirm --ready
|
|
642
672
|
```
|
|
643
673
|
|
|
644
|
-
Existing dependency versions are preserved.
|
|
645
|
-
|
|
674
|
+
Existing dependency versions are preserved. A blank Astro project receives a
|
|
675
|
+
portable `@astrojs/node` adapter and `astro.config.mjs`; an existing
|
|
676
|
+
`astro.config.*` and Cloudflare/Vercel/Netlify/Deno adapter remain untouched.
|
|
677
|
+
This option updates the matching lockfile and is intentionally incompatible
|
|
678
|
+
with `--dry-run` and `--diff`.
|
|
646
679
|
|
|
647
680
|
For a reviewed new host, `--bootstrap` also applies the installed idempotent
|
|
648
681
|
Booking schema using the host's existing `DATABASE_URL`:
|
|
@@ -657,6 +690,20 @@ one in the local `.env` without printing it. Existing secrets are preserved;
|
|
|
657
690
|
short configured values fail closed. External secret stores must provision the
|
|
658
691
|
key themselves.
|
|
659
692
|
|
|
693
|
+
Generate the worker schedule artifact during install when the host is ready to
|
|
694
|
+
review its Resend outbox, reminders, and payment reconciliation cadence:
|
|
695
|
+
|
|
696
|
+
```bash
|
|
697
|
+
maggie booking install --project . --confirm --bootstrap --schedule systemd
|
|
698
|
+
# or:
|
|
699
|
+
maggie booking worker-schedule --project . --scheduler cron --confirm
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
The command writes reviewable files under `deploy/` only. It does not edit a
|
|
703
|
+
crontab, enable systemd, start a worker, or print secrets. Review the generated
|
|
704
|
+
unit, set an unprivileged service user, and enable it only after the migration,
|
|
705
|
+
backup/restore, and host evidence gates pass.
|
|
706
|
+
|
|
660
707
|
Run the read-only onboarding checklist after installation:
|
|
661
708
|
|
|
662
709
|
```bash
|
|
@@ -683,7 +730,7 @@ Validate the tenant-scoped Booking email-template contract independently:
|
|
|
683
730
|
maggie booking email-templates-contract
|
|
684
731
|
```
|
|
685
732
|
|
|
686
|
-
The Booking workspace includes
|
|
733
|
+
The Booking workspace includes ten Resend event templates. Owner,
|
|
687
734
|
administrator, and Booking managers can edit drafts, preview sandboxed sample
|
|
688
735
|
data, publish audited versions, and roll back earlier versions. Event-specific
|
|
689
736
|
placeholders are allowlisted and escaped before the host worker sends through
|
|
@@ -698,6 +745,11 @@ reports required environment-key presence and the explicit schema,
|
|
|
698
745
|
owner-registration, Stripe webhook, and Resend-worker steps without printing
|
|
699
746
|
secret values or mutating the host.
|
|
700
747
|
|
|
748
|
+
After the owner adds the Stripe secrets, the Booking Overview includes a
|
|
749
|
+
server-side “Verify Stripe connection” action. It checks the account and
|
|
750
|
+
webhook configuration, stores only non-secret capability status, and records
|
|
751
|
+
an audited idempotent result; Stripe keys never enter the browser.
|
|
752
|
+
|
|
701
753
|
Booking also includes a tenant-scoped Notifications screen for the Resend
|
|
702
754
|
delivery outbox. It shows redacted delivery state and sanitized errors through
|
|
703
755
|
`GET /api/maggie/booking/notifications.json`; an owner or manager can replay a
|
|
@@ -996,7 +1048,7 @@ repairs with `maggie dash sections validate`, `fanout-validate`,
|
|
|
996
1048
|
`maggie dash inventory` to classify published pages once into disjoint kinds.
|
|
997
1049
|
See the [quality contract examples](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/contracts/maggiedash/quality-contracts.md).
|
|
998
1050
|
|
|
999
|
-
The package includes all
|
|
1051
|
+
The package includes all 20 installable skills: `maggie-blog-bootstrap`,
|
|
1000
1052
|
`maggie-dash`, `maggie-clone`, `maggie-clone-to-template`, `maggie-marketplace`,
|
|
1001
1053
|
`maggie-template`, `maggie-design`, `maggie-ops`, `maggie-deployment`,
|
|
1002
1054
|
`maggie-project-context`, `maggie-seo-geo`, `maggie-social-share`,
|
|
@@ -1054,6 +1106,23 @@ maggie list
|
|
|
1054
1106
|
maggie --help
|
|
1055
1107
|
```
|
|
1056
1108
|
|
|
1109
|
+
Feedback batch quality gates:
|
|
1110
|
+
|
|
1111
|
+
```bash
|
|
1112
|
+
maggie design progressive-check --evidence .maggie/progressive.json
|
|
1113
|
+
maggie design dash-validate --plan .maggie/design/dashboard/PLAN.json --evidence .maggie/dashboard.json
|
|
1114
|
+
maggie design sample-validate --plan .maggie/design/sample/PLAN.json --evidence .maggie/sample.json
|
|
1115
|
+
maggie seo privacy-check --evidence .maggie/privacy-origins.json
|
|
1116
|
+
maggie dash capabilities-validate --manifest .maggie/host-capabilities.json
|
|
1117
|
+
maggie dash structure-validate --model .maggie/site-structure.json --evidence .maggie/site-structure-rendered.json
|
|
1118
|
+
maggie service treatment-group-audit --project .
|
|
1119
|
+
```
|
|
1120
|
+
|
|
1121
|
+
These checks consume sanitized build/browser evidence and fail closed on
|
|
1122
|
+
third-party request churn, stale utility CSS, unsupported dashboard panels,
|
|
1123
|
+
privacy-policy origin drift, site-structure drift, or duplicated treatment
|
|
1124
|
+
products.
|
|
1125
|
+
|
|
1057
1126
|
## Safety model
|
|
1058
1127
|
|
|
1059
1128
|
- Clone only sites the user owns or is authorized to reproduce.
|
package/bin/maggie.js
CHANGED
|
@@ -58,7 +58,7 @@ Usage:
|
|
|
58
58
|
maggie doctor [--project PATH]
|
|
59
59
|
maggie bootstrap interview [project]
|
|
60
60
|
maggie dash init|install|status|migrate|transition|variant|cms --project PATH [options]
|
|
61
|
-
maggie booking install|inspect|setup|contract|runtime-validate|ops-validate|release-gate|stripe-audit|tasks --project PATH [options]
|
|
61
|
+
maggie booking install|worker-schedule|inspect|setup|contract|runtime-validate|ops-validate|release-gate|stripe-audit|tasks --project PATH [options]
|
|
62
62
|
maggie dash sections <validate|prompt|keys|remap-translations|fanout-validate|locale-validate|variant-copy-validate|media-validate|bindings-validate|idempotency-validate|reconcile> [options]
|
|
63
63
|
maggie dash inventory --pages-file FILE [--require-page-kinds] [--require-source-coverage]
|
|
64
64
|
maggie dash api-contract --spec FILE
|
|
@@ -68,6 +68,11 @@ Usage:
|
|
|
68
68
|
maggie dash components-audit --bindings-file FILE --sections-file FILE --pages-file FILE
|
|
69
69
|
maggie dash status --project PATH
|
|
70
70
|
maggie dash migrate --project PATH --confirm
|
|
71
|
+
maggie dash capabilities-validate --manifest FILE
|
|
72
|
+
maggie dash structure-validate --model FILE --evidence FILE
|
|
73
|
+
maggie design progressive-check|css-check|css-cascade-check --evidence FILE
|
|
74
|
+
maggie design dash-init|dash-validate|sample-init|sample-validate [options]
|
|
75
|
+
maggie seo privacy-check --evidence FILE
|
|
71
76
|
maggie content FILE --source PROVIDER --project PATH --confirm
|
|
72
77
|
maggie agent-content write --url URL --allowed-origin ORIGIN --token-env ENV --payload FILE
|
|
73
78
|
maggie bootstrap phase <start|pass|fail|status> <phase> [project]
|
|
@@ -469,7 +474,8 @@ function docs(args) {
|
|
|
469
474
|
function seo(args) {
|
|
470
475
|
const command = args[0];
|
|
471
476
|
const scripts = { performance: "maggie_performance.py", images: "maggie_images.py", sitemap: "maggie_sitemap.py", indexnow: "maggie_indexnow.py", "social-cards": "maggie_social_cards.py", "head-tags": "maggie_head_tags.py" };
|
|
472
|
-
if (
|
|
477
|
+
if (command === "privacy-check") return workflowCli("maggie_contracts.py", ["privacy-check", ...args.slice(1)]);
|
|
478
|
+
if (!scripts[command]) throw new Error("seo command must be performance, images, sitemap, indexnow, social-cards, head-tags, or privacy-check");
|
|
473
479
|
workflowCli(scripts[command], args.slice(1));
|
|
474
480
|
}
|
|
475
481
|
|
|
@@ -564,6 +570,7 @@ try {
|
|
|
564
570
|
else if (command === "clone-to-template") workflowCli("maggie_clone_to_template.py", args);
|
|
565
571
|
else if (command === "design" && args[0] === "icon-inventory") workflowCli("maggie_icon_inventory.py", args.slice(1));
|
|
566
572
|
else if (command === "design" && args[0] === "icon-release-gate") workflowCli("maggie_icon_release_gate.py", args.slice(1));
|
|
573
|
+
else if (command === "design" && ["progressive-check", "css-check", "css-cascade-check", "dash-init", "dash-validate", "sample-init", "sample-validate"].includes(args[0])) workflowCli("maggie_contracts.py", args);
|
|
567
574
|
else if (command === "design") workflowCli("maggie_design.py", args);
|
|
568
575
|
else if (command === "auth") workflowCli("maggie_auth.py", args);
|
|
569
576
|
else if (command === "blog") workflowCli("maggie_blog.py", args);
|
|
@@ -590,6 +597,7 @@ try {
|
|
|
590
597
|
else if (command === "site-audit") workflowCli("site_audit.py", args);
|
|
591
598
|
else if (command === "browser-audit") workflowCli("maggie_browser_audit.py", args);
|
|
592
599
|
else if (command === "verification") workflowCli("maggie_verification.py", args);
|
|
600
|
+
else if (command === "dash" && ["capabilities-validate", "structure-validate"].includes(args[0])) workflowCli("maggie_contracts.py", args);
|
|
593
601
|
else if (command === "dash") workflowCli("maggie_dash.py", args);
|
|
594
602
|
else if (command === "booking") workflowCli("maggie_booking.py", args);
|
|
595
603
|
else if (command === "agent-content") workflowCli("maggie_agent_content.py", args);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Maggie rendered CSS utility evidence",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["schemaVersion", "elements"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"schemaVersion": {"const": "maggie-css-utility-evidence.v1"},
|
|
8
|
+
"elements": {"type": "array"}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Maggie operator dashboard surface",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["schemaVersion", "route", "requiredEvidence"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"schemaVersion": {"const": "maggie-dashboard-surface.v1"},
|
|
8
|
+
"route": {"type": "string"},
|
|
9
|
+
"requiredEvidence": {"type": "array", "minItems": 6}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Maggie progressive enhancement evidence",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["schemaVersion", "region", "initial", "states"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"schemaVersion": {"const": "maggie-progressive-enhancement.v1"},
|
|
8
|
+
"region": {"type": "object", "required": ["id", "selector", "swapScope"]},
|
|
9
|
+
"initial": {"type": "object", "required": ["thirdPartyRequests", "identities"]},
|
|
10
|
+
"states": {"type": "array", "minItems": 1}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Maggie layout sample surface",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["schemaVersion", "route", "noindex", "sitemapIncluded", "finishChecklist"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"schemaVersion": {"const": "maggie-sample-surface.v1"},
|
|
8
|
+
"route": {"type": "string"},
|
|
9
|
+
"noindex": {"const": true},
|
|
10
|
+
"sitemapIncluded": {"const": false},
|
|
11
|
+
"finishChecklist": {"type": "array", "minItems": 1}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Maggie third-party privacy origin evidence",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["schemaVersion", "pages", "policyOrigins"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"schemaVersion": {"const": "maggie-privacy-origin-evidence.v1"},
|
|
8
|
+
"pages": {"type": "array"},
|
|
9
|
+
"policyOrigins": {"type": "array"}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -53,7 +53,7 @@ import.
|
|
|
53
53
|
items with stable ordering, nesting, and safe destinations;
|
|
54
54
|
- [`dashboard-runtime-v1.json`](dashboard-runtime-v1.json) defines evidence
|
|
55
55
|
that an admin screen mounted, ran its checks, and completed its data calls.
|
|
56
|
-
- MaggieDash 0.2.
|
|
56
|
+
- MaggieDash 0.2.7 also ships a screen-level host adapter contract and
|
|
57
57
|
provider-neutral install starters in the first-party distribution. The
|
|
58
58
|
`host-adapter-v2` contract lists endpoint methods, public routes, response
|
|
59
59
|
content types, and required fields; `maggie dash conformance` validates
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
"roles": ["manager", "staff", "finance"],
|
|
9
9
|
"permissions": [
|
|
10
10
|
"calendar.read", "bookings.read", "bookings.manage", "customers.read",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
11
|
+
"waitlist.read", "waitlist.manage",
|
|
12
|
+
"catalog.read", "catalog.manage", "packages.read", "packages.manage", "staff.read", "staff.manage",
|
|
13
|
+
"resources.read", "resources.manage", "schedule.read", "schedule.manage", "locations.read", "locations.manage",
|
|
14
|
+
"payments.read", "payments.manage", "refunds.manage", "notifications.read", "notifications.manage",
|
|
15
|
+
"settings.read", "settings.manage", "reports.read", "audit.read"
|
|
15
16
|
],
|
|
16
17
|
"endpointIds": ["booking.access.read", "booking.access.create", "booking.access.update", "booking.access.revoke"],
|
|
17
18
|
"canonicalRoutes": {
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
"hostResponsibilities": ["tenant-binding", "origin-and-csrf", "rate-limit", "bot-protection", "opaque-payment-return-token", "sealed-customer-manage-token", "provider-and-notification-adapters"],
|
|
11
11
|
"endpointIds": [
|
|
12
12
|
"booking.public.catalog.read",
|
|
13
|
+
"booking.public.package-checkout.start",
|
|
14
|
+
"booking.public.package-payment-return.read",
|
|
13
15
|
"booking.public.availability.read",
|
|
14
16
|
"booking.public.waitlist.join",
|
|
15
17
|
"booking.public.hold.create",
|
|
@@ -21,7 +23,9 @@
|
|
|
21
23
|
],
|
|
22
24
|
"canonicalRoutes": {
|
|
23
25
|
"booking.public.catalog.read": "GET /catalog.json",
|
|
24
|
-
"booking.public.
|
|
26
|
+
"booking.public.package-checkout.start": "POST /package-checkout.json",
|
|
27
|
+
"booking.public.package-payment-return.read": "GET /package-payment-return.json?token={token}",
|
|
28
|
+
"booking.public.availability.read": "GET /availability.json?serviceVariantId={serviceVariantId}&locationId={locationId}&date={date}",
|
|
25
29
|
"booking.public.waitlist.join": "POST /waitlist.json",
|
|
26
30
|
"booking.public.hold.create": "POST /holds.json",
|
|
27
31
|
"booking.public.checkout.start": "POST /checkout.json",
|
|
@@ -42,5 +46,12 @@
|
|
|
42
46
|
"paymentReturn": "short-lived",
|
|
43
47
|
"customerManage": "30-day-sealed",
|
|
44
48
|
"rawTokenStorage": false
|
|
49
|
+
},
|
|
50
|
+
"packageRedemption": {
|
|
51
|
+
"holdField": "packageEntitlementId",
|
|
52
|
+
"checkoutField": "packageEntitlementId",
|
|
53
|
+
"binding": "tenant-and-customer-email",
|
|
54
|
+
"fullyCoveredOnly": true,
|
|
55
|
+
"transaction": "lock-entitlement-and-items-create-booking-write-ledger"
|
|
45
56
|
}
|
|
46
57
|
}
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
{ "id": "booking.reminder", "variables": ["customerName", "serviceName", "when", "locationName", "bookingId", "manageUrl", "siteName"] },
|
|
18
18
|
{ "id": "payment.action_required", "variables": ["customerName", "serviceName", "bookingId", "actionUrl", "siteName"] },
|
|
19
19
|
{ "id": "payment.refunded", "variables": ["customerName", "serviceName", "bookingId", "siteName"] },
|
|
20
|
+
{ "id": "package.purchase.confirmed", "variables": ["customerName", "packageName", "amount", "expiresAt", "siteName"] },
|
|
21
|
+
{ "id": "package.purchase.refunded", "variables": ["customerName", "packageName", "amount", "siteName"] },
|
|
20
22
|
{ "id": "booking.waitlist.available", "variables": ["customerName", "serviceName", "when", "locationName", "bookingUrl", "siteName"] }
|
|
21
23
|
],
|
|
22
24
|
"endpointIds": ["booking.email-templates.read", "booking.email-templates.draft", "booking.email-templates.publish", "booking.email-templates.rollback"],
|
|
@@ -5,16 +5,20 @@
|
|
|
5
5
|
"schemaVersion": "maggiedash-booking-host-adapter.v1",
|
|
6
6
|
"apiPrefix": "/api/maggie/booking",
|
|
7
7
|
"auth": { "managerSession": "host-session-cookie", "emailPassword": true, "passkeys": false },
|
|
8
|
-
"requiredCapabilities": ["bookingOverview", "bookingCalendar", "bookingLifecycle", "customerLookup", "bookingWaitlist", "serviceCatalog", "locationSetup", "staffSetup", "resourceSetup", "paymentReconciliation", "bookingReports", "bookingSettings", "bookingAudit", "notificationOperations", "bookingAccess"],
|
|
8
|
+
"requiredCapabilities": ["bookingOverview", "bookingCalendar", "bookingLifecycle", "customerLookup", "bookingWaitlist", "serviceCatalog", "treatmentPackages", "packagePurchasePayments", "locationSetup", "staffSetup", "resourceSetup", "paymentReconciliation", "bookingReports", "bookingSettings", "bookingAudit", "notificationOperations", "bookingAccess"],
|
|
9
9
|
"endpointIds": [
|
|
10
|
-
"booking.overview.read", "booking.reports.read", "booking.calendar.read", "booking.bookings.read", "booking.booking.read", "booking.booking.create", "booking.booking.transition", "booking.booking.reschedule", "booking.availability.read", "booking.holds.create", "booking.holds.release", "booking.customers.read", "booking.customer.read", "booking.waitlist.read", "booking.waitlist.update", "booking.catalog.read", "booking.catalog.write", "booking.locations.read", "booking.location.write", "booking.staff.read", "booking.staff.write", "booking.resources.read", "booking.resources.write", "booking.schedule.read", "booking.schedule.write", "booking.payments.read", "booking.payment.start", "booking.payment.reconcile", "booking.refund.start", "booking.notifications.read", "booking.notification.replay", "booking.health.read", "booking.payment-health.read", "booking.settings.read", "booking.settings.update", "booking.audit.read", "booking.events.read", "booking.runtime.read", "booking.provider.webhook"
|
|
10
|
+
"booking.overview.read", "booking.reports.read", "booking.calendar.read", "booking.bookings.read", "booking.booking.read", "booking.booking.create", "booking.booking.transition", "booking.booking.no-show-fee", "booking.booking.reschedule", "booking.availability.read", "booking.holds.create", "booking.holds.release", "booking.customers.read", "booking.customer.read", "booking.waitlist.read", "booking.waitlist.update", "booking.catalog.read", "booking.catalog.write", "booking.packages.read", "booking.package.write", "booking.customer-packages.read", "booking.customer-package.grant", "booking.package-purchases.read", "booking.package-purchase.refund", "booking.locations.read", "booking.location.write", "booking.staff.read", "booking.staff.write", "booking.resources.read", "booking.resources.write", "booking.schedule.read", "booking.schedule.write", "booking.payments.read", "booking.payment.start", "booking.payment.reconcile", "booking.refund.start", "booking.notifications.read", "booking.notification.replay", "booking.health.read", "booking.payment-health.read", "booking.payment-health.verify", "booking.settings.read", "booking.settings.update", "booking.audit.read", "booking.events.read", "booking.runtime.read", "booking.provider.webhook"
|
|
11
11
|
],
|
|
12
12
|
"canonicalRoutes": {
|
|
13
|
+
"booking.booking.no-show-fee": "POST /bookings/{id}/no-show-fee.json",
|
|
14
|
+
"booking.package-purchases.read": "GET /package-purchases.json?customerId={customerId}&status={status}",
|
|
15
|
+
"booking.package-purchase.refund": "POST /package-purchases/{purchaseId}/refund.json",
|
|
13
16
|
"booking.payment.start": "POST /payments/start.json",
|
|
14
17
|
"booking.refund.start": "POST /refunds.json",
|
|
15
18
|
"booking.notifications.read": "GET /notifications.json?status={status}",
|
|
16
19
|
"booking.notification.replay": "POST /notifications/{id}/replay.json",
|
|
17
20
|
"booking.payment-health.read": "GET /payment-health.json",
|
|
21
|
+
"booking.payment-health.verify": "POST /payment-health.json",
|
|
18
22
|
"booking.provider.webhook": "POST /webhooks/{provider}"
|
|
19
23
|
},
|
|
20
24
|
"serviceMethods": {
|
|
@@ -25,6 +29,7 @@
|
|
|
25
29
|
"booking.booking.read": "readBooking",
|
|
26
30
|
"booking.booking.create": "createBooking",
|
|
27
31
|
"booking.booking.transition": "transitionBooking",
|
|
32
|
+
"booking.booking.no-show-fee": "chargeNoShowFee",
|
|
28
33
|
"booking.booking.reschedule": "rescheduleBooking",
|
|
29
34
|
"booking.availability.read": "readAvailability",
|
|
30
35
|
"booking.holds.create": "createHold",
|
|
@@ -35,6 +40,12 @@
|
|
|
35
40
|
"booking.waitlist.update": "updateWaitlist",
|
|
36
41
|
"booking.catalog.read": "readCatalog",
|
|
37
42
|
"booking.catalog.write": "updateCatalog",
|
|
43
|
+
"booking.packages.read": "listPackages",
|
|
44
|
+
"booking.package.write": "updatePackage",
|
|
45
|
+
"booking.customer-packages.read": "listCustomerPackages",
|
|
46
|
+
"booking.customer-package.grant": "grantCustomerPackage",
|
|
47
|
+
"booking.package-purchases.read": "listPackagePurchases",
|
|
48
|
+
"booking.package-purchase.refund": "startPackageRefund",
|
|
38
49
|
"booking.locations.read": "listLocations",
|
|
39
50
|
"booking.location.write": "updateLocation",
|
|
40
51
|
"booking.staff.read": "listStaff",
|
|
@@ -51,6 +62,7 @@
|
|
|
51
62
|
"booking.notification.replay": "replayNotification",
|
|
52
63
|
"booking.health.read": "readHealth",
|
|
53
64
|
"booking.payment-health.read": "readPaymentHealth",
|
|
65
|
+
"booking.payment-health.verify": "verifyPaymentConnection",
|
|
54
66
|
"booking.settings.read": "readSettings",
|
|
55
67
|
"booking.settings.update": "updateSettings",
|
|
56
68
|
"booking.audit.read": "listAudit",
|
|
@@ -63,7 +75,9 @@
|
|
|
63
75
|
"readPublicAvailability",
|
|
64
76
|
"createCustomerHold",
|
|
65
77
|
"startCustomerCheckout",
|
|
78
|
+
"startCustomerPackageCheckout",
|
|
66
79
|
"readCustomerPaymentReturn",
|
|
80
|
+
"readCustomerPackagePaymentReturn",
|
|
67
81
|
"readCustomerManage",
|
|
68
82
|
"cancelCustomerBooking",
|
|
69
83
|
"rescheduleCustomerBooking",
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "maggiedash-booking-runtime.v1",
|
|
3
|
+
"generatedAt": "2026-09-20T00:00:00Z",
|
|
4
|
+
"environment": "fixture",
|
|
5
|
+
"baseUrl": "https://booking.fixture.invalid",
|
|
6
|
+
"tenant": "dedicated-fixture-tenant",
|
|
7
|
+
"endpoints": [
|
|
8
|
+
{ "id": "booking.overview.read", "method": "GET", "route": "/api/maggie/booking/overview.json", "status": 200, "requiredFieldsPresent": true },
|
|
9
|
+
{ "id": "booking.calendar.read", "method": "GET", "route": "/api/maggie/booking/calendar.json?date={date}&view={view}", "status": 200, "requiredFieldsPresent": true },
|
|
10
|
+
{ "id": "booking.bookings.read", "method": "GET", "route": "/api/maggie/booking/bookings.json", "status": 200, "requiredFieldsPresent": true },
|
|
11
|
+
{ "id": "booking.booking.read", "method": "GET", "route": "/api/maggie/booking/bookings/{id}.json", "status": 200, "requiredFieldsPresent": true },
|
|
12
|
+
{ "id": "booking.booking.create", "method": "POST", "route": "/api/maggie/booking/bookings.json", "status": 200, "requiredFieldsPresent": true },
|
|
13
|
+
{ "id": "booking.booking.transition", "method": "POST", "route": "/api/maggie/booking/bookings/{id}/transition.json", "status": 200, "requiredFieldsPresent": true },
|
|
14
|
+
{ "id": "booking.booking.reschedule", "method": "POST", "route": "/api/maggie/booking/bookings/{id}/reschedule.json", "status": 200, "requiredFieldsPresent": true },
|
|
15
|
+
{ "id": "booking.availability.read", "method": "GET", "route": "/api/maggie/booking/availability.json", "status": 200, "requiredFieldsPresent": true },
|
|
16
|
+
{ "id": "booking.holds.create", "method": "POST", "route": "/api/maggie/booking/holds.json", "status": 200, "requiredFieldsPresent": true },
|
|
17
|
+
{ "id": "booking.holds.release", "method": "POST", "route": "/api/maggie/booking/holds/{id}/release.json", "status": 200, "requiredFieldsPresent": true },
|
|
18
|
+
{ "id": "booking.customers.read", "method": "GET", "route": "/api/maggie/booking/customers.json", "status": 200, "requiredFieldsPresent": true },
|
|
19
|
+
{ "id": "booking.customer.read", "method": "GET", "route": "/api/maggie/booking/customers/{id}.json", "status": 200, "requiredFieldsPresent": true },
|
|
20
|
+
{ "id": "booking.catalog.read", "method": "GET", "route": "/api/maggie/booking/catalog.json", "status": 200, "requiredFieldsPresent": true },
|
|
21
|
+
{ "id": "booking.catalog.write", "method": "POST", "route": "/api/maggie/booking/catalog.json", "status": 200, "requiredFieldsPresent": true },
|
|
22
|
+
{ "id": "booking.staff.read", "method": "GET", "route": "/api/maggie/booking/staff.json", "status": 200, "requiredFieldsPresent": true },
|
|
23
|
+
{ "id": "booking.staff.write", "method": "POST", "route": "/api/maggie/booking/staff.json", "status": 200, "requiredFieldsPresent": true },
|
|
24
|
+
{ "id": "booking.resources.read", "method": "GET", "route": "/api/maggie/booking/resources.json", "status": 200, "requiredFieldsPresent": true },
|
|
25
|
+
{ "id": "booking.resources.write", "method": "POST", "route": "/api/maggie/booking/resources.json", "status": 200, "requiredFieldsPresent": true },
|
|
26
|
+
{ "id": "booking.schedule.read", "method": "GET", "route": "/api/maggie/booking/schedule.json", "status": 200, "requiredFieldsPresent": true },
|
|
27
|
+
{ "id": "booking.schedule.write", "method": "POST", "route": "/api/maggie/booking/schedule.json", "status": 200, "requiredFieldsPresent": true },
|
|
28
|
+
{ "id": "booking.payments.read", "method": "GET", "route": "/api/maggie/booking/payments.json", "status": 200, "requiredFieldsPresent": true },
|
|
29
|
+
{ "id": "booking.payment.start", "method": "POST", "route": "/api/maggie/booking/payments/start.json", "status": 200, "requiredFieldsPresent": true },
|
|
30
|
+
{ "id": "booking.payment.reconcile", "method": "POST", "route": "/api/maggie/booking/payments/{id}/reconcile.json", "status": 200, "requiredFieldsPresent": true },
|
|
31
|
+
{ "id": "booking.refund.start", "method": "POST", "route": "/api/maggie/booking/refunds.json", "status": 200, "requiredFieldsPresent": true },
|
|
32
|
+
{ "id": "booking.health.read", "method": "GET", "route": "/api/maggie/booking/health.json", "status": 200, "requiredFieldsPresent": true },
|
|
33
|
+
{ "id": "booking.payment-health.read", "method": "GET", "route": "/api/maggie/booking/payment-health.json", "status": 200, "requiredFieldsPresent": true },
|
|
34
|
+
{ "id": "booking.settings.read", "method": "GET", "route": "/api/maggie/booking/settings.json", "status": 200, "requiredFieldsPresent": true },
|
|
35
|
+
{ "id": "booking.settings.update", "method": "PATCH", "route": "/api/maggie/booking/settings.json", "status": 200, "requiredFieldsPresent": true },
|
|
36
|
+
{ "id": "booking.audit.read", "method": "GET", "route": "/api/maggie/booking/audit.json", "status": 200, "requiredFieldsPresent": true },
|
|
37
|
+
{ "id": "booking.events.read", "method": "GET", "route": "/api/maggie/booking/events.json", "status": 200, "requiredFieldsPresent": true },
|
|
38
|
+
{ "id": "booking.runtime.read", "method": "GET", "route": "/api/maggie/booking/runtime.json", "status": 200, "requiredFieldsPresent": true },
|
|
39
|
+
{ "id": "booking.provider.webhook", "method": "POST", "route": "/api/maggie/booking/webhooks/{provider}", "status": 200, "requiredFieldsPresent": true }
|
|
40
|
+
]
|
|
41
|
+
}
|