diff --git a/Prompt.md b/Prompt.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..9d4a589 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,56 @@ +# Balinyaar docs + +The entry point. Start here, follow one link, stop reading. + +> **Being built.** This tree is the output of [the clarify chain](_plan/README.md). Sections marked +> _not yet written_ are scaffolded but empty — the doc that currently holds that knowledge is named +> beside each one so nothing is unreachable in the meantime. + +--- + +## The rule that keeps three trees apart + +| Tree | Answers | Example | +| --- | --- | --- | +| [`product/`](../product/index.md) | **What the business is** | escrow holds funds until check-out is confirmed | +| **`docs/`** (here) | **What we built, and how we work** | the escrow ledger is implemented; here is how to test it | +| `archive/` | **How we got here** | the phase-10 prompt that built the ledger, and its report | + +**A file belongs in exactly one.** If you are about to write a business rule into `docs/`, it belongs in +`product/`. If you are about to obey something in `archive/`, stop — it is a record, not an instruction. + +`archive/` does not exist yet; Phase 6 creates it from today's [`dev/`](../dev/README.md). + +--- + +## Map + +| Section | What it holds | Status | +| --- | --- | --- | +| [rules/](rules/index.md) | What must never be broken — the tiered rule set behind the `CLAUDE.md` files | not yet written · phase 1 | +| [integration/](integration/index.md) | The client↔server seam in one place: contract, config, topology, OpenAPI | OpenAPI snapshot only · phase 2 | +| [flows/](flows/index.md) | What is implemented, and how to test it — one file per user journey | not yet written · phase 3 | +| [status/](status/index.md) | Where the project actually is: implemented, backlog, decisions | not yet written · phase 4 | +| [roadmap/](roadmap/index.md) | Where it goes next, and what gates a launch | not yet written · phase 5 | +| [_plan/](_plan/README.md) | The chain that builds this tree. **Temporary** — moves to `archive/` when done | in progress | + +## Still elsewhere + +Two documents stay outside this tree on purpose: + +- [`DEPLOY.md`](../DEPLOY.md) — the deploy *procedure*, at the repo root where an operator will look for + it. The runtime *topology* it implies moves to `docs/integration/topology.md`. +- [`product/`](../product/index.md) — untouched by this chain. `docs/status/implemented.md` will overlay + build state onto its 14 business areas rather than restating them. + +## Conventions + +1. **Every status or flow doc carries `> Last verified: against `.** A doc without one is + a claim, not a fact. +2. **Verify, don't copy.** A load-bearing claim is checked against code or run. If it cannot be checked, + it is written with an explicit `UNVERIFIED:` prefix. +3. **Write short.** A reference doc over ~400 lines should be split. +4. **English throughout**, including in files that describe Persian UI copy. + +The full convention lands in `docs/rules/documentation.md` (phase 1), enforced by a pre-commit warning +(phase 7). diff --git a/docs/_plan/README.md b/docs/_plan/README.md index cb4c66d..ee29512 100644 --- a/docs/_plan/README.md +++ b/docs/_plan/README.md @@ -21,7 +21,7 @@ Measured against the working tree at `96b57eb`: | **Rules live in ~10 places** | root [CLAUDE.md](../../CLAUDE.md) · [client/CLAUDE.md](../../client/CLAUDE.md) **161 KB** · [server/CLAUDE.md](../../server/CLAUDE.md) 75 KB · [server/CONVENTIONS.md](../../server/CONVENTIONS.md) · [client/messages/STYLE.md](../../client/messages/STYLE.md) · [.claude/skills/frontend-designer/SKILL.md](../../.claude/skills/frontend-designer/SKILL.md) · [dev/phases/_shared/](../../dev/phases/_shared/) ×4 · [dev/contracts/conventions/](../../dev/contracts/conventions/) ×2 · 3× `AGENTS.md` · [.githooks/README.md](../../.githooks/README.md) | | **Loading `client/CLAUDE.md` costs ~40k tokens** on any client edit | 161 KB, of which lines 103–421 are a project-structure listing and lines 421–1100 are explanatory reference | | **Remaining work is split across 5 ledgers** | 67 REQs in a 1,115-line append-only file · **18 hardening items, none ticked** · per-phase "Follow-ups" buried in 50+ reports · backend deferrals-with-pull-triggers · [product/notes/open-questions.md](../../product/notes/open-questions.md) · two raw feedback notes in [dev/manual-testing/](../../dev/manual-testing/) | -| **Contracts drifted from code** | [`dev/contracts/`](../../dev/contracts/) frozen 2026-07-13; `server/src` moved through 2026-07-28. OpenAPI snapshot is from 07-13; a second stale copy sits at [temp/swagger.json](../../temp/swagger.json) (07-06). | +| **Contracts drifted from code** | [`dev/contracts/`](../../dev/contracts/) frozen 2026-07-13; `server/src` moved through 2026-07-28. OpenAPI snapshot is from 07-13; a second stale copy sat at `temp/swagger.json` (07-06). **Phase 0 correction:** that copy was **untracked** (`.gitignore:1`), and the measured OpenAPI drift turned out to be one endpoint — see [open-contradictions.md](open-contradictions.md#openapi-drift). | | **18 files still instruct you to use `dotnet user-secrets`** — removed in `5885280` | includes [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md), the closest thing to a test guide | | **No single "what's implemented + how to test it"** | knowledge split across manual-testing-plan, [RUNBOOK.md](../../dev/post-phase/refinement/RUNBOOK.md), `product/business/`, and 18 contract files | | **The client↔server dependency is implicit** | envelope shape, casing, idempotency, cookies/refresh, CORS, `NEXT_PUBLIC_API_URL`, 3 containers + Caddy + remote SQL + the OTP bot — described nowhere as one thing | @@ -152,7 +152,7 @@ stays small. | Phase | Status | Finished | Notes | | --- | --- | --- | --- | -| 0 Inventory & scaffold | not started | | | +| 0 Inventory & scaffold | **done** | 2026-07-29 | 275 files surveyed (not ~260). OpenAPI refreshed — drift is **1 endpoint**, not a rewrite. 3 of 5 seeded contradictions were narrower than stated; see [open-contradictions.md](open-contradictions.md#corrections-to-the-seeded-list). Phase 4 owns 149 files | | 1 Rules consolidation | not started | | | | 2 Integration & dependency | not started | | | | 3 Flow atlas | not started | | | diff --git a/docs/_plan/inventory.md b/docs/_plan/inventory.md new file mode 100644 index 0000000..54858c2 --- /dev/null +++ b/docs/_plan/inventory.md @@ -0,0 +1,421 @@ +# Inventory — a disposition for every markdown file + +> Survey run 2026-07-29 against commit `c99e3f4`. Produced by +> [phase 0](phase-0-inventory-and-scaffold.md). **This is a survey, not documentation** — it moves to +> `archive/` with the rest of `_plan/` when the chain finishes. + +**275 markdown files**, 3.58 MB total. 209 carry +**live facts** — content not yet captured anywhere else, which must be extracted before the file is archived. + +## How to read this + +| Column | Meaning | +| --- | --- | +| `kind` | `rule` (must-obey) · `reference` · `contract` · `plan` (an instruction to an agent) · `report` · `history` · `business` · `ops` · `feedback` | +| `disposition` | `keep-as-is` · `move` · `distill` · `merge-into` · `archive` · `delete` | +| `target` | where the *content* ends up — a `docs/…` path, or `archive/…` | +| `owner phase` | the phase that extracts the content. `none` = no phase touches the file | +| `live facts?` | does it hold anything not already captured elsewhere? | + +Two conventions keep the `target` column short: + +1. **Every `dev/**` row is additionally moved to `archive/` by Phase 6.** The `owner phase` column names + the phase that extracts its content *first*; Phase 6 is implied everywhere and is not repeated. +2. `§5` / `§7` refer to the fixed section numbering every `dev/phases/*` prompt shares — + **§5 "Critical rules you must not get wrong"** (the decisions that are *not* visible in the code) and + **§7 "How to test"** (the input Phase 3 turns into flow docs). Verified present in all 32 prompt files. + +## Summary + +| disposition | files | +| --- | --- | +| `archive` | 172 | +| `keep-as-is` | 59 | +| `distill` | 24 | +| `move` | 17 | +| `merge-into` | 2 | +| `delete` | 1 | + +| owner phase | files | +| --- | --- | +| 0 | 1 | +| 1 | 17 | +| 2 | 23 | +| 3 | 2 | +| 4 | 149 | +| 6 | 17 | +| 7 | 31 | +| none | 35 | + +| kind | files | +| --- | --- | +| plan | 86 | +| report | 70 | +| business | 48 | +| history | 25 | +| contract | 19 | +| rule | 15 | +| ops | 5 | +| reference | 5 | +| feedback | 2 | + +### What this says + +- **172 files are `archive`** — nearly all of `dev/`. They are + executed prompts and their reports: a record of how the code got here, phrased as instructions. That + phrasing is the single biggest hazard in the repo, and Phase 6's do-not-obey banner is the fix. +- **Only 1 file is deleted outright** (`Prompt.md`, 0 bytes). Nothing else is lost — + everything either moves, is distilled, or is archived intact. +- **Phase 4 owns 149 files**, by far the largest share. The backlog + reconciliation is the heaviest extraction job in the chain, not the flow atlas. + +--- + +## The table + +### Root & repo-level — 6 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `.claude/skills/frontend-designer/SKILL.md` | 21 K | 2026-07-27 | rule | `distill` | docs/rules/client/theme.md; skill rewritten | 1 | yes | +| `.githooks/README.md` | 1.6 K | 2026-07-28 | ops | `keep-as-is` | .githooks/README.md + docs/rules/documentation.md | 7 | yes | +| `AGENTS.md` | 478 B | 2026-06-21 | rule | `keep-as-is` | AGENTS.md — links repointed at docs/ | 1 | no | +| `CLAUDE.md` | 8.4 K | 2026-07-28 | rule | `distill` | CLAUDE.md (slim) + docs/rules/ | 1 | yes | +| `DEPLOY.md` | 8.3 K | 2026-07-28 | ops | `keep-as-is` | DEPLOY.md — stale user-secrets ref fixed | 2 | yes | +| `Prompt.md` | 0 B | 2026-06-28 | plan | `delete` | — (0 bytes, empty) | 0 | no | + +### `client/` — 5 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `client/AGENTS.md` | 594 B | 2026-06-21 | rule | `keep-as-is` | client/AGENTS.md — links repointed | 1 | no | +| `client/CLAUDE.md` | 158 K | 2026-07-27 | rule | `distill` | client/CLAUDE.md (slim) + docs/rules/client/* | 1 | yes | +| `client/README.md` | 4.5 K | 2026-06-23 | reference | `keep-as-is` | client/README.md | 1 | no | +| `client/graphify-out/GRAPH_REPORT.md` | 18 K | untracked | report | `keep-as-is` | — (gitignored tool output, not repo content) | none | no | +| `client/messages/STYLE.md` | 7.6 K | 2026-07-19 | rule | `distill` | docs/rules/client/i18n.md | 1 | yes | + +### `server/` — 6 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `server/AGENTS.md` | 573 B | 2026-06-21 | rule | `keep-as-is` | server/AGENTS.md — links repointed | 1 | no | +| `server/CLAUDE.md` | 73 K | 2026-07-28 | rule | `distill` | server/CLAUDE.md (slim) + docs/rules/server/* | 1 | yes | +| `server/CONVENTIONS.md` | 26 K | 2026-07-28 | rule | `distill` | docs/rules/server/conventions.md | 1 | yes | +| `server/LICENSE.md` | 1.1 K | 2026-06-16 | reference | `keep-as-is` | server/LICENSE.md | none | no | +| `server/README.md` | 5.3 K | 2026-06-21 | reference | `keep-as-is` | server/README.md | 1 | no | +| `server/graphify-out/GRAPH_REPORT.md` | 76 K | untracked | report | `keep-as-is` | — (gitignored tool output, not repo content) | none | no | + +### `telegram-otp-bot/` — 2 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `telegram-otp-bot/INTEGRATION-PROMPT.md` | 8.1 K | 2026-07-27 | plan | `archive` | archive/post-phase/; config facts → docs/integration/config-matrix.md | 2 | yes | +| `telegram-otp-bot/README.md` | 7.5 K | 2026-07-28 | ops | `keep-as-is` | telegram-otp-bot/README.md; cited by docs/integration/topology.md | 2 | yes | + +### `docs/_plan/` — this chain — 9 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `docs/_plan/README.md` | 10 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-0-inventory-and-scaffold.md` | 7.6 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-1-rules-consolidation.md` | 9.3 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-2-integration.md` | 7.8 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-3-flow-atlas.md` | 9.6 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-4-backlog.md` | 8.5 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-5-roadmap.md` | 5.8 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-6-archive.md` | 4.8 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | +| `docs/_plan/phase-7-skills-and-guardrails.md` | 5.9 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes | + +### `dev/contracts/` — the API contract layer — 21 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `dev/contracts/README.md` | 2.7 K | 2026-06-28 | contract | `move` | docs/integration/index.md | 2 | yes | +| `dev/contracts/conventions/api-conventions.md` | 2.9 K | 2026-07-13 | rule | `distill` | docs/rules/shared/api-conventions.md + docs/integration/api-contract.md | 1 | yes | +| `dev/contracts/conventions/money-and-types.md` | 2.6 K | 2026-06-28 | rule | `distill` | docs/rules/shared/money-and-types.md | 1 | yes | +| `dev/contracts/domains/_TEMPLATE.md` | 1.2 K | 2026-07-13 | contract | `move` | docs/integration/domains/_TEMPLATE.md | 2 | no | +| `dev/contracts/domains/bnpl.md` | 9.5 K | 2026-07-13 | contract | `move` | docs/integration/domains/bnpl.md | 2 | yes | +| `dev/contracts/domains/booking-requests.md` | 11 K | 2026-07-13 | contract | `move` | docs/integration/domains/booking-requests.md | 2 | yes | +| `dev/contracts/domains/bookings-evv.md` | 9.1 K | 2026-07-13 | contract | `move` | docs/integration/domains/bookings-evv.md | 2 | yes | +| `dev/contracts/domains/catalog.md` | 9.3 K | 2026-07-13 | contract | `move` | docs/integration/domains/catalog.md | 2 | yes | +| `dev/contracts/domains/config-reference.md` | 7.4 K | 2026-07-13 | contract | `move` | docs/integration/domains/config-reference.md | 2 | yes | +| `dev/contracts/domains/geography-addresses.md` | 8.1 K | 2026-07-13 | contract | `move` | docs/integration/domains/geography-addresses.md | 2 | yes | +| `dev/contracts/domains/identity-auth.md` | 7.3 K | 2026-07-13 | contract | `move` | docs/integration/domains/identity-auth.md | 2 | yes | +| `dev/contracts/domains/identity-profiles.md` | 7.1 K | 2026-07-13 | contract | `move` | docs/integration/domains/identity-profiles.md | 2 | yes | +| `dev/contracts/domains/messaging-notifications-admin.md` | 11 K | 2026-07-13 | contract | `merge-into` | docs/integration/domains/messaging.md (absorbs messaging.md) | 2 | yes | +| `dev/contracts/domains/messaging.md` | 851 B | 2026-07-13 | contract | `merge-into` | docs/integration/domains/messaging.md (with messaging-notifications-admin.md) | 2 | yes | +| `dev/contracts/domains/payments.md` | 5.2 K | 2026-07-13 | contract | `move` | docs/integration/domains/payments.md | 2 | yes | +| `dev/contracts/domains/payouts.md` | 9.8 K | 2026-07-13 | contract | `move` | docs/integration/domains/payouts.md | 2 | yes | +| `dev/contracts/domains/refunds-invoices.md` | 11 K | 2026-07-13 | contract | `move` | docs/integration/domains/refunds-invoices.md | 2 | yes | +| `dev/contracts/domains/reviews-records.md` | 9.5 K | 2026-07-13 | contract | `move` | docs/integration/domains/reviews-records.md | 2 | yes | +| `dev/contracts/domains/search.md` | 6.6 K | 2026-07-13 | contract | `move` | docs/integration/domains/search.md | 2 | yes | +| `dev/contracts/domains/verification.md` | 18 K | 2026-07-13 | contract | `move` | docs/integration/domains/verification.md | 2 | yes | +| `dev/contracts/openapi/README.md` | 1.2 K | 2026-06-28 | contract | `move` | docs/integration/openapi/README.md | 2 | yes | + +### `dev/phases/` — executed build prompts — 38 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `dev/phases/README.md` | 11 K | 2026-06-28 | plan | `archive` | archive/build-chain/ | 6 | no | +| `dev/phases/_shared/agent-operating-rules.md` | 13 K | 2026-06-28 | rule | `distill` | docs/rules/shared/* | 1 | yes | +| `dev/phases/_shared/backend-conventions-checklist.md` | 4.1 K | 2026-06-28 | rule | `distill` | docs/rules/server/* | 1 | yes | +| `dev/phases/_shared/definition-of-done.md` | 2.8 K | 2026-06-28 | rule | `distill` | docs/rules/documentation.md + docs/rules/shared/git.md | 1 | yes | +| `dev/phases/_shared/frontend-conventions-checklist.md` | 3.3 K | 2026-06-28 | rule | `distill` | docs/rules/client/* | 1 | yes | +| `dev/phases/_shared/phase-template.md` | 3.1 K | 2026-06-28 | plan | `archive` | archive/build-chain/ (template — nothing to extract) | 6 | no | +| `dev/phases/backend/backend-phase-0.md` | 12 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-1.md` | 32 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-10.md` | 38 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-11.md` | 38 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-12.md` | 33 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-13.md` | 28 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-14.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-15.md` | 42 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-2.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-3.md` | 31 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-4.md` | 30 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-5.md` | 35 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-6.md` | 35 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-7.md` | 31 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-8.md` | 38 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/backend/backend-phase-9.md` | 43 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-0.md` | 11 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-1-b2.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-10-b11.md` | 23 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-11-b12.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-12-b13.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-13-b14.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-14-b15.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-15-b15.md` | 56 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-2-b3.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-3-b4.md` | 23 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-4-b5.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-5-b6.md` | 28 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-6-b7.md` | 25 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-7-b8.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-8-b9.md` | 29 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | +| `dev/phases/frontend/frontend-phase-9-b10.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes | + +### `dev/post-phase/` — follow-up chains — 56 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `dev/post-phase/hardening/LOOP-PROMPT.md` | 3.0 K | 2026-07-17 | plan | `archive` | archive/post-phase/ | 6 | no | +| `dev/post-phase/hardening/README.md` | 9.4 K | 2026-07-17 | plan | `archive` | archive/post-phase/; scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/hardening-phase-0-auth-gate.md` | 6.9 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/hardening-phase-1-admin-rbac.md` | 7.3 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/hardening-phase-2-mock-integrity.md` | 7.7 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/hardening-phase-3-session-error-ux.md` | 6.2 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/hardening-phase-4-contract-completion.md` | 7.1 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/hardening-phase-5-final-demock.md` | 6.2 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes | +| `dev/post-phase/hardening/issues.md` | 12 K | 2026-07-17 | plan | `distill` | docs/status/backlog.md (18 items, re-verified) | 4 | yes | +| `dev/post-phase/manual-testing-plan.md` | 24 K | 2026-07-27 | ops | `distill` | docs/flows/testing-setup.md + docs/flows/.md | 3 | yes | +| `dev/post-phase/refinement/README.md` | 10 K | 2026-07-10 | plan | `archive` | archive/post-phase/ | 6 | no | +| `dev/post-phase/refinement/RUNBOOK.md` | 15 K | 2026-07-28 | ops | `distill` | docs/flows/testing-setup.md | 3 | yes | +| `dev/post-phase/refinement/refinement-phase-0-bring-up.md` | 12 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-1-database-and-seed.md` | 10 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-2-auth-and-role-nav.md` | 9.8 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-3-contract-batch.md` | 13 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-4-frontend-de-mock.md` | 10 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-5-security-hygiene.md` | 5.5 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-6-money-correctness.md` | 5.9 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-7-unattended-ops.md` | 6.5 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-8-external-rails.md` | 7.7 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/refinement/refinement-phase-9-observability-and-scale.md` | 6.3 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes | +| `dev/post-phase/server/README.md` | 2.5 K | 2026-07-10 | plan | `archive` | archive/post-phase/ | 6 | no | +| `dev/post-phase/server/frontend-backend-gaps.md` | 18 K | 2026-07-10 | plan | `distill` | docs/status/backlog.md | 4 | yes | +| `dev/post-phase/server/post-phase-backend-plan.md` | 42 K | 2026-07-10 | plan | `distill` | docs/status/decisions.md + backlog.md | 4 | yes | +| `dev/post-phase/server/runtime-services.md` | 21 K | 2026-07-13 | reference | `distill` | docs/integration/topology.md + docs/rules/server/* | 2 | yes | +| `dev/post-phase/ui/README.md` | 16 K | 2026-07-17 | plan | `archive` | archive/post-phase/; design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/admin-partner.md` | 21 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/auth-first-run.md` | 18 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/booking-lifecycle.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/checkout-money.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/component-primitives.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/cross-cutting-ux.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/customer-account.md` | 18 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/customer-storefront.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/feature-components.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/messaging-notifications.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/microcopy.md` | 17 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/nurse-trust-ops.md` | 21 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/nurse-workspace.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/shell-and-navigation.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/audit/theme-and-brand.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes | +| `dev/post-phase/ui/ui-phase-0-design-language.md` | 24 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-1-primitives-and-states.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-10-messaging-and-notifications.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-11-admin-and-partner-console.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-12-copy-motion-and-polish.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-13-public-front-door.md` | 21 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-2-shells-and-navigation.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-3-auth-and-first-run.md` | 21 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-4-customer-storefront.md` | 24 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-5-booking-lifecycle.md` | 21 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-6-checkout-and-money.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-7-nurse-daily-ops.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-8-nurse-business-and-verification.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | +| `dev/post-phase/ui/ui-phase-9-customer-account-and-care-circle.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes | + +### `dev/shared-working-context/` — handoffs, status, reports — 81 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `dev/shared-working-context/README.md` | 3.0 K | 2026-06-28 | plan | `archive` | archive/build-chain/ | 6 | no | +| `dev/shared-working-context/backend/STATUS.md` | 39 K | 2026-07-13 | history | `distill` | docs/status/decisions.md + docs/status/implemented.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-0.md` | 3.1 K | 2026-06-30 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-1.md` | 4.3 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-10.md` | 4.2 K | 2026-07-06 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-11.md` | 3.5 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-12.md` | 4.2 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-13.md` | 4.2 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-14.md` | 4.5 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-15.md` | 4.5 K | 2026-07-10 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-2.md` | 3.5 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-3.md` | 4.1 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-4.md` | 4.4 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-5.md` | 6.4 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-6.md` | 7.3 K | 2026-07-05 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-7.md` | 3.3 K | 2026-07-05 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-8.md` | 4.9 K | 2026-07-06 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-backend-phase-9.md` | 3.5 K | 2026-07-06 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-refinement-phase-0.md` | 2.5 K | 2026-07-12 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-refinement-phase-1.md` | 3.4 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-refinement-phase-6.md` | 2.2 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-refinement-phase-7.md` | 2.4 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-refinement-phase-8.md` | 4.0 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/backend/handoff/after-refinement-phase-9.md` | 3.0 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/frontend/STATUS.md` | 45 K | 2026-07-13 | history | `distill` | docs/status/decisions.md + docs/status/implemented.md | 4 | yes | +| `dev/shared-working-context/frontend/requests/for-backend.md` | 104 K | 2026-07-20 | history | `distill` | docs/status/backlog.md (67 REQs → BL-###) | 4 | yes | +| `dev/shared-working-context/reports/README.md` | 1.4 K | 2026-06-28 | plan | `archive` | archive/build-chain/ | 6 | no | +| `dev/shared-working-context/reports/backend-phase-0-report.md` | 6.8 K | 2026-06-30 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-1-report.md` | 5.9 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-10-report.md` | 5.4 K | 2026-07-06 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-11-report.md` | 6.7 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-12-report.md` | 7.6 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-13-report.md` | 6.2 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-14-report.md` | 7.0 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-15-report.md` | 6.5 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-2-report.md` | 7.8 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-3-report.md` | 5.2 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-4-report.md` | 5.7 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-5-report.md` | 7.8 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-6-report.md` | 10 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-7-report.md` | 6.3 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-8-report.md` | 6.6 K | 2026-07-06 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/backend-phase-9-report.md` | 6.4 K | 2026-07-06 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-0-report.md` | 6.8 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-1-report.md` | 7.4 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-10-report.md` | 8.4 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-11-report.md` | 8.4 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-12-report.md` | 8.3 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-13-report.md` | 11 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-14-report.md` | 13 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-15-report.md` | 10 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-2-report.md` | 6.6 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-3-report.md` | 8.4 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-4-report.md` | 9.3 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-5-report.md` | 8.9 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-6-report.md` | 6.5 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-7-report.md` | 9.5 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-8-report.md` | 9.5 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/frontend-phase-9-report.md` | 14 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/mocks-registry.md` | 73 K | 2026-07-19 | reference | `distill` | docs/status/implemented.md + docs/integration/index.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-0-report.md` | 6.1 K | 2026-07-12 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-1-report.md` | 7.3 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-2-report.md` | 6.6 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-6-report.md` | 6.8 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-7-report.md` | 6.6 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-8-report.md` | 12 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/refinement-phase-9-report.md` | 10 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-0-report.md` | 14 K | 2026-07-17 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-1-report.md` | 18 K | 2026-07-17 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-10-report.md` | 18 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-11-report.md` | 22 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-12-report.md` | 21 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-13-report.md` | 11 K | 2026-07-20 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-2-report.md` | 14 K | 2026-07-17 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-3-report.md` | 14 K | 2026-07-18 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-4-report.md` | 12 K | 2026-07-18 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-5-report.md` | 15 K | 2026-07-18 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-6-report.md` | 17 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-7-report.md` | 15 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-8-report.md` | 18 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | +| `dev/shared-working-context/reports/ui-phase-9-report.md` | 14 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes | + +### `dev/manual-testing/` — human feedback — 2 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `dev/manual-testing/iteration-1/improvement-and-fix-1.md` | 3.4 K | 2026-07-27 | feedback | `distill` | docs/status/backlog.md (unfinished items); PNGs kept | 4 | yes | +| `dev/manual-testing/iteration-2/improvement-2.md` | 1.2 K | 2026-07-27 | feedback | `distill` | docs/status/backlog.md (unfinished items); PNGs kept | 4 | yes | + +### `dev/` root — 1 file + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `dev/README.md` | 2.3 K | 2026-07-17 | plan | `archive` | archive/README.md context | 6 | no | + +### `product/` — business docs (untouched) — 48 files + +| path | bytes | last commit | kind | disposition | target | owner phase | live facts? | +| --- | --- | --- | --- | --- | --- | --- | --- | +| `product/README.md` | 2.9 K | 2026-06-24 | business | `keep-as-is` | product/README.md | none | no | +| `product/business/01-actors-and-onboarding.md` | 3.9 K | 2026-07-02 | business | `keep-as-is` | product/business/01-actors-and-onboarding.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/02-nurse-verification.md` | 6.8 K | 2026-07-05 | business | `keep-as-is` | product/business/02-nurse-verification.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/03-service-catalog-and-pricing.md` | 2.6 K | 2026-06-24 | business | `keep-as-is` | product/business/03-service-catalog-and-pricing.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/04-search-and-matching.md` | 2.8 K | 2026-06-24 | business | `keep-as-is` | product/business/04-search-and-matching.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/05-booking-and-scheduling.md` | 3.6 K | 2026-06-24 | business | `keep-as-is` | product/business/05-booking-and-scheduling.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/06-evv-and-service-delivery.md` | 2.3 K | 2026-06-24 | business | `keep-as-is` | product/business/06-evv-and-service-delivery.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/07-cancellation-and-refunds.md` | 4.1 K | 2026-07-09 | business | `keep-as-is` | product/business/07-cancellation-and-refunds.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/08-payments-and-escrow.md` | 4.8 K | 2026-06-24 | business | `keep-as-is` | product/business/08-payments-and-escrow.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/09-installments-bnpl.md` | 4.6 K | 2026-06-24 | business | `keep-as-is` | product/business/09-installments-bnpl.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/10-payouts.md` | 5.0 K | 2026-07-09 | business | `keep-as-is` | product/business/10-payouts.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/11-reviews-trust-and-safety.md` | 2.2 K | 2026-06-24 | business | `keep-as-is` | product/business/11-reviews-trust-and-safety.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/12-messaging-and-emergencies.md` | 2.3 K | 2026-06-24 | business | `keep-as-is` | product/business/12-messaging-and-emergencies.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/13-tax-invoicing-and-legal.md` | 4.0 K | 2026-06-24 | business | `keep-as-is` | product/business/13-tax-invoicing-and-legal.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/14-notifications-and-admin.md` | 2.8 K | 2026-06-24 | business | `keep-as-is` | product/business/14-notifications-and-admin.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/business/index.md` | 5.3 K | 2026-06-24 | business | `keep-as-is` | product/business/index.md · read-only source for docs/status/implemented.md | 4 | no | +| `product/data-model/01-identity-and-access.md` | 8.9 K | 2026-07-02 | business | `keep-as-is` | product/data-model/01-identity-and-access.md | none | no | +| `product/data-model/02-geography.md` | 1.9 K | 2026-07-02 | business | `keep-as-is` | product/data-model/02-geography.md | none | no | +| `product/data-model/03-services-and-pricing.md` | 4.2 K | 2026-06-24 | business | `keep-as-is` | product/data-model/03-services-and-pricing.md | none | no | +| `product/data-model/04-verification-and-credentials.md` | 3.8 K | 2026-06-24 | business | `keep-as-is` | product/data-model/04-verification-and-credentials.md | none | no | +| `product/data-model/05-booking-and-scheduling.md` | 8.3 K | 2026-06-24 | business | `keep-as-is` | product/data-model/05-booking-and-scheduling.md | none | no | +| `product/data-model/06-payments-ledger-and-refunds.md` | 11 K | 2026-07-09 | business | `keep-as-is` | product/data-model/06-payments-ledger-and-refunds.md | none | no | +| `product/data-model/07-payouts.md` | 2.1 K | 2026-06-24 | business | `keep-as-is` | product/data-model/07-payouts.md | none | no | +| `product/data-model/08-bnpl.md` | 2.8 K | 2026-06-24 | business | `keep-as-is` | product/data-model/08-bnpl.md | none | no | +| `product/data-model/09-messaging.md` | 958 B | 2026-06-24 | business | `keep-as-is` | product/data-model/09-messaging.md | none | no | +| `product/data-model/10-reviews-and-records.md` | 1.6 K | 2026-06-24 | business | `keep-as-is` | product/data-model/10-reviews-and-records.md | none | no | +| `product/data-model/11-notifications.md` | 868 B | 2026-06-24 | business | `keep-as-is` | product/data-model/11-notifications.md | none | no | +| `product/data-model/12-audit-config-and-reference.md` | 3.7 K | 2026-07-02 | business | `keep-as-is` | product/data-model/12-audit-config-and-reference.md | none | no | +| `product/data-model/13-partner-centers-and-future.md` | 2.6 K | 2026-06-24 | business | `keep-as-is` | product/data-model/13-partner-centers-and-future.md | none | no | +| `product/data-model/diagrams.md` | 5.4 K | 2026-06-24 | business | `keep-as-is` | product/data-model/diagrams.md | none | no | +| `product/data-model/index.md` | 20 K | 2026-06-24 | business | `keep-as-is` | product/data-model/index.md | none | no | +| `product/index.md` | 3.2 K | 2026-06-24 | business | `keep-as-is` | product/index.md | none | no | +| `product/notes/future-ideas.md` | 2.5 K | 2026-06-24 | business | `keep-as-is` | product/notes/future-ideas.md | none | no | +| `product/notes/open-questions.md` | 4.6 K | 2026-07-20 | business | `keep-as-is` | product/notes/open-questions.md · read-only source for docs/status/backlog.md | 4 | no | +| `product/overview/platform-summary.md` | 5.2 K | 2026-06-24 | business | `keep-as-is` | product/overview/platform-summary.md | none | no | +| `product/payments/bnpl-landscape.md` | 6.4 K | 2026-06-24 | business | `keep-as-is` | product/payments/bnpl-landscape.md | none | no | +| `product/payments/cancellation-and-payout.md` | 5.8 K | 2026-06-24 | business | `keep-as-is` | product/payments/cancellation-and-payout.md | none | no | +| `product/payments/escrow-ledger.md` | 5.5 K | 2026-07-06 | business | `keep-as-is` | product/payments/escrow-ledger.md | none | no | +| `product/payments/index.md` | 6.1 K | 2026-06-24 | business | `keep-as-is` | product/payments/index.md | none | no | +| `product/payments/integration-notes.md` | 6.5 K | 2026-06-24 | business | `keep-as-is` | product/payments/integration-notes.md | none | no | +| `product/payments/iranian-payment-reality.md` | 5.1 K | 2026-06-24 | business | `keep-as-is` | product/payments/iranian-payment-reality.md | none | no | +| `product/payments/sources.md` | 6.5 K | 2026-06-24 | business | `keep-as-is` | product/payments/sources.md | none | no | +| `product/research/go-to-market.md` | 5.0 K | 2026-06-24 | business | `keep-as-is` | product/research/go-to-market.md | none | no | +| `product/research/index.md` | 4.5 K | 2026-06-24 | business | `keep-as-is` | product/research/index.md | none | no | +| `product/research/legal-landscape.md` | 5.0 K | 2026-06-24 | business | `keep-as-is` | product/research/legal-landscape.md | none | no | +| `product/research/market-and-competitors.md` | 10 K | 2026-06-24 | business | `keep-as-is` | product/research/market-and-competitors.md | none | no | +| `product/research/problems-and-risks.md` | 9.7 K | 2026-06-24 | business | `keep-as-is` | product/research/problems-and-risks.md | none | no | +| `product/research/verification.md` | 7.5 K | 2026-06-24 | business | `keep-as-is` | product/research/verification.md | none | no | + +--- + +## Non-markdown files this chain also moves + +The survey covers `.md` files. Three non-markdown files are load-bearing for the same phases: + +| path | bytes | disposition | target | owner phase | +| --- | --- | --- | --- | --- | +| `dev/contracts/openapi/swagger.v1.json` | 610 K | `archive` | superseded by `docs/integration/openapi/swagger.v1.json` | 2 | +| `temp/swagger.json` | 364 K | `delete` | — (stale duplicate, 2026-07-06; **untracked** — `.gitignore:1` ignores `temp`) | 0 | +| `dev/manual-testing/iteration-{1,2}/*.png` (7 files) | — | `archive` | `archive/manual-testing/` — the only visual record of the pre-overhaul UI | 6 | diff --git a/docs/_plan/open-contradictions.md b/docs/_plan/open-contradictions.md new file mode 100644 index 0000000..345926f --- /dev/null +++ b/docs/_plan/open-contradictions.md @@ -0,0 +1,103 @@ +# Open contradictions + +> Opened 2026-07-29 by [phase 0](phase-0-inventory-and-scaffold.md), against commit `c99e3f4`. +> **Phase 0 only finds these. It resolves none of them.** + +Each row is *claim A* vs *claim B* with a location for both, and the phase that owns the resolution. +When a phase resolves one, it moves the row to **Resolved** at the bottom with the decision, and — per +the chain's non-negotiable #5 — records the decision in `docs/status/decisions.md`. + +Three of the five contradictions the plan seeded turned out to be **narrower than stated**. Those are +written up as they actually are, with the evidence, in [§ Corrections to the seeded list](#corrections-to-the-seeded-list). + +--- + +## Open + +| # | Claim A | Claim B | Owner | Status | +| --- | --- | --- | --- | --- | +| C-1 | **Set the crypto keys with `dotnet user-secrets`** — [manual-testing-plan.md:22](../../dev/post-phase/manual-testing-plan.md), [:233](../../dev/post-phase/manual-testing-plan.md) | **`user-secrets` is not used; `` was removed so the store is not read** — [CLAUDE.md:90](../../CLAUDE.md), [DEPLOY.md:20](../../DEPLOY.md), [server/CLAUDE.md:70](../../server/CLAUDE.md), and `Baya.Web.Api.csproj` (no `UserSecretsId` element) | 3 | open | +| C-2 | **Placeholder value is literally `SET_VIA_USER_SECRETS_OR_ENV`** — `server/src/API/Baya.Web.Api/appsettings.json` (6 occurrences), enforced by `StartupSecretsGuard` and by the pre-commit hook | **That store does not exist any more** (C-1's B side). The name instructs a reader to use a removed mechanism | 2 | open — naming only, behaviour is correct | +| C-3 | **The server listens on `https://localhost:5002`** — [CLAUDE.md:62](../../CLAUDE.md), [:135](../../CLAUDE.md), [api-conventions.md:6](../../dev/contracts/conventions/api-conventions.md), [RUNBOOK.md:7](../../dev/post-phase/refinement/RUNBOOK.md), [:84](../../dev/post-phase/refinement/RUNBOOK.md), [:112](../../dev/post-phase/refinement/RUNBOOK.md), + 12 more | **It listens on `http://localhost:5002`** — `launchSettings.json:25` (`"applicationUrl": "http://localhost:5002"`), and `client/.env.development:20` (`NEXT_PUBLIC_API_URL = http://localhost:5002`) | 2 + 3 | open | +| C-4 | **RUNBOOK's `dotnet dev-certs https --trust` step is required**, because the browser would otherwise reject the API — [RUNBOOK.md:26](../../dev/post-phase/refinement/RUNBOOK.md) | **The API is plain HTTP locally** (C-3's B side), so there is no certificate to trust | 3 | open — likely a dead step | +| C-5 | **Bring-up starts a local SQL Server in Docker on `localhost:1433`** — [RUNBOOK.md:18](../../dev/post-phase/refinement/RUNBOOK.md), [:35–48](../../dev/post-phase/refinement/RUNBOOK.md), [:63](../../dev/post-phase/refinement/RUNBOOK.md) | **The committed dev config points at a remote SQL Server** — `appsettings.Development.json` (`Server=87.107.152.16,1433`), and [manual-testing-plan.md:20](../../dev/post-phase/manual-testing-plan.md) calls the remote one "currently" the target | 3 | open — the two bring-up paths give *different worlds*: the remote DB is already seeded, a fresh local one is not | +| C-6 | **`GET /api/v1/webhooks/payouts/{provider}` does not exist** — absent from `dev/contracts/openapi/swagger.v1.json` (frozen 2026-07-13) and from every `dev/contracts/domains/*.md` | **It exists** — present in the fresh snapshot `docs/integration/openapi/swagger.v1.json` (2026-07-29). See [§ OpenAPI drift](#openapi-drift) | 2 | open | +| C-7 | **`GeneratePayoutBatchCommand`'s shape** per the 07-13 snapshot | **A different shape** in the 07-29 snapshot — the only schema of 339 whose definition changed | 2 | open | +| C-8 | **Two contract files describe the same domain** — [`dev/contracts/domains/messaging.md`](../../dev/contracts/domains/messaging.md) is a headerless 851-byte fragment ("Refinement phase 3 additions (REQ-028)") sitting beside the 10.8 K [`messaging-notifications-admin.md`](../../dev/contracts/domains/messaging-notifications-admin.md), which it silently amends | — | 2 | open — merge, don't move both | +| C-9 | **The OpenAPI folder publishes documents `v1` *and* `v1.1`** — [openapi/README.md:3](../../dev/contracts/openapi/README.md) | **Only `swagger.v1.json` has ever been committed**; `v1.1` was not fetched during this survey | 2 | open — `UNVERIFIED`, check `/swagger/v1.1/swagger.json` when the server is next up | +| C-10 | **18 hardening items are open** — [issues.md](../../dev/post-phase/hardening/issues.md), 18 of 18 checkboxes unticked, last touched 2026-07-17 | **Fourteen UI phases, two manual-testing iterations, a Telegram integration and a deploy commit ran afterwards** (`12ce7fa` → `96b57eb`, 07-20 → 07-28) without ticking any box | 4 | open — Phase 4 must re-verify each item against code, not trust the checkbox | +| C-11 | **The frontend-designer skill is the design-language authority** — [SKILL.md §§1–7](../../.claude/skills/frontend-designer/SKILL.md) | **`client/CLAUDE.md` also states theme, tokens, typography, icons and anti-patterns** — [§Theme System:646](../../client/CLAUDE.md), [§Forms:590](../../client/CLAUDE.md), [:22–23](../../client/CLAUDE.md) (icons). Overlapping scope, two files, no stated precedence | 1 + 7 | open | +| C-12 | **The skill is current** | **It is exactly one iteration behind the code.** SKILL.md's last commit is `baa3cc6` ("manual improvement 1"); `client/CLAUDE.md`'s is `e6a8f93` ("manual improvement 2"), which changed **44 files, +3419/−2449** under `client/src`. Anything iteration 2 changed is absent from the skill | 7 | open | +| C-13 | **`dev/` is "the plan for building Balinyaar"**, written in the imperative — [dev/README.md:3](../../dev/README.md) | **It is a record of work already done.** `dev/phases/` last touched 2026-06-28; the code it describes shipped weeks ago | 6 | open — resolved by the archive banner, not by editing 199 files | +| C-14 | **`temp/swagger.json` is a stale committed duplicate** — [_plan/README.md](README.md) diagnosis table | **It is not committed at all** — `.gitignore:1` ignores `temp`, and `git ls-files temp/` is empty. It is local clutter, not repo content | 0 | see [§ Corrections](#corrections-to-the-seeded-list) | + +--- + +## OpenAPI drift + +The fresh snapshot is at [`docs/integration/openapi/swagger.v1.json`](../integration/openapi/swagger.v1.json). +See its [README](../integration/openapi/README.md) for provenance. Measured against the 2026-07-13 snapshot +at `dev/contracts/openapi/swagger.v1.json`: + +| | 2026-07-13 | 2026-07-29 | +| --- | --- | --- | +| paths | 177 | **178** | +| operations | 185 | **186** | +| component schemas | 339 | **339** | + +**Added (1)** + +- `POST /api/v1/webhooks/payouts/{provider}` + +**Removed (0)** · **Methods changed on an existing path (0)** · **Schemas added/removed (0)** + +**Schema definitions changed (1)** + +- `GeneratePayoutBatchCommand` + +> **This is Phase 2's worklist for the machine contract, and it is two lines long.** The 16-day gap +> between the snapshot and the code produced almost no wire-level drift. Phase 2 should therefore spend +> its budget on the **hand-written** `dev/contracts/domains/*.md` — 17 files, frozen the same day, never +> mechanically checked against anything — rather than on the JSON. See +> [§ Corrections](#corrections-to-the-seeded-list) C-14b. + +--- + +## Corrections to the seeded list + +The plan seeded five contradictions. Two hold as written; three are narrower than stated. Recording +this here so later phases do not budget for work that is already done. + +**Holds — `user-secrets`.** The plan says 18 files still instruct you to use it. 32 mentions across 18 +files is right, but the split matters: **6 files document the removal correctly** (root `CLAUDE.md`, +`DEPLOY.md`, `server/CLAUDE.md`, `server/CONVENTIONS.md`, and `RUNBOOK.md` twice — including a +troubleshooting row that names the error you now get). **12 are historical** — refinement prompts, +handoffs and reports written before the removal, all headed for `archive/`. Only **one live document +still gives the wrong instruction**: [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md) +(last commit `bd06ef0`, the day *before* the removal in `5885280`), plus the archived +[telegram-otp-bot/INTEGRATION-PROMPT.md](../../telegram-otp-bot/INTEGRATION-PROMPT.md). +→ **The plan's statement that "both `manual-testing-plan.md` and `RUNBOOK.md` are stale on secrets +handling" is half wrong. `RUNBOOK.md` is current.** Phase 3 fixes one file, not two. + +**Holds — hardening.** C-10 above. 18 of 18 unticked, four later chains, nothing reconciled. + +**Narrower — contract drift (C-14b).** "`dev/contracts/` frozen 07-13 vs `server/src` through 07-28" +is true by date but nearly empty in substance at the OpenAPI layer: 1 endpoint, 1 schema. The drift +that matters, if any, is in the 17 hand-written domain markdown files. Phase 2 should re-scope +accordingly. + +**Narrower — the design-language skill.** The plan says the skill "predates that overhaul" (mobile-scoped +shell, bottom nav, react-hook-form, new icon set). It does not: SKILL.md was rewritten at `baa3cc6` +during iteration 1 and already covers `AppFrame` (4×), `BottomBar`, `APP_FRAME_MAX_WIDTH` (2×) and the +Lucide-only icon registry with `@mui/icons-material` removed. `react-hook-form` is absent from the skill, +but it is an engineering rule that `client/CLAUDE.md` §Forms owns — not a design-language gap. The real +gap is C-12: the skill stopped at iteration 1 while the code went on to iteration 2. + +**Wrong — `temp/swagger.json`.** C-14 above. It is `.gitignore`d and untracked, so it was never part of +the repo's documentation surface. Phase 0's brief says to delete it; that deletes a local file only. + +--- + +## Resolved + +_(none yet — phases move rows here with the decision and the commit that made it)_ diff --git a/docs/_plan/phase-0-inventory-and-scaffold.md b/docs/_plan/phase-0-inventory-and-scaffold.md index e00372a..458d2f1 100644 --- a/docs/_plan/phase-0-inventory-and-scaffold.md +++ b/docs/_plan/phase-0-inventory-and-scaffold.md @@ -144,5 +144,78 @@ without re-reading the file. ## Handoff -_(filled in by the agent that runs this phase — file counts, surprises, anything that changes a later -phase's scope)_ +**Run 2026-07-29 against commit `c99e3f4`. All six outputs delivered; all six verification boxes pass.** + +### Counts + +| | Planned | Actual | +| --- | --- | --- | +| Markdown files surveyed | ~260 | **275** (273 tracked + 2 gitignored `graphify-out/GRAPH_REPORT.md`) | +| `dev/` | 199 | 199 ✓ | +| `dev/shared-working-context/reports/` | 50 | **53** reports + `README.md` + `mocks-registry.md` | +| `dev/phases/backend|frontend` prompts | 32 | 32 ✓ | +| REQs in `for-backend.md` | 67 | 67 ✓ | +| Hardening items | 18 open | 18 of 18 unticked ✓ | +| `product/` | 48 | 48 ✓ | + +The extra 15 over "~260" are the 9 files of `docs/_plan/` itself, the 2 gitignored graph reports, and 3 +more reports than the plan counted. + +Disposition split: **172 archive · 59 keep-as-is · 24 distill · 17 move · 2 merge-into · 1 delete**. +**209 of 275 carry live facts.** Owner phases: **4 → 149 files**, 7 → 31, 2 → 23, 1 → 17, 6 → 17, 3 → 2, +0 → 1, none → 35. + +### Four things that change a later phase's scope + +1. **Phase 2 is smaller than budgeted at the OpenAPI layer.** The 16-day-stale snapshot differs from the + live server by **one endpoint** (`POST /api/v1/webhooks/payouts/{provider}`) and **one schema** + (`GeneratePayoutBatchCommand`). Zero removals, zero method changes, identical schema count (339). + Spend the budget on the 17 hand-written `domains/*.md` instead — that is where drift can hide, and + nothing has ever checked them mechanically. + +2. **Phase 3 fixes one stale bring-up doc, not two.** The plan says `manual-testing-plan.md` *and* + `RUNBOOK.md` are both stale on secrets. `RUNBOOK.md` was updated in `5885280` and is correct — it even + has a troubleshooting row for the error you now get. Only `manual-testing-plan.md` (last commit + `bd06ef0`, the day before) still instructs `dotnet user-secrets`. But Phase 3 inherits a **bigger** + bring-up problem the plan did not list: contradictions **C-3/C-4/C-5** — the API is `http://`, not + `https://`, in ~18 places; the `dev-certs` step is therefore dead; and `RUNBOOK.md` builds a *local* + Docker SQL Server while the committed dev config uses a *remote, already-seeded* one. Those are two + different worlds and Phase 3 must pick one and walk it. + +3. **Phase 7's premise is wrong in one direction and right in another.** The frontend-designer skill does + **not** predate the UI overhaul — it was rewritten at `baa3cc6` (manual improvement 1) and already + covers `AppFrame`, `BottomBar`, `APP_FRAME_MAX_WIDTH` and the Lucide-only registry. It is stale by + exactly **one iteration**: `client/CLAUDE.md` was updated at `e6a8f93` (manual improvement 2), which + changed **44 files, +3419/−2449** under `client/src`. Diff against iteration 2, not against the whole + overhaul. + +4. **Phase 4 is the heavy phase, not Phase 3.** 149 of 275 files land on it. Two structural findings make + it tractable: every `dev/phases/*` prompt shares a fixed layout where **§5 "Critical rules you must not + get wrong"** is exactly the not-in-the-code decision set (verified in all 32), and **all 53 reports** + carry a "Follow-ups for later phases" section (verified). Both are mechanically extractable. + +### Smaller notes + +- **`temp/swagger.json` was never committed** — `.gitignore:1` ignores `temp`. Deleting it removed local + clutter, not repo content. The `_plan/README.md` diagnosis calls it a "second stale copy" in the repo; + it is not in the repo. +- **`dev/contracts/domains/messaging.md`** (851 B) is a headerless fragment that silently amends + `messaging-notifications-admin.md`. Phase 2 should **merge**, not move both (C-8). +- **`SET_VIA_USER_SECRETS_OR_ENV`** is still the placeholder string in `appsettings.json` and is enforced + by `StartupSecretsGuard` and the pre-commit hook. Behaviour is correct; the *name* instructs a reader to + use a store that no longer exists (C-2). +- **The `graphify-out/` reports are gitignored generated output**, so the plan's "decide keep or delete" + is moot — they are not repo content and were left alone. +- **Leaf directories are not pre-created.** `docs/rules/{shared,client,server}/` and + `docs/integration/domains/` are named in their index stubs but not made on disk: git does not track + empty directories, so an empty scaffold would silently vanish. Each phase creates its own with its + first file. +- **Server boot gotchas worth reusing** (recorded in `docs/integration/openapi/README.md`): it binds + **HTTP**, first boot takes ~40 s because Development migrates and seeds against the *remote* DB, and + `curl` to localhost returns **502** unless you pass `--noproxy '*'`. + +### Contradictions + +14 logged in [open-contradictions.md](open-contradictions.md), including a +[corrections section](open-contradictions.md#corrections-to-the-seeded-list) covering the three seeded +claims that did not reproduce as stated. Phase 0 resolved none, by design. diff --git a/docs/flows/index.md b/docs/flows/index.md new file mode 100644 index 0000000..e26b2f6 --- /dev/null +++ b/docs/flows/index.md @@ -0,0 +1,33 @@ +# Flows — what is implemented, and how to test it + +> **Populated by phase 3 — not yet written.** It is the biggest phase in the chain (2–4 sessions). +> Until then the closest things are [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md) +> and [RUNBOOK.md](../../dev/post-phase/refinement/RUNBOOK.md) — both partly stale, see below. + +One file per **user-meaningful journey**, not per screen. Each answers three questions and no others: +what it does, what is real versus mocked, and the exact steps to walk it against a running stack. + +This page becomes the **status table** — every flow, one row, with its `Last verified` date. It is the +page you check before believing anything else in `docs/`. + +## Planned contents + +| File | Covers | +| --- | --- | +| `testing-setup.md` | Bring-up, demo accounts, the seeded world, OTP retrieval, reset, troubleshooting | +| `.md` × ~23 | One per journey — the candidate list is in [phase 3](../_plan/phase-3-flow-atlas.md) | + +## Before writing testing-setup.md + +Four contradictions land squarely on the bring-up story, and phase 3 has to settle them rather than +copy either source. All are logged in [_plan/open-contradictions.md](../_plan/open-contradictions.md): + +- **C-1** — `manual-testing-plan.md` still tells you to set crypto keys via `dotnet user-secrets`, which + was removed in `5885280`. **`RUNBOOK.md` is already correct on this**; only the one file is stale. +- **C-3** — the API listens on `http://localhost:5002`, not `https://`, in 18 places' worth of prose. +- **C-4** — the `dotnet dev-certs https --trust` step therefore has nothing to trust. +- **C-5** — `RUNBOOK.md` starts a **local** SQL Server in Docker; the committed dev config points at a + **remote** one. These are not the same world: the remote DB is already seeded, a fresh local one is + not, and its data is encrypted under keys that must match exactly. + +Pick one bring-up path, verify it end to end, and say plainly what the other one was. diff --git a/docs/integration/index.md b/docs/integration/index.md new file mode 100644 index 0000000..998fbb1 --- /dev/null +++ b/docs/integration/index.md @@ -0,0 +1,34 @@ +# Integration — the client↔server seam + +> **Populated by phase 2 — not yet written**, except the OpenAPI snapshot, which phase 0 refreshed. +> Until then the contract lives in [dev/contracts/](../../dev/contracts/README.md) (frozen 2026-07-13) +> and the deployment shape in [DEPLOY.md](../../DEPLOY.md). + +The two projects have no shared build. Everything that crosses between them — envelope shape, casing, +pagination, idempotency, cookies and refresh, CORS, `NEXT_PUBLIC_API_URL`, three containers behind Caddy, +a remote SQL Server and the OTP relay — is described **here, as one thing**. Today it is described +nowhere as one thing, which is the gap this section closes. + +## Planned contents + +| File | Covers | +| --- | --- | +| `api-contract.md` | Envelope, casing, pagination, error shape, idempotency, auth headers/cookies | +| `domains/` | One file per service domain, refreshed against the live swagger | +| [`openapi/`](openapi/README.md) | The machine contract — **snapshot is current as of 2026-07-29** | +| `config-matrix.md` | Every env var and appsettings key: client, server, docker, the bot | +| `topology.md` | The runtime dependency graph — 3 containers + Caddy + remote SQL + OTP relay | + +## What phase 0 already established + +The machine contract barely drifted. Between the 2026-07-13 snapshot and the live server on 2026-07-29: +**one endpoint added** (`POST /api/v1/webhooks/payouts/{provider}`), **one schema changed** +(`GeneratePayoutBatchCommand`), nothing removed. Full diff in +[_plan/open-contradictions.md § OpenAPI drift](../_plan/open-contradictions.md#openapi-drift). + +So phase 2's real work is the **17 hand-written** `dev/contracts/domains/*.md` files, which were frozen +the same day and have never been checked against anything mechanically — not the JSON. + +Also open for this section: **C-2** (`SET_VIA_USER_SECRETS_OR_ENV` names a store that was removed), +**C-3** (`https://localhost:5002` in 18 places vs `http://` in `launchSettings.json`), **C-8** (two +contract files for messaging), **C-9** (a `v1.1` OpenAPI document that may not exist). diff --git a/docs/integration/openapi/README.md b/docs/integration/openapi/README.md new file mode 100644 index 0000000..3f99b69 --- /dev/null +++ b/docs/integration/openapi/README.md @@ -0,0 +1,56 @@ +# OpenAPI snapshot + +The **machine contract**. The server generates it with NSwag; this folder holds the published snapshot +so the client can generate or verify types without booting the backend. + +> Last verified: 2026-07-29 against commit `c99e3f4` (server code last changed in `5885280`, 2026-07-28). + +| | | +| --- | --- | +| File | [`swagger.v1.json`](swagger.v1.json) | +| Taken | 2026-07-29 | +| Commit | `c99e3f4` | +| **Paths** | **178** | +| **Operations** | **186** | +| Component schemas | 339 | +| Generator | NSwag v14.7.1.0 · OpenAPI 3.0.0 | +| Size | 612 K | + +## How to regenerate + +The API binds **plain HTTP** on port 5002 (`launchSettings.json`), despite what most prose in this repo +says — see contradiction C-3. Use whatever port you bind; the document is the same. + +```bash +cd server +ASPNETCORE_ENVIRONMENT=Development dotnet run \ + --project src/API/Baya.Web.Api/Baya.Web.Api.csproj + +# from another shell, once "Now listening" appears: +curl -s --noproxy '*' http://127.0.0.1:5002/swagger/v1/swagger.json \ + -o docs/integration/openapi/swagger.v1.json +``` + +Two things that cost time the first run: + +- Booting in `Development` **migrates and seeds** against the DB in `appsettings.Development.json` — + currently a *remote* SQL Server. First boot takes ~40 s and logs + `Demo world already seeded — no-op.` when the world is present. +- `--noproxy '*'` matters. With a proxy configured in the environment, `curl` to `localhost` returns + **502** rather than the document. + +Then update the table above — date, commit, and endpoint count — in the same change. A snapshot whose +provenance is unrecorded is what this chain exists to stop. + +## Scope + +`v1` only. [The old README](../../../dev/contracts/openapi/README.md) claimed the server publishes +documents `v1` **and** `v1.1`, but only `v1` has ever been committed and `v1.1` was not fetched during +the phase 0 survey. `UNVERIFIED:` check `/swagger/v1.1/swagger.json` when the server is next up +(contradiction C-9). + +## The human contract + +The prose half — one file per domain — lands in [`../domains/`](../index.md) in phase 2. **The two must +agree**: this JSON is the wire truth, the markdown explains it. When they disagree, the JSON wins and +the markdown is wrong. diff --git a/docs/integration/openapi/swagger.v1.json b/docs/integration/openapi/swagger.v1.json new file mode 100644 index 0000000..f86afd8 --- /dev/null +++ b/docs/integration/openapi/swagger.v1.json @@ -0,0 +1,24017 @@ +{ + "x-generator": "NSwag v14.7.1.0 (NJsonSchema v11.6.1.0 (Newtonsoft.Json v13.0.0.0))", + "openapi": "3.0.0", + "info": { + "title": "Clean Architecture OpenAPI docs", + "version": "v1" + }, + "servers": [ + { + "url": "http://127.0.0.1:5099" + } + ], + "paths": { + "/api/v1/admin_bnpl/{id}/verify": { + "post": { + "tags": [ + "AdminBnpl" + ], + "operationId": "AdminBnpl_Verify", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBoolean" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_bnpl/{id}/settle": { + "post": { + "tags": [ + "AdminBnpl" + ], + "operationId": "AdminBnpl_Settle", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBoolean" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_bnpl/{id}/revert": { + "post": { + "tags": [ + "AdminBnpl" + ], + "operationId": "AdminBnpl_Revert", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevertBnplBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRevertBnplResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_bnpl/{id}": { + "get": { + "tags": [ + "AdminBnpl" + ], + "summary": "Retrieves a AdminBnpl by unique id", + "operationId": "AdminBnpl_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the AdminBnpl", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBnplOrderStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_booking_requests/expire": { + "post": { + "tags": [ + "AdminBookingRequests" + ], + "operationId": "AdminBookingRequests_Expire", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfExpireBookingRequestsResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_cancellation_policies/upsert": { + "post": { + "tags": [ + "AdminCancellationPolicies" + ], + "operationId": "AdminCancellationPolicies_Upsert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertCancellationPolicyCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCancellationPolicyDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_cancellation_policies/list": { + "get": { + "tags": [ + "AdminCancellationPolicies" + ], + "operationId": "AdminCancellationPolicies_List", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfCancellationPolicyDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/create_category": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_CreateCategory", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateServiceCategoryCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfServiceCategoryDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/update_category/{id}": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_UpdateCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateServiceCategoryCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfServiceCategoryDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/set_category_active/{id}": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_SetCategoryActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetServiceCategoryActiveCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/create_option_group": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_CreateOptionGroup", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateServiceOptionGroupCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfOptionGroupDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/update_option_group/{id}": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_UpdateOptionGroup", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateServiceOptionGroupCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfOptionGroupDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/create_option_value": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_CreateOptionValue", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateServiceOptionValueCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfOptionValueDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_catalog/update_option_value/{id}": { + "post": { + "tags": [ + "AdminCatalog" + ], + "operationId": "AdminCatalog_UpdateOptionValue", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateServiceOptionValueCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfOptionValueDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_clawbacks/{id}/write_off": { + "post": { + "tags": [ + "AdminClawbacks" + ], + "operationId": "AdminClawbacks_WriteOff", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WriteOffClawbackBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBoolean" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_evv/list": { + "get": { + "tags": [ + "AdminEvv" + ], + "operationId": "AdminEvv_List", + "parameters": [ + { + "name": "Type", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfAdminEvvItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_evv/detect_no_shows": { + "post": { + "tags": [ + "AdminEvv" + ], + "operationId": "AdminEvv_DetectNoShows", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNoShowSweepResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/create_province": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_CreateProvince", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProvinceCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfProvinceDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/update_province/{id}": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_UpdateProvince", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateProvinceCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfProvinceDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/set_province_active/{id}": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_SetProvinceActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetProvinceActiveCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/create_city": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_CreateCity", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCityCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCityDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/update_city/{id}": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_UpdateCity", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateCityCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCityDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/set_city_active/{id}": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_SetCityActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetCityActiveCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/create_district": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_CreateDistrict", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDistrictCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDistrictDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/update_district/{id}": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_UpdateDistrict", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDistrictCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDistrictDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_geo/set_district_active/{id}": { + "post": { + "tags": [ + "AdminGeo" + ], + "operationId": "AdminGeo_SetDistrictActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetDistrictActiveCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_invoices": { + "post": { + "tags": [ + "AdminInvoices" + ], + "operationId": "AdminInvoices_Issue", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueInvoiceCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfInvoiceDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/partner-centers": { + "post": { + "tags": [ + "AdminPartnerCenters" + ], + "summary": "Creates a AdminPartnerCenter", + "operationId": "AdminPartnerCenters_Create", + "requestBody": { + "x-name": "command", + "description": "A AdminPartnerCenter representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePartnerCenterCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPartnerCenterDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "get": { + "tags": [ + "AdminPartnerCenters" + ], + "operationId": "AdminPartnerCenters_List", + "parameters": [ + { + "name": "IsActive", + "in": "query", + "schema": { + "type": "boolean", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfPartnerCenterListItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/partner-centers/{id}": { + "patch": { + "tags": [ + "AdminPartnerCenters" + ], + "summary": "Updates a AdminPartnerCenter by unique id", + "operationId": "AdminPartnerCenters_Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A AdminPartnerCenter representation", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePartnerCenterCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPartnerCenterDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "get": { + "tags": [ + "AdminPartnerCenters" + ], + "summary": "Retrieves a AdminPartnerCenter by unique id", + "operationId": "AdminPartnerCenters_GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the AdminPartnerCenter", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPartnerCenterDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/partner-centers/{id}/verify": { + "post": { + "tags": [ + "AdminPartnerCenters" + ], + "operationId": "AdminPartnerCenters_Verify", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPartnerCenterDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/partner-centers/{id}/sponsor-nurse": { + "post": { + "tags": [ + "AdminPartnerCenters" + ], + "operationId": "AdminPartnerCenters_SponsorNurse", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SponsorNurseCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/partner-centers/{id}/set-active": { + "post": { + "tags": [ + "AdminPartnerCenters" + ], + "operationId": "AdminPartnerCenters_SetActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetPartnerCenterActiveCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPartnerCenterDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_payouts/eligible": { + "get": { + "tags": [ + "AdminPayouts" + ], + "operationId": "AdminPayouts_Eligible", + "parameters": [ + { + "name": "PeriodStart", + "in": "query", + "schema": { + "type": "string", + "format": "date" + }, + "x-position": 1 + }, + { + "name": "PeriodEnd", + "in": "query", + "schema": { + "type": "string", + "format": "date" + }, + "x-position": 2 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfEligibleNurseEarningsDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_payouts/batches": { + "post": { + "tags": [ + "AdminPayouts" + ], + "operationId": "AdminPayouts_Generate", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeneratePayoutBatchCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfGeneratePayoutBatchResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "get": { + "tags": [ + "AdminPayouts" + ], + "operationId": "AdminPayouts_List", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfPayoutBatchDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_payouts/batches/{id}/process": { + "post": { + "tags": [ + "AdminPayouts" + ], + "operationId": "AdminPayouts_Process", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfExecutePayoutBatchResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_payouts/batches/{id}": { + "get": { + "tags": [ + "AdminPayouts" + ], + "summary": "Retrieves a AdminPayout by unique id", + "operationId": "AdminPayouts_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the AdminPayout", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + }, + "x-position": 2 + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 50 + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPayoutBatchDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_payouts/{payoutId}/retry": { + "post": { + "tags": [ + "AdminPayouts" + ], + "operationId": "AdminPayouts_Retry", + "parameters": [ + { + "name": "payoutId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBoolean" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_payouts/{payoutId}/mark_failed": { + "post": { + "tags": [ + "AdminPayouts" + ], + "operationId": "AdminPayouts_MarkFailed", + "parameters": [ + { + "name": "payoutId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MarkPayoutFailedBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBoolean" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_refunds": { + "post": { + "tags": [ + "AdminRefunds" + ], + "summary": "Creates a AdminRefund", + "operationId": "AdminRefunds_Create", + "requestBody": { + "x-name": "command", + "description": "A AdminRefund representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRefundCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCreateRefundResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "get": { + "tags": [ + "AdminRefunds" + ], + "operationId": "AdminRefunds_List", + "parameters": [ + { + "name": "BookingId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfRefundListItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_refunds/{id}/confirm_settlement": { + "post": { + "tags": [ + "AdminRefunds" + ], + "operationId": "AdminRefunds_ConfirmSettlement", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRefundSettlementResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_refunds/{id}/mark_failed": { + "post": { + "tags": [ + "AdminRefunds" + ], + "operationId": "AdminRefunds_MarkFailed", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MarkRefundFailedBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRefundSettlementResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/reviews/moderation_queue": { + "get": { + "tags": [ + "AdminReviews" + ], + "operationId": "AdminReviews_ModerationQueue", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfModerationQueueItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_search/rebuild_index": { + "post": { + "tags": [ + "AdminSearch" + ], + "operationId": "AdminSearch_RebuildIndex", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfSearchIndexRebuildResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/tickets": { + "get": { + "tags": [ + "AdminTickets" + ], + "operationId": "AdminTickets_List", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Category", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "ReferenceCode", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 3 + }, + { + "name": "BookingId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 4 + }, + { + "name": "RefundId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 5 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 6 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 7 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfTicketSummaryDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin/tickets/{id}": { + "get": { + "tags": [ + "AdminTickets" + ], + "operationId": "AdminTickets_Thread", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfTicketThreadDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verifications": { + "get": { + "tags": [ + "AdminVerifications" + ], + "operationId": "AdminVerifications_List", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfAdminPendingStepDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verifications/{nurseVerificationId}": { + "get": { + "tags": [ + "AdminVerifications" + ], + "summary": "Retrieves a AdminVerification by unique id", + "operationId": "AdminVerifications_Get", + "parameters": [ + { + "name": "nurseVerificationId", + "in": "path", + "required": true, + "description": "A unique id for the AdminVerification", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfAdminVerificationDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verifications/steps/{stepId}/decide": { + "post": { + "tags": [ + "AdminVerifications" + ], + "operationId": "AdminVerifications_Decide", + "parameters": [ + { + "name": "stepId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReviewStepCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfReviewStepResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verifications/{nurseVerificationId}/suspend": { + "post": { + "tags": [ + "AdminVerifications" + ], + "operationId": "AdminVerifications_Suspend", + "parameters": [ + { + "name": "nurseVerificationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSuspendVerificationCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verifications/scan_expiring": { + "post": { + "tags": [ + "AdminVerifications" + ], + "operationId": "AdminVerifications_ScanExpiring", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScanExpiringCredentialsCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfScanExpiringResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verification_step_types": { + "get": { + "tags": [ + "AdminVerificationStepTypes" + ], + "operationId": "AdminVerificationStepTypes_List", + "parameters": [ + { + "name": "includeInactive", + "in": "query", + "schema": { + "type": "boolean" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfVerificationStepTypeDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "post": { + "tags": [ + "AdminVerificationStepTypes" + ], + "operationId": "AdminVerificationStepTypes_Upsert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUpsertStepTypeCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVerificationStepTypeDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/admin_verification_step_types/{id}": { + "delete": { + "tags": [ + "AdminVerificationStepTypes" + ], + "operationId": "AdminVerificationStepTypes_Deactivate", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/audit/get_audit_trail": { + "get": { + "tags": [ + "Audit" + ], + "operationId": "Audit_GetAuditTrail", + "parameters": [ + { + "name": "EntityType", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "EntityId", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "ActorId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "x-position": 3 + }, + { + "name": "Action", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 4 + }, + { + "name": "From", + "in": "query", + "schema": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "x-position": 5 + }, + { + "name": "To", + "in": "query", + "schema": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "x-position": 6 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 7 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 8 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfAuditLogDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/auth/request_otp": { + "post": { + "tags": [ + "Auth" + ], + "operationId": "Auth_RequestOtp", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequestOtpCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRequestOtpResult" + } + } + } + } + } + } + }, + "/api/v1/auth/verify_otp": { + "post": { + "tags": [ + "Auth" + ], + "operationId": "Auth_VerifyOtp", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VerifyOtpCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfAuthTokensResult" + } + } + } + } + } + } + }, + "/api/v1/auth/refresh": { + "post": { + "tags": [ + "Auth" + ], + "operationId": "Auth_Refresh", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfAuthTokensResult" + } + } + } + } + }, + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/v1/auth/logout": { + "post": { + "tags": [ + "Auth" + ], + "operationId": "Auth_Logout", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LogoutCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/create": { + "post": { + "tags": [ + "BookingRequests" + ], + "summary": "Creates a BookingRequest", + "operationId": "BookingRequests_Create", + "requestBody": { + "x-name": "command", + "description": "A BookingRequest representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateBookingRequestCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingRequestDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/cancel/{id}": { + "post": { + "tags": [ + "BookingRequests" + ], + "operationId": "BookingRequests_Cancel", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingRequestDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/accept/{id}": { + "post": { + "tags": [ + "BookingRequests" + ], + "operationId": "BookingRequests_Accept", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingRequestDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/reject/{id}": { + "post": { + "tags": [ + "BookingRequests" + ], + "operationId": "BookingRequests_Reject", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejectBookingRequestCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingRequestDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/list": { + "get": { + "tags": [ + "BookingRequests" + ], + "operationId": "BookingRequests_List", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Role", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfBookingRequestListItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/get/{id}": { + "get": { + "tags": [ + "BookingRequests" + ], + "summary": "Retrieves a BookingRequest by unique id", + "operationId": "BookingRequests_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the BookingRequest", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingRequestDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_requests/checkout_summary/{id}": { + "get": { + "tags": [ + "BookingRequests" + ], + "operationId": "BookingRequests_CheckoutSummary", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCheckoutSummaryDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/{bookingId}/review": { + "post": { + "tags": [ + "BookingReviews" + ], + "operationId": "BookingReviews_Review", + "parameters": [ + { + "name": "bookingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitReviewBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfSubmitReviewResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/{bookingId}/review_eligibility": { + "get": { + "tags": [ + "BookingReviews" + ], + "operationId": "BookingReviews_ReviewEligibility", + "parameters": [ + { + "name": "bookingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfReviewEligibilityDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/{bookingId}/my_review": { + "get": { + "tags": [ + "BookingReviews" + ], + "operationId": "BookingReviews_MyReview", + "parameters": [ + { + "name": "bookingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfMyReviewDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/convert": { + "post": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_Convert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConvertRequestToBookingCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/get/{id}": { + "get": { + "tags": [ + "Bookings" + ], + "summary": "Retrieves a Booking by unique id", + "operationId": "Bookings_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the Booking", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/list": { + "get": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_List", + "parameters": [ + { + "name": "Role", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfBookingListItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/transition/{id}": { + "post": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_Transition", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransitionBookingStatusCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBookingDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/cancel/{id}": { + "post": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_Cancel", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CancelBookingCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCancellationResultDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/{id}/cancel": { + "post": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_CancelAndRefund", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CancelBookingAndRefundCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRefundStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/{id}/cancellation_policy": { + "get": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_CancellationPolicy", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCancellationPolicyPreviewDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/submit_care_instructions/{id}": { + "post": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_SubmitCareInstructions", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitCareInstructionsCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCareInstructionsDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/care_instructions/{id}": { + "get": { + "tags": [ + "Bookings" + ], + "operationId": "Bookings_CareInstructions", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCareInstructionsDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_sessions/check_in/{id}": { + "post": { + "tags": [ + "BookingSessions" + ], + "operationId": "BookingSessions_CheckIn", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckInVisitCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVisitVerificationDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_sessions/check_out/{id}": { + "post": { + "tags": [ + "BookingSessions" + ], + "operationId": "BookingSessions_CheckOut", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckOutVisitCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVisitVerificationDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_sessions/today": { + "get": { + "tags": [ + "BookingSessions" + ], + "operationId": "BookingSessions_Today", + "parameters": [ + { + "name": "Date", + "in": "query", + "schema": { + "type": "string", + "format": "date", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfBookingSessionListItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_sessions/evv/{id}": { + "get": { + "tags": [ + "BookingSessions" + ], + "operationId": "BookingSessions_Evv", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVisitVerificationDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/booking_sessions/cancel/{id}": { + "post": { + "tags": [ + "BookingSessions" + ], + "operationId": "BookingSessions_Cancel", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CancelSessionCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCancellationResultDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/catalog/categories": { + "get": { + "tags": [ + "Catalog" + ], + "operationId": "Catalog_Categories", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfServiceCategoryDto" + } + } + } + } + } + } + }, + "/api/v1/catalog/option_groups": { + "get": { + "tags": [ + "Catalog" + ], + "operationId": "Catalog_OptionGroups", + "parameters": [ + { + "name": "category_id", + "x-originalName": "categoryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfOptionGroupDto" + } + } + } + } + } + } + }, + "/api/v1/centers/{id}/dashboard": { + "get": { + "tags": [ + "Centers" + ], + "operationId": "Centers_Dashboard", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCenterDashboardDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/checkout_bnpl/eligibility": { + "post": { + "tags": [ + "CheckoutBnpl" + ], + "operationId": "CheckoutBnpl_Eligibility", + "requestBody": { + "x-name": "query", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckBnplEligibilityQuery" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBnplEligibilityDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/checkout_bnpl/initiate": { + "post": { + "tags": [ + "CheckoutBnpl" + ], + "operationId": "CheckoutBnpl_Initiate", + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InitiateBnplBody" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfInitiateBnplResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/checkout_bnpl/{id}": { + "get": { + "tags": [ + "CheckoutBnpl" + ], + "summary": "Retrieves a CheckoutBnpl by unique id", + "operationId": "CheckoutBnpl_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the CheckoutBnpl", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBnplOrderStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/checkout_bnpl/by_request/{bookingRequestId}": { + "get": { + "tags": [ + "CheckoutBnpl" + ], + "operationId": "CheckoutBnpl_ByRequest", + "parameters": [ + { + "name": "bookingRequestId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBnplOrderStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_addresses/create": { + "post": { + "tags": [ + "CustomerAddresses" + ], + "summary": "Creates a CustomerAddress", + "operationId": "CustomerAddresses_Create", + "requestBody": { + "x-name": "command", + "description": "A CustomerAddress representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAddressCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCustomerAddressDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_addresses/update/{id}": { + "post": { + "tags": [ + "CustomerAddresses" + ], + "summary": "Updates a CustomerAddress by unique id", + "operationId": "CustomerAddresses_Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A CustomerAddress representation", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateAddressCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCustomerAddressDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_addresses/set_primary/{id}": { + "post": { + "tags": [ + "CustomerAddresses" + ], + "operationId": "CustomerAddresses_SetPrimary", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_addresses/delete/{id}": { + "delete": { + "tags": [ + "CustomerAddresses" + ], + "summary": "Deletes a CustomerAddress by unique id", + "operationId": "CustomerAddresses_Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the CustomerAddress", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_addresses/list": { + "get": { + "tags": [ + "CustomerAddresses" + ], + "operationId": "CustomerAddresses_List", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfCustomerAddressDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_profiles/upsert": { + "post": { + "tags": [ + "CustomerProfiles" + ], + "operationId": "CustomerProfiles_Upsert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertCustomerProfileCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCustomerProfileDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_profiles/me": { + "get": { + "tags": [ + "CustomerProfiles" + ], + "operationId": "CustomerProfiles_Me", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCustomerProfileDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/customer_profiles/avatar": { + "post": { + "tags": [ + "CustomerProfiles" + ], + "operationId": "CustomerProfiles_Avatar", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "nullable": true + } + } + } + } + } + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfAvatarUploadResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/dev/last_otp/{phone}": { + "get": { + "tags": [ + "Dev" + ], + "summary": "Development-only: returns the most recent OTP for phone so a browser or an\nautomated end-to-end flow can complete phone-OTP login without an SMS gateway (the code is otherwise\nonly written to the server log by LoggingSmsSender). Returns 404 in every non-Development\nenvironment — the capture is not even wired there — so it can never leak a code in staging/production.\nIt does not touch the OTP rate-limit or the per-phone resend window. Superseded by the real SMS gateway\nin refinement Phase 8.", + "operationId": "Dev_LastOtp", + "parameters": [ + { + "name": "phone", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDevLastOtpResult" + } + } + } + } + } + } + }, + "/api/v1/geo/provinces": { + "get": { + "tags": [ + "Geo" + ], + "operationId": "Geo_Provinces", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfProvinceDto" + } + } + } + } + } + } + }, + "/api/v1/geo/cities": { + "get": { + "tags": [ + "Geo" + ], + "operationId": "Geo_Cities", + "parameters": [ + { + "name": "province_id", + "x-originalName": "provinceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfCityDto" + } + } + } + } + } + } + }, + "/api/v1/geo/districts": { + "get": { + "tags": [ + "Geo" + ], + "operationId": "Geo_Districts", + "parameters": [ + { + "name": "city_id", + "x-originalName": "cityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfDistrictDto" + } + } + } + } + } + } + }, + "/api/v1/geo/tree": { + "get": { + "tags": [ + "Geo" + ], + "operationId": "Geo_Tree", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfProvinceTreeDto" + } + } + } + } + } + } + }, + "/api/v1/holidays/get_holidays": { + "get": { + "tags": [ + "Holidays" + ], + "summary": "Returns all Holidays", + "operationId": "Holidays_GetHolidays", + "parameters": [ + { + "name": "From", + "in": "query", + "schema": { + "type": "string", + "format": "date", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "To", + "in": "query", + "schema": { + "type": "string", + "format": "date", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfHolidayDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/holidays/upsert_holiday": { + "post": { + "tags": [ + "Holidays" + ], + "operationId": "Holidays_UpsertHoliday", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertHolidayCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/holidays/delete_holiday": { + "post": { + "tags": [ + "Holidays" + ], + "summary": "Deletes a Holiday by unique id", + "operationId": "Holidays_DeleteHoliday", + "requestBody": { + "x-name": "command", + "description": "A unique id for the Holiday", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteHolidayCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/internal/bookings/{bookingId}/center": { + "get": { + "tags": [ + "InternalCenters" + ], + "operationId": "InternalCenters_CenterForBooking", + "parameters": [ + { + "name": "bookingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCenterForBookingDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/invoices/{bookingId}": { + "get": { + "tags": [ + "Invoices" + ], + "summary": "Retrieves a Invoice by unique id", + "operationId": "Invoices_Get", + "parameters": [ + { + "name": "bookingId", + "in": "path", + "required": true, + "description": "A unique id for the Invoice", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfInvoiceDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/me": { + "get": { + "tags": [ + "Me" + ], + "summary": "Retrieves a Me by unique id", + "operationId": "Me_GetMe", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfMeResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/me/select_role": { + "post": { + "tags": [ + "Me" + ], + "description": "Role claims live inside the access token — after selecting a role the client should\n refresh its tokens to pick the new role up.", + "operationId": "Me_SelectRole", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelectRoleCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfMeResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/notifications/get_notifications": { + "get": { + "tags": [ + "Notifications" + ], + "summary": "Returns all Notifications", + "operationId": "Notifications_GetNotifications", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfNotificationDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/notifications/get_unread_count": { + "get": { + "tags": [ + "Notifications" + ], + "operationId": "Notifications_GetUnreadCount", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfUnreadCountResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/notifications/mark_notification_read": { + "post": { + "tags": [ + "Notifications" + ], + "operationId": "Notifications_MarkNotificationRead", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MarkNotificationReadCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/notifications/mark_all_read": { + "post": { + "tags": [ + "Notifications" + ], + "operationId": "Notifications_MarkAllRead", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_bank_accounts/add": { + "post": { + "tags": [ + "NurseBankAccounts" + ], + "operationId": "NurseBankAccounts_Add", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddNurseBankAccountCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseBankAccountDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_bank_accounts/set_primary/{id}": { + "post": { + "tags": [ + "NurseBankAccounts" + ], + "operationId": "NurseBankAccounts_SetPrimary", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_bank_accounts/list": { + "get": { + "tags": [ + "NurseBankAccounts" + ], + "operationId": "NurseBankAccounts_List", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfIReadOnlyListOfNurseBankAccountDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_bank_accounts/verify_ownership/{id}": { + "post": { + "tags": [ + "NurseBankAccounts" + ], + "operationId": "NurseBankAccounts_VerifyOwnership", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseBankAccountDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurses/{nurseId}/payable_balance": { + "get": { + "tags": [ + "NursePayableBalance" + ], + "operationId": "NursePayableBalance_PayableBalance", + "parameters": [ + { + "name": "nurseId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNursePayableBalanceDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_payouts/history": { + "get": { + "tags": [ + "NursePayouts" + ], + "operationId": "NursePayouts_History", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfNursePayoutHistoryDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_payouts/earnings_balance": { + "get": { + "tags": [ + "NursePayouts" + ], + "operationId": "NursePayouts_EarningsBalance", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseEarningsBalanceDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_payouts/earnings": { + "get": { + "tags": [ + "NursePayouts" + ], + "operationId": "NursePayouts_Earnings", + "parameters": [ + { + "name": "State", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfNurseEarningsItemDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_payouts/{id}": { + "get": { + "tags": [ + "NursePayouts" + ], + "operationId": "NursePayouts_Detail", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNursePayoutDetailDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_profiles/upsert": { + "post": { + "tags": [ + "NurseProfiles" + ], + "operationId": "NurseProfiles_Upsert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertNurseProfileCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseProfileDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_profiles/set_accepting_bookings": { + "post": { + "tags": [ + "NurseProfiles" + ], + "operationId": "NurseProfiles_SetAcceptingBookings", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetNurseAcceptingBookingsCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_profiles/me": { + "get": { + "tags": [ + "NurseProfiles" + ], + "operationId": "NurseProfiles_Me", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseProfileDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_profiles/avatar": { + "post": { + "tags": [ + "NurseProfiles" + ], + "operationId": "NurseProfiles_Avatar", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary", + "nullable": true + } + } + } + } + } + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfAvatarUploadResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurses/{nurseId}/trust_badge": { + "get": { + "tags": [ + "Nurses" + ], + "operationId": "Nurses_TrustBadge", + "parameters": [ + { + "name": "nurseId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfTrustBadgeDto" + } + } + } + } + } + } + }, + "/api/v1/nurses/{nurseId}/profile": { + "get": { + "tags": [ + "Nurses" + ], + "operationId": "Nurses_Profile", + "parameters": [ + { + "name": "nurseId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNursePublicProfileDto" + } + } + } + } + } + } + }, + "/api/v1/nurses/{nurseProfileId}/reviews": { + "get": { + "tags": [ + "Nurses" + ], + "operationId": "Nurses_Reviews", + "parameters": [ + { + "name": "nurseProfileId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + }, + "x-position": 2 + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseReviewsResult" + } + } + } + } + } + } + }, + "/api/v1/nurses/{nurseProfileId}/review_tags": { + "get": { + "tags": [ + "Nurses" + ], + "operationId": "Nurses_ReviewTags", + "parameters": [ + { + "name": "nurseProfileId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseTagAggregatesResult" + } + } + } + } + } + } + }, + "/api/v1/nurse_service_areas/add": { + "post": { + "tags": [ + "NurseServiceAreas" + ], + "operationId": "NurseServiceAreas_Add", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddNurseServiceAreaCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfNurseServiceAreaDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_service_areas/remove/{id}": { + "delete": { + "tags": [ + "NurseServiceAreas" + ], + "summary": "Deletes a NurseServiceArea by unique id", + "operationId": "NurseServiceAreas_Remove", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the NurseServiceArea", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_service_areas/list": { + "get": { + "tags": [ + "NurseServiceAreas" + ], + "operationId": "NurseServiceAreas_List", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfNurseServiceAreaDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_variants/create": { + "post": { + "tags": [ + "NurseVariants" + ], + "summary": "Creates a NurseVariant", + "operationId": "NurseVariants_Create", + "requestBody": { + "x-name": "command", + "description": "A NurseVariant representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateVariantCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVariantDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_variants/update/{id}": { + "post": { + "tags": [ + "NurseVariants" + ], + "summary": "Updates a NurseVariant by unique id", + "operationId": "NurseVariants_Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A NurseVariant representation", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateVariantCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVariantDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_variants/set_active/{id}": { + "post": { + "tags": [ + "NurseVariants" + ], + "operationId": "NurseVariants_SetActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetVariantActiveCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_variants/list": { + "get": { + "tags": [ + "NurseVariants" + ], + "operationId": "NurseVariants_List", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfVariantDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_variants/get/{id}": { + "get": { + "tags": [ + "NurseVariants" + ], + "summary": "Retrieves a NurseVariant by unique id", + "operationId": "NurseVariants_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the NurseVariant", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVariantDto" + } + } + } + } + } + } + }, + "/api/v1/nurse_verification/submit": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_Submit", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVerificationStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification": { + "get": { + "tags": [ + "NurseVerification" + ], + "summary": "Returns all NurseVerifications", + "operationId": "NurseVerification_Get", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVerificationStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification/steps/{stepId}/upload_url": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_UploadUrl", + "parameters": [ + { + "name": "stepId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequestDocumentUploadUrlCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfUploadUrlResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification/steps/{stepId}/documents": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_ConfirmDocument", + "parameters": [ + { + "name": "stepId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfirmDocumentUploadCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDocumentConfirmedResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification/credential_details": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_CredentialDetails", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitCredentialDetailsCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfVerificationStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification/steps/identity_kyc/run": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_RunIdentityKyc", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RunIdentityKycCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRunStepResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification/steps/shahkar_match/run": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_RunShahkarMatch", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRunStepResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/nurse_verification/steps/bank_account_verification/run": { + "post": { + "tags": [ + "NurseVerification" + ], + "operationId": "NurseVerification_RunBankAccountVerification", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRunStepResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/{patientId}/care_records": { + "post": { + "tags": [ + "PatientCareRecords" + ], + "operationId": "PatientCareRecords_Write", + "parameters": [ + { + "name": "patientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WriteCareRecordBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfWriteCareRecordResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "get": { + "tags": [ + "PatientCareRecords" + ], + "operationId": "PatientCareRecords_History", + "parameters": [ + { + "name": "patientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + }, + "x-position": 2 + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfCareRecordDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/{patientId}/care_record": { + "get": { + "tags": [ + "PatientCareRecords" + ], + "operationId": "PatientCareRecords_CarePlan", + "parameters": [ + { + "name": "patientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCarePlanDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "put": { + "tags": [ + "PatientCareRecords" + ], + "operationId": "PatientCareRecords_UpsertCarePlan", + "parameters": [ + { + "name": "patientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertCarePlanBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfCarePlanDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/{patientId}/record_access": { + "get": { + "tags": [ + "PatientCareRecords" + ], + "operationId": "PatientCareRecords_RecordAccess", + "parameters": [ + { + "name": "patientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRecordAccessDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/create": { + "post": { + "tags": [ + "Patients" + ], + "summary": "Creates a Patient", + "operationId": "Patients_Create", + "requestBody": { + "x-name": "command", + "description": "A Patient representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePatientCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPatientDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/list": { + "get": { + "tags": [ + "Patients" + ], + "operationId": "Patients_List", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfPatientDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/get/{id}": { + "get": { + "tags": [ + "Patients" + ], + "summary": "Retrieves a Patient by unique id", + "operationId": "Patients_Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A unique id for the Patient", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPatientDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/update/{id}": { + "post": { + "tags": [ + "Patients" + ], + "summary": "Updates a Patient by unique id", + "operationId": "Patients_Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "A Patient representation", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePatientCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPatientDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/patients/archive/{id}": { + "post": { + "tags": [ + "Patients" + ], + "operationId": "Patients_Archive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/bookings/{bookingRequestId}/payments": { + "post": { + "tags": [ + "Payments" + ], + "operationId": "Payments_Initiate", + "parameters": [ + { + "name": "bookingRequestId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfInitiatePaymentResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/ping/get_status": { + "get": { + "tags": [ + "Ping" + ], + "operationId": "Ping_GetStatus", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPingQueryResult" + } + } + } + } + } + } + }, + "/api/v1/ping/get_status_rate_limited": { + "get": { + "tags": [ + "Ping" + ], + "operationId": "Ping_GetStatusRateLimited", + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPingQueryResult" + } + } + } + } + } + } + }, + "/api/v1/platform_config/get_platform_configs": { + "get": { + "tags": [ + "PlatformConfig" + ], + "summary": "Returns all PlatformConfigs", + "operationId": "PlatformConfig_GetPlatformConfigs", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 1 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfPlatformConfigDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/platform_config/update_platform_config": { + "post": { + "tags": [ + "PlatformConfig" + ], + "summary": "Updates a PlatformConfig by unique id", + "operationId": "PlatformConfig_UpdatePlatformConfig", + "requestBody": { + "x-name": "command", + "description": "A PlatformConfig representation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePlatformConfigCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/platform_config/get_config_change_history": { + "get": { + "tags": [ + "PlatformConfig" + ], + "operationId": "PlatformConfig_GetConfigChangeHistory", + "parameters": [ + { + "name": "Key", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 3 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfConfigChangeDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/refunds/{id}/status": { + "get": { + "tags": [ + "Refunds" + ], + "operationId": "Refunds_Status", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRefundStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/refunds/by_booking/{bookingId}": { + "get": { + "tags": [ + "Refunds" + ], + "operationId": "Refunds_ByBooking", + "parameters": [ + { + "name": "bookingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfRefundStatusDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/reviews/{reviewId}/tags": { + "post": { + "tags": [ + "Reviews" + ], + "operationId": "Reviews_Tags", + "parameters": [ + { + "name": "reviewId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachReviewTagsBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfReviewTagsResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/reviews/{reviewId}/status": { + "patch": { + "tags": [ + "Reviews" + ], + "operationId": "Reviews_Status", + "parameters": [ + { + "name": "reviewId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModerateReviewBody" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfModerateReviewResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/search/nurses": { + "get": { + "tags": [ + "Search" + ], + "operationId": "Search_Nurses", + "parameters": [ + { + "name": "service_category_id", + "x-originalName": "serviceCategoryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + }, + { + "name": "city_id", + "x-originalName": "cityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 2 + }, + { + "name": "district_id", + "x-originalName": "districtId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 3 + }, + { + "name": "nurse_gender", + "x-originalName": "nurseGender", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 4 + }, + { + "name": "min_price", + "x-originalName": "minPrice", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 5 + }, + { + "name": "max_price", + "x-originalName": "maxPrice", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 6 + }, + { + "name": "price_unit", + "x-originalName": "priceUnit", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 7 + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 8 + }, + { + "name": "page_size", + "x-originalName": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 9 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfNurseSearchResultDto" + } + } + } + } + } + } + }, + "/api/v1/support_alerts/get_support_alerts": { + "get": { + "tags": [ + "SupportAlerts" + ], + "summary": "Returns all SupportAlerts", + "operationId": "SupportAlerts_GetSupportAlerts", + "parameters": [ + { + "name": "Type", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "OwnerUserId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "x-position": 3 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 5 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfSupportAlertDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/support_alerts/assign_support_alert": { + "post": { + "tags": [ + "SupportAlerts" + ], + "operationId": "SupportAlerts_AssignSupportAlert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssignSupportAlertCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/support_alerts/resolve_support_alert": { + "post": { + "tags": [ + "SupportAlerts" + ], + "operationId": "SupportAlerts_ResolveSupportAlert", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResolveSupportAlertCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets": { + "post": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_Open", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenTicketCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfOpenTicketResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + }, + "get": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_ListMine", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 + }, + { + "name": "ReferenceCode", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 + }, + { + "name": "BookingId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "x-position": 3 + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 4 + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 5 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPagedResultOfTicketSummaryDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/emergency": { + "post": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_Emergency", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LogEmergencyTicketCommand" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfOpenTicketResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/{id}/messages": { + "post": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_PostMessage", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PostMessageCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfPostMessageResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/{id}/participants": { + "post": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_AddParticipant", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddParticipantCommand" + } + } + }, + "required": true, + "x-position": 2 + }, + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/{id}/participants/{userId}": { + "delete": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_RemoveParticipant", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + }, + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + }, + "x-position": 2 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/{id}/close": { + "post": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_Close", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/{id}/reopen": { + "post": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_Reopen", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/tickets/{id}": { + "get": { + "tags": [ + "Tickets" + ], + "operationId": "Tickets_Thread", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfTicketThreadDto" + } + } + } + } + }, + "security": [ + { + "Bearer": [] + } + ] + } + }, + "/api/v1/webhooks_bnpl/{provider}": { + "post": { + "tags": [ + "WebhooksBnpl" + ], + "operationId": "WebhooksBnpl_Callback", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBnplCallbackResult" + } + } + } + } + } + } + }, + "/api/v1/webhooks/payments/{provider}": { + "post": { + "tags": [ + "Webhooks" + ], + "operationId": "Webhooks_Payments", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfWebhookIngestResult" + } + } + } + } + } + } + }, + "/api/v1/webhooks/payouts/{provider}": { + "post": { + "tags": [ + "WebhooksPayouts" + ], + "operationId": "WebhooksPayouts_Payouts", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-position": 1 + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString" + } + } + } + }, + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResult" + } + } + } + }, + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResultOfBoolean" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "ApiResultOfDictionaryOfStringAndListOfString": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "object", + "nullable": true, + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ] + }, + "ApiResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "isSuccess": { + "type": "boolean" + }, + "statusCode": { + "$ref": "#/components/schemas/ApiResultStatusCode" + }, + "message": { + "type": "string", + "nullable": true + }, + "requestId": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultStatusCode": { + "type": "integer", + "description": "", + "x-enumNames": [ + "Success", + "BadRequest", + "UnAuthorized", + "Forbidden", + "NotFound", + "NotAcceptable", + "Conflict", + "EntityProcessError", + "FailedDependency", + "ServerError" + ], + "enum": [ + 200, + 400, + 401, + 403, + 404, + 406, + 409, + 422, + 424, + 500 + ] + }, + "ApiResultOfBoolean": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "boolean" + } + } + } + ] + }, + "ApiResultOfRevertBnplResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/RevertBnplResult" + } + ] + } + } + } + ] + }, + "RevertBnplResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "bnplTransactionId": { + "type": "integer", + "format": "int64" + }, + "refundId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "revertTransactionId": { + "type": "string", + "nullable": true + }, + "revertedAmountIrr": { + "type": "string" + }, + "expectedCustomerRefundEta": { + "type": "string", + "format": "date", + "nullable": true + } + } + }, + "RevertBnplBody": { + "type": "object", + "description": "The revert body (the order id comes from the route). Omit refund_percentage for a full revert.", + "additionalProperties": false, + "properties": { + "refundPercentage": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "ticketId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "reasonNotes": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfBnplOrderStatusDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/BnplOrderStatusDto" + } + ] + } + } + } + ] + }, + "BnplOrderStatusDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "paymentTransactionId": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "providerCode": { + "type": "string" + }, + "status": { + "type": "string" + }, + "eligibilityStatus": { + "type": "string", + "nullable": true + }, + "orderAmountIrr": { + "type": "string" + }, + "settledAmountIrr": { + "type": "string", + "nullable": true + }, + "bnplCommissionIrr": { + "type": "string", + "nullable": true + }, + "currency": { + "type": "string" + }, + "installmentCount": { + "type": "integer", + "format": "int32" + }, + "settledAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "revertTransactionId": { + "type": "string", + "nullable": true + }, + "revertedAmountIrr": { + "type": "string", + "nullable": true + }, + "revertedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "providerCommissionReversedAmount": { + "type": "string", + "nullable": true + }, + "refundChannel": { + "type": "string", + "nullable": true + }, + "expectedCustomerRefundEta": { + "type": "string", + "format": "date", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfExpireBookingRequestsResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ExpireBookingRequestsResult" + } + ] + } + } + } + ] + }, + "ExpireBookingRequestsResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "expiredNoResponse": { + "type": "integer", + "format": "int32" + }, + "paymentDeadlineExpired": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfCancellationPolicyDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CancellationPolicyDto" + } + ] + } + } + } + ] + }, + "CancellationPolicyDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string" + }, + "appliesTo": { + "type": "string" + }, + "hoursBeforeStartMin": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "hoursBeforeStartMax": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "refundPercentage": { + "type": "number", + "format": "decimal" + }, + "feeAmountIrr": { + "type": "string" + }, + "feeRate": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + } + }, + "UpsertCancellationPolicyCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "appliesTo": { + "type": "string" + }, + "hoursBeforeStartMin": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "hoursBeforeStartMax": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "refundPercentage": { + "type": "number", + "format": "decimal" + }, + "feeAmountIrr": { + "type": "integer", + "format": "int64" + }, + "feeRate": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfIReadOnlyListOfCancellationPolicyDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/CancellationPolicyDto" + } + } + } + } + ] + }, + "ApiResultOfServiceCategoryDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ServiceCategoryDto" + } + ] + } + } + } + ] + }, + "ServiceCategoryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string" + }, + "nameEn": { + "type": "string" + }, + "descriptionFa": { + "type": "string", + "nullable": true + }, + "descriptionEn": { + "type": "string", + "nullable": true + }, + "iconKey": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + } + }, + "CreateServiceCategoryCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "nameFa": { + "type": "string" + }, + "nameEn": { + "type": "string" + }, + "descriptionFa": { + "type": "string", + "nullable": true + }, + "descriptionEn": { + "type": "string", + "nullable": true + }, + "iconKey": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdateServiceCategoryCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string" + }, + "nameEn": { + "type": "string" + }, + "descriptionFa": { + "type": "string", + "nullable": true + }, + "descriptionEn": { + "type": "string", + "nullable": true + }, + "iconKey": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "SetServiceCategoryActiveCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfOptionGroupDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/OptionGroupDto" + } + ] + } + } + } + ] + }, + "OptionGroupDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "serviceCategoryId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nameFa": { + "type": "string" + }, + "nameEn": { + "type": "string" + }, + "isRequired": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OptionValueDto" + } + } + } + }, + "OptionValueDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + } + }, + "CreateServiceOptionGroupCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "serviceCategoryId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nameFa": { + "type": "string" + }, + "nameEn": { + "type": "string" + }, + "isRequired": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdateServiceOptionGroupCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "serviceCategoryId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nameFa": { + "type": "string" + }, + "nameEn": { + "type": "string" + }, + "isRequired": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfOptionValueDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/OptionValueDto" + } + ] + } + } + } + ] + }, + "CreateServiceOptionValueCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "optionGroupId": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdateServiceOptionValueCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + } + }, + "WriteOffClawbackBody": { + "type": "object", + "description": "The write-off body (the id comes from the route).", + "additionalProperties": false, + "properties": { + "reason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfAdminEvvItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfAdminEvvItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfAdminEvvItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/AdminEvvItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "AdminEvvItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "sessionId": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "sessionStatus": { + "type": "string" + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "scheduledTimeStart": { + "type": "string", + "format": "time" + }, + "checkInAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "checkInAddressMatch": { + "type": "boolean", + "nullable": true + }, + "checkInDistanceMeters": { + "type": "number", + "format": "decimal", + "nullable": true + } + } + }, + "ApiResultOfNoShowSweepResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NoShowSweepResult" + } + ] + } + } + } + ] + }, + "NoShowSweepResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "missed": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfProvinceDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ProvinceDto" + } + ] + } + } + } + ] + }, + "ProvinceDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "CreateProvinceCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdateProvinceCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "SetProvinceActiveCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfCityDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CityDto" + } + ] + } + } + } + ] + }, + "CityDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "provinceId": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "CreateCityCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "provinceId": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdateCityCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "SetCityActiveCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfDistrictDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/DistrictDto" + } + ] + } + } + } + ] + }, + "DistrictDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "CreateDistrictCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "cityId": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdateDistrictCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + } + }, + "SetDistrictActiveCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfInvoiceDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/InvoiceDto" + } + ] + } + } + } + ] + }, + "InvoiceDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "invoiceNumber": { + "type": "string" + }, + "issuingEntityType": { + "type": "string" + }, + "grossIrr": { + "type": "string" + }, + "platformCommissionIrr": { + "type": "string" + }, + "bnplCommissionIrr": { + "type": "string", + "nullable": true + }, + "vatRate": { + "type": "number", + "format": "decimal" + }, + "vatIrr": { + "type": "string" + }, + "totalIrr": { + "type": "string" + }, + "moadianReferenceNumber": { + "type": "string", + "nullable": true + }, + "moadianStatus": { + "type": "string", + "nullable": true + }, + "pdfUrl": { + "type": "string", + "nullable": true + }, + "issuedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "IssueInvoiceCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfPartnerCenterDetailDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PartnerCenterDetailDto" + } + ] + } + } + } + ] + }, + "PartnerCenterDetailDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "legalEntityType": { + "type": "string", + "nullable": true + }, + "mohEstablishmentPermitNo": { + "type": "string" + }, + "technicalDirectorNurseUserId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "technicalDirectorLicenseNo": { + "type": "string", + "nullable": true + }, + "enamadCode": { + "type": "string", + "nullable": true + }, + "settlementIbanMasked": { + "type": "string", + "nullable": true + }, + "isMerchantOfRecord": { + "type": "boolean" + }, + "commissionRate": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "adminUserId": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "verifiedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sponsoredNurseCount": { + "type": "integer", + "format": "int32" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "CreatePartnerCenterCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "legalEntityType": { + "type": "string", + "nullable": true + }, + "mohEstablishmentPermitNo": { + "type": "string" + }, + "technicalDirectorNurseUserId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "technicalDirectorLicenseNo": { + "type": "string", + "nullable": true + }, + "enamadCode": { + "type": "string", + "nullable": true + }, + "settlementIban": { + "type": "string", + "nullable": true + }, + "isMerchantOfRecord": { + "type": "boolean" + }, + "commissionRate": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "adminUserId": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdatePartnerCenterCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "legalEntityType": { + "type": "string", + "nullable": true + }, + "mohEstablishmentPermitNo": { + "type": "string" + }, + "technicalDirectorNurseUserId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "technicalDirectorLicenseNo": { + "type": "string", + "nullable": true + }, + "enamadCode": { + "type": "string", + "nullable": true + }, + "settlementIban": { + "type": "string", + "nullable": true + }, + "isMerchantOfRecord": { + "type": "boolean" + }, + "commissionRate": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "adminUserId": { + "type": "integer", + "format": "int32" + }, + "id": { + "type": "integer", + "format": "int64" + } + } + }, + "SponsorNurseCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseProfileId": { + "type": "integer", + "format": "int64" + }, + "unlink": { + "type": "boolean" + }, + "centerId": { + "type": "integer", + "format": "int64" + } + } + }, + "SetPartnerCenterActiveCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "isActive": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfPagedResultOfPartnerCenterListItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfPartnerCenterListItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfPartnerCenterListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/PartnerCenterListItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "PartnerCenterListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "legalEntityType": { + "type": "string", + "nullable": true + }, + "isMerchantOfRecord": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + }, + "verifiedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sponsoredNurseCount": { + "type": "integer", + "format": "int32" + }, + "adminUserId": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfPagedResultOfEligibleNurseEarningsDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfEligibleNurseEarningsDto" + } + ] + } + } + } + ] + }, + "PagedResultOfEligibleNurseEarningsDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/EligibleNurseEarningsDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "EligibleNurseEarningsDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string", + "nullable": true + }, + "bookingCount": { + "type": "integer", + "format": "int32" + }, + "grossEarningsIrr": { + "type": "string" + }, + "clawbackAppliedIrr": { + "type": "string" + }, + "netAmountIrr": { + "type": "string" + }, + "hasVerifiedPrimaryIban": { + "type": "boolean" + } + } + }, + "ApiResultOfGeneratePayoutBatchResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/GeneratePayoutBatchResult" + } + ] + } + } + } + ] + }, + "GeneratePayoutBatchResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "batch": { + "$ref": "#/components/schemas/PayoutBatchDto" + }, + "payouts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayoutDto" + } + }, + "skipped": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkippedNurseDto" + } + } + } + }, + "PayoutBatchDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "periodStart": { + "type": "string", + "format": "date" + }, + "periodEnd": { + "type": "string", + "format": "date" + }, + "processingDate": { + "type": "string", + "format": "date" + }, + "totalAmount": { + "type": "string" + }, + "payoutCount": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + }, + "initiatedByAdminId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "processedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureNotes": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "PayoutDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string", + "nullable": true + }, + "maskedIban": { + "type": "string" + }, + "grossEarningsIrr": { + "type": "string" + }, + "clawbackAppliedIrr": { + "type": "string" + }, + "netAmountIrr": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "bookingCount": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + }, + "transferReference": { + "type": "string", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + }, + "bookings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayoutBookingLinkDto" + } + } + } + }, + "PayoutBookingLinkDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "sessionId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "payoutAmountIrr": { + "type": "string" + } + } + }, + "SkippedNurseDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string", + "nullable": true + }, + "grossEarningsIrr": { + "type": "string" + }, + "reason": { + "type": "string" + } + } + }, + "GeneratePayoutBatchCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "periodStart": { + "type": "string", + "format": "date" + }, + "periodEnd": { + "type": "string", + "format": "date" + }, + "systemInitiated": { + "type": "boolean" + } + } + }, + "ApiResultOfExecutePayoutBatchResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ExecutePayoutBatchResult" + } + ] + } + } + } + ] + }, + "ExecutePayoutBatchResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "batchId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "paidCount": { + "type": "integer", + "format": "int32" + }, + "failedCount": { + "type": "integer", + "format": "int32" + }, + "totalPaid": { + "type": "string" + } + } + }, + "ApiResultOfPayoutBatchDetailDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PayoutBatchDetailDto" + } + ] + } + } + } + ] + }, + "PayoutBatchDetailDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "batch": { + "$ref": "#/components/schemas/PayoutBatchDto" + }, + "payouts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayoutDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfPagedResultOfPayoutBatchDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfPayoutBatchDto" + } + ] + } + } + } + ] + }, + "PagedResultOfPayoutBatchDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/PayoutBatchDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "MarkPayoutFailedBody": { + "type": "object", + "description": "The mark-failed body (the payout id comes from the route).", + "additionalProperties": false, + "properties": { + "failureReason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfCreateRefundResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CreateRefundResult" + } + ] + } + } + } + ] + }, + "CreateRefundResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "refundId": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "refundChannel": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "platformFeeRefundedIrr": { + "type": "string" + }, + "nursePayoutRefundedIrr": { + "type": "string" + }, + "expectedCustomerRefundEta": { + "type": "string", + "format": "date", + "nullable": true + }, + "clawbackId": { + "type": "integer", + "format": "int64", + "nullable": true + } + } + }, + "CreateRefundCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "ticketId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "refundPercentage": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "platformFeeRefundedIrr": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nursePayoutRefundedIrr": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "reasonCategory": { + "type": "string", + "nullable": true + }, + "reasonNotes": { + "type": "string", + "nullable": true + }, + "adminNotes": { + "type": "string", + "nullable": true + }, + "manualBankReference": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfRefundListItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfRefundListItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfRefundListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/RefundListItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "RefundListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "paymentTransactionId": { + "type": "integer", + "format": "int64" + }, + "amount": { + "type": "string" + }, + "platformFeeRefundedIrr": { + "type": "string" + }, + "nursePayoutRefundedIrr": { + "type": "string" + }, + "refundChannel": { + "type": "string" + }, + "status": { + "type": "string" + }, + "refundPercentage": { + "type": "number", + "format": "decimal" + }, + "reasonCategory": { + "type": "string", + "nullable": true + }, + "cancellationPolicyCode": { + "type": "string", + "nullable": true + }, + "refundPercentageApplied": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "expectedCustomerRefundEta": { + "type": "string", + "format": "date", + "nullable": true + }, + "gatewayRefundReference": { + "type": "string", + "nullable": true + }, + "externalRevertReference": { + "type": "string", + "nullable": true + }, + "processedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfRefundSettlementResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/RefundSettlementResult" + } + ] + } + } + } + ] + }, + "RefundSettlementResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "refundId": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "completedAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "MarkRefundFailedBody": { + "type": "object", + "description": "The mark-failed body (the id comes from the route).", + "additionalProperties": false, + "properties": { + "reason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfModerationQueueItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfModerationQueueItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfModerationQueueItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ModerationQueueItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ModerationQueueItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "nurseProfileId": { + "type": "integer", + "format": "int64" + }, + "customerProfileId": { + "type": "integer", + "format": "int64" + }, + "rating": { + "type": "integer", + "format": "int32" + }, + "body": { + "type": "string", + "nullable": true + }, + "moderationStatus": { + "type": "string" + }, + "moderationReason": { + "type": "string", + "nullable": true + }, + "lowRatingAlertId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "tagCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfSearchIndexRebuildResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/SearchIndexRebuildResult" + } + ] + } + } + } + ] + }, + "SearchIndexRebuildResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "nursesProcessed": { + "type": "integer", + "format": "int32" + }, + "rowsWritten": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfPagedResultOfTicketSummaryDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfTicketSummaryDto" + } + ] + } + } + } + ] + }, + "PagedResultOfTicketSummaryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/TicketSummaryDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "TicketSummaryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "referenceCode": { + "type": "string" + }, + "subject": { + "type": "string", + "nullable": true + }, + "status": { + "type": "string" + }, + "category": { + "type": "string" + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "refundId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "lastMessageAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "unreadCount": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfTicketThreadDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/TicketThreadDto" + } + ] + } + } + } + ] + }, + "TicketThreadDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "referenceCode": { + "type": "string" + }, + "subject": { + "type": "string", + "nullable": true + }, + "status": { + "type": "string" + }, + "category": { + "type": "string" + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "refundId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "openedById": { + "type": "integer", + "format": "int32" + }, + "closedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "participants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TicketParticipantDto" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TicketMessageDto" + } + } + } + }, + "TicketParticipantDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "userId": { + "type": "integer", + "format": "int32" + }, + "roleOnTicket": { + "type": "string", + "nullable": true + } + } + }, + "TicketMessageDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "senderId": { + "type": "integer", + "format": "int32" + }, + "body": { + "type": "string" + }, + "isInternal": { + "type": "boolean" + }, + "sentAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfPagedResultOfAdminPendingStepDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfAdminPendingStepDto" + } + ] + } + } + } + ] + }, + "PagedResultOfAdminPendingStepDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/AdminPendingStepDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "AdminPendingStepDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseVerificationId": { + "type": "integer", + "format": "int64" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string" + }, + "stepId": { + "type": "integer", + "format": "int64" + }, + "stepCode": { + "type": "string" + }, + "stepDisplayName": { + "type": "string" + }, + "status": { + "type": "string" + }, + "submittedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "documents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerificationDocumentDto" + } + } + } + }, + "VerificationDocumentDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "contentType": { + "type": "string" + }, + "fileSizeBytes": { + "type": "integer", + "format": "int64" + }, + "originalFileName": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string" + } + } + }, + "ApiResultOfAdminVerificationDetailDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/AdminVerificationDetailDto" + } + ] + } + } + } + ] + }, + "AdminVerificationDetailDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseVerificationId": { + "type": "integer", + "format": "int64" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "identityName": { + "type": "string" + }, + "status": { + "type": "string" + }, + "steps": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AdminStepDetailDto" + } + }, + "credentials": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NurseCredentialDto" + } + } + } + }, + "AdminStepDetailDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "stepId": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "status": { + "type": "string" + }, + "isAutomated": { + "type": "boolean" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + }, + "documents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerificationDocumentDto" + } + } + } + }, + "NurseCredentialDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "credentialType": { + "type": "string" + }, + "holderNameSnapshot": { + "type": "string" + }, + "issuingAuthority": { + "type": "string" + }, + "issuedAt": { + "type": "string", + "format": "date", + "nullable": true + }, + "expiresAt": { + "type": "string", + "format": "date", + "nullable": true + }, + "verificationMethod": { + "type": "string" + } + } + }, + "ApiResultOfReviewStepResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ReviewStepResult" + } + ] + } + } + } + ] + }, + "ReviewStepResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "stepId": { + "type": "integer", + "format": "int64" + }, + "stepStatus": { + "type": "string" + }, + "credentialId": { + "type": "integer", + "format": "int64", + "nullable": true + } + } + }, + "AdminReviewStepCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "stepId": { + "type": "integer", + "format": "int64" + }, + "approve": { + "type": "boolean" + }, + "rejectionReason": { + "type": "string", + "nullable": true + }, + "credentialNumber": { + "type": "string", + "nullable": true + }, + "holderName": { + "type": "string", + "nullable": true + }, + "issuingAuthority": { + "type": "string", + "nullable": true + }, + "issuedAt": { + "type": "string", + "format": "date", + "nullable": true + }, + "expiresAt": { + "type": "string", + "format": "date", + "nullable": true + }, + "verificationSource": { + "type": "string", + "nullable": true + } + } + }, + "AdminSuspendVerificationCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseVerificationId": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfScanExpiringResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ScanExpiringResult" + } + ] + } + } + } + ] + }, + "ScanExpiringResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "scannedSteps": { + "type": "integer", + "format": "int32" + }, + "revertedNurses": { + "type": "integer", + "format": "int32" + } + } + }, + "ScanExpiringCredentialsCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfIReadOnlyListOfVerificationStepTypeDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VerificationStepTypeDto" + } + } + } + } + ] + }, + "VerificationStepTypeDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "isRequired": { + "type": "boolean" + }, + "isAutomated": { + "type": "boolean" + }, + "automationProvider": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfVerificationStepTypeDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/VerificationStepTypeDto" + } + ] + } + } + } + ] + }, + "AdminUpsertStepTypeCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "code": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "isRequired": { + "type": "boolean" + }, + "isAutomated": { + "type": "boolean" + }, + "automationProvider": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfPagedResultOfAuditLogDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfAuditLogDto" + } + ] + } + } + } + ] + }, + "PagedResultOfAuditLogDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/AuditLogDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "AuditLogDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "entityType": { + "type": "string" + }, + "entityId": { + "type": "string" + }, + "action": { + "type": "string" + }, + "changedFieldsJson": { + "type": "string", + "nullable": true + }, + "actorUserId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurredAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfRequestOtpResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/RequestOtpResult" + } + ] + } + } + } + ] + }, + "RequestOtpResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "otpSent": { + "type": "boolean" + }, + "resendAvailableInSeconds": { + "type": "integer", + "format": "int32" + }, + "codeLength": { + "type": "integer", + "format": "int32" + }, + "expiresInSeconds": { + "type": "integer", + "format": "int32" + } + } + }, + "RequestOtpCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "phone": { + "type": "string" + } + } + }, + "ApiResultOfAuthTokensResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/AuthTokensResult" + } + ] + } + } + } + ] + }, + "AuthTokensResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "accessToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "accessExpiresAt": { + "type": "string", + "format": "date-time" + }, + "refreshExpiresAt": { + "type": "string", + "format": "date-time" + }, + "isNewUser": { + "type": "boolean" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "VerifyOtpCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "phone": { + "type": "string" + }, + "code": { + "type": "string" + }, + "deviceInfo": { + "type": "string", + "nullable": true + } + } + }, + "RefreshTokenCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "refreshToken": { + "type": "string" + }, + "deviceInfo": { + "type": "string", + "nullable": true + } + } + }, + "LogoutCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "refreshToken": { + "type": "string", + "nullable": true + }, + "everywhere": { + "type": "boolean" + } + } + }, + "ApiResultOfBookingRequestDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/BookingRequestDto" + } + ] + } + } + } + ] + }, + "BookingRequestDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string" + }, + "nurseRating": { + "type": "number", + "format": "decimal" + }, + "nurseTotalReviews": { + "type": "integer", + "format": "int32" + }, + "patientId": { + "type": "integer", + "format": "int64" + }, + "patientName": { + "type": "string" + }, + "variantId": { + "type": "integer", + "format": "int64" + }, + "variantLabel": { + "type": "string" + }, + "variantPriceUnit": { + "type": "string" + }, + "customerAddressId": { + "type": "integer", + "format": "int64" + }, + "addressTitle": { + "type": "string" + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "cityNameFa": { + "type": "string" + }, + "cityNameEn": { + "type": "string" + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "districtNameFa": { + "type": "string", + "nullable": true + }, + "districtNameEn": { + "type": "string", + "nullable": true + }, + "addressLine": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "recipientName": { + "type": "string", + "nullable": true + }, + "recipientPhone": { + "type": "string", + "nullable": true + }, + "requiredCaregiverGender": { + "type": "string", + "nullable": true + }, + "requestedDate": { + "type": "string", + "format": "date" + }, + "requestedTimeStart": { + "type": "string", + "format": "time" + }, + "requestedTimeEnd": { + "type": "string", + "format": "time" + }, + "customerNotes": { + "type": "string", + "nullable": true + }, + "nurseResponseDeadlineAt": { + "type": "string", + "format": "date-time" + }, + "paymentDeadlineAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "nurseRejectionReason": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "variantPrice": { + "type": "string" + }, + "nurseAvatarUrl": { + "type": "string", + "nullable": true + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + } + } + }, + "CreateBookingRequestCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseId": { + "type": "integer", + "format": "int64" + }, + "variantId": { + "type": "integer", + "format": "int64" + }, + "patientId": { + "type": "integer", + "format": "int64" + }, + "customerAddressId": { + "type": "integer", + "format": "int64" + }, + "requestedDate": { + "type": "string", + "format": "date" + }, + "requestedTimeStart": { + "type": "string", + "format": "time" + }, + "requestedTimeEnd": { + "type": "string", + "format": "time" + }, + "requiredCaregiverGender": { + "type": "string" + }, + "customerNotes": { + "type": "string", + "nullable": true + } + } + }, + "RejectBookingRequestCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "reason": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfPagedResultOfBookingRequestListItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfBookingRequestListItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfBookingRequestListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/BookingRequestListItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "BookingRequestListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "counterpartyName": { + "type": "string" + }, + "nurseRating": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "requiredCaregiverGender": { + "type": "string", + "nullable": true + }, + "requestedDate": { + "type": "string", + "format": "date" + }, + "requestedTimeStart": { + "type": "string", + "format": "time" + }, + "requestedTimeEnd": { + "type": "string", + "format": "time" + }, + "nurseResponseDeadlineAt": { + "type": "string", + "format": "date-time" + }, + "paymentDeadlineAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "customerNotes": { + "type": "string", + "nullable": true + }, + "variantLabel": { + "type": "string" + }, + "patientAge": { + "type": "integer", + "format": "int32", + "nullable": true + } + } + }, + "ApiResultOfCheckoutSummaryDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutSummaryDto" + } + ] + } + } + } + ] + }, + "CheckoutSummaryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingRequestId": { + "type": "integer", + "format": "int64" + }, + "requestStatus": { + "type": "string" + }, + "nurseName": { + "type": "string" + }, + "patientName": { + "type": "string" + }, + "variantLabel": { + "type": "string" + }, + "variantPriceUnit": { + "type": "string" + }, + "sessionCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "requestedDate": { + "type": "string", + "format": "date" + }, + "requestedTimeStart": { + "type": "string", + "format": "time" + }, + "requestedTimeEnd": { + "type": "string", + "format": "time" + }, + "paymentDeadlineAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "serviceCostIrr": { + "type": "string" + }, + "commissionIrr": { + "type": "string" + }, + "vatIrr": { + "type": "string" + }, + "vatRate": { + "type": "number", + "format": "decimal" + }, + "totalIrr": { + "type": "string" + }, + "grossPriceIrr": { + "type": "string" + }, + "balinyaarCommissionIrr": { + "type": "string" + }, + "nursePayoutAmount": { + "type": "string" + } + } + }, + "ApiResultOfSubmitReviewResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/SubmitReviewResult" + } + ] + } + } + } + ] + }, + "SubmitReviewResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "moderationStatus": { + "type": "string" + }, + "lowRatingAlertRaised": { + "type": "boolean" + } + } + }, + "SubmitReviewBody": { + "type": "object", + "description": "The review body (the booking id comes from the route).", + "additionalProperties": false, + "properties": { + "rating": { + "type": "integer", + "format": "int32" + }, + "body": { + "type": "string", + "nullable": true + }, + "tagCodes": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + } + }, + "ApiResultOfReviewEligibilityDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ReviewEligibilityDto" + } + ] + } + } + } + ] + }, + "ReviewEligibilityDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "canReview": { + "type": "boolean" + }, + "reason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfMyReviewDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/MyReviewDto" + } + ] + } + } + } + ] + }, + "MyReviewDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "moderationStatus": { + "type": "string" + }, + "rating": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "body": { + "type": "string", + "nullable": true + }, + "tagCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "createdAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "ApiResultOfBookingDetailDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/BookingDetailDto" + } + ] + } + } + } + ] + }, + "BookingDetailDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bookingRequestId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string" + }, + "patientId": { + "type": "integer", + "format": "int64" + }, + "patientName": { + "type": "string" + }, + "variantId": { + "type": "integer", + "format": "int64" + }, + "variantSnapshotJson": { + "type": "string" + }, + "customerAddressId": { + "type": "integer", + "format": "int64" + }, + "addressSnapshotJson": { + "type": "string", + "nullable": true + }, + "grossPriceIrr": { + "type": "string" + }, + "balinyaarCommissionIrr": { + "type": "string" + }, + "platformFeeRate": { + "type": "number", + "format": "decimal" + }, + "nursePayoutAmount": { + "type": "string" + }, + "pspFeeAmount": { + "type": "string", + "nullable": true + }, + "sessionCount": { + "type": "integer" + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "scheduledTimeStart": { + "type": "string", + "format": "time" + }, + "scheduledTimeEnd": { + "type": "string", + "format": "time" + }, + "confirmedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "completedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelledAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelledBy": { + "type": "string", + "nullable": true + }, + "cancellationReason": { + "type": "string", + "nullable": true + }, + "cancellationPolicyCode": { + "type": "string", + "nullable": true + }, + "cancellationRefundPercentage": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "refundableAmountIrr": { + "type": "string", + "nullable": true + }, + "disputeWindowEndsAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "sessions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BookingSessionSummaryDto" + } + } + } + }, + "BookingSessionSummaryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "sessionIndex": { + "type": "integer", + "format": "int32" + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "scheduledTimeStart": { + "type": "string", + "format": "time" + }, + "scheduledTimeEnd": { + "type": "string", + "format": "time" + }, + "status": { + "type": "string" + }, + "visitPayoutAmount": { + "type": "string" + }, + "payoutEligibleAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "evvStatus": { + "type": "string" + }, + "checkInAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "checkOutAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "checkInAddressMatch": { + "type": "boolean", + "nullable": true + } + } + }, + "ConvertRequestToBookingCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingRequestId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfPagedResultOfBookingListItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfBookingListItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfBookingListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/BookingListItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "BookingListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "counterpartyName": { + "type": "string" + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "sessionCount": { + "type": "integer" + }, + "amountIrr": { + "type": "string" + }, + "disputeWindowEndsAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "TransitionBookingStatusCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "targetStatus": { + "type": "string" + }, + "reason": { + "type": "string", + "nullable": true + }, + "bookingId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfCancellationResultDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CancellationResultDto" + } + ] + } + } + } + ] + }, + "CancellationResultDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "sessionId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "bookingStatus": { + "type": "string" + }, + "policyCode": { + "type": "string" + }, + "refundPercentage": { + "type": "number", + "format": "decimal" + }, + "refundableAmountIrr": { + "type": "string" + } + } + }, + "CancelBookingCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "reason": { + "type": "string", + "nullable": true + }, + "bookingId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfRefundStatusDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/RefundStatusDto" + } + ] + } + } + } + ] + }, + "RefundStatusDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "refundChannel": { + "type": "string" + }, + "amount": { + "type": "string" + }, + "expectedCustomerRefundEta": { + "type": "string", + "format": "date", + "nullable": true + }, + "reference": { + "type": "string", + "nullable": true + }, + "platformFeeRefundedIrr": { + "type": "string" + }, + "nursePayoutRefundedIrr": { + "type": "string" + }, + "refundPercentageApplied": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "cancellationPolicyCode": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "completedAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "CancelBookingAndRefundCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "reasonCategory": { + "type": "string", + "nullable": true + }, + "reasonNotes": { + "type": "string", + "nullable": true + }, + "sessionIds": { + "type": "array", + "nullable": true, + "items": { + "type": "integer", + "format": "int64" + } + }, + "bookingId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfCancellationPolicyPreviewDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CancellationPolicyPreviewDto" + } + ] + } + } + } + ] + }, + "CancellationPolicyPreviewDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "cancellable": { + "type": "boolean" + }, + "cancellationPolicyCode": { + "type": "string", + "nullable": true + }, + "refundPercentageApplied": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "feePercentage": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "refundAmountIrr": { + "type": "string" + }, + "feeAmountIrr": { + "type": "string" + }, + "refundableAmountIrr": { + "type": "string" + }, + "platformFeeRefundedIrr": { + "type": "string" + }, + "nursePayoutRefundedIrr": { + "type": "string" + }, + "appliesTo": { + "type": "string" + }, + "leadTimeLabel": { + "type": "string" + }, + "refundChannel": { + "type": "string" + }, + "expectedCustomerRefundEta": { + "type": "string", + "format": "date", + "nullable": true + }, + "sessions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CancellationPreviewSessionDto" + } + } + } + }, + "CancellationPreviewSessionDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingSessionId": { + "type": "integer", + "format": "int64" + }, + "sessionIndex": { + "type": "integer", + "format": "int32" + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "refundable": { + "type": "boolean" + }, + "reasonCode": { + "type": "string" + } + } + }, + "ApiResultOfCareInstructionsDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CareInstructionsDto" + } + ] + } + } + } + ] + }, + "CareInstructionsDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "currentConditions": { + "type": "string", + "nullable": true + }, + "medications": { + "type": "string", + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + }, + "specialInstructions": { + "type": "string", + "nullable": true + }, + "emergencyContactName": { + "type": "string", + "nullable": true + }, + "emergencyContactPhone": { + "type": "string", + "nullable": true + } + } + }, + "SubmitCareInstructionsCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "currentConditions": { + "type": "string", + "nullable": true + }, + "medications": { + "type": "string", + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + }, + "specialInstructions": { + "type": "string", + "nullable": true + }, + "emergencyContactName": { + "type": "string", + "nullable": true + }, + "emergencyContactPhone": { + "type": "string", + "nullable": true + }, + "bookingId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfVisitVerificationDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/VisitVerificationDto" + } + ] + } + } + } + ] + }, + "VisitVerificationDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bookingSessionId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "checkInAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "checkInLat": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "checkInLng": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "checkOutAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "checkOutLat": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "checkOutLng": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "checkInAddressMatch": { + "type": "boolean", + "nullable": true + }, + "checkInDistanceMeters": { + "type": "number", + "format": "decimal", + "nullable": true + } + } + }, + "CheckInVisitCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "latitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "sessionId": { + "type": "integer", + "format": "int64" + } + } + }, + "CheckOutVisitCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "latitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "sessionId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfPagedResultOfBookingSessionListItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfBookingSessionListItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfBookingSessionListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/BookingSessionListItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "BookingSessionListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "sessionId": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64" + }, + "sessionIndex": { + "type": "integer", + "format": "int32" + }, + "patientName": { + "type": "string" + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "scheduledTimeStart": { + "type": "string", + "format": "time" + }, + "scheduledTimeEnd": { + "type": "string", + "format": "time" + }, + "status": { + "type": "string" + }, + "evvStatus": { + "type": "string" + } + } + }, + "CancelSessionCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "reason": { + "type": "string", + "nullable": true + }, + "sessionId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfPagedResultOfServiceCategoryDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfServiceCategoryDto" + } + ] + } + } + } + ] + }, + "PagedResultOfServiceCategoryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ServiceCategoryDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfIReadOnlyListOfOptionGroupDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/OptionGroupDto" + } + } + } + } + ] + }, + "ApiResultOfCenterDashboardDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CenterDashboardDto" + } + ] + } + } + } + ] + }, + "CenterDashboardDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "centerId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "isMerchantOfRecord": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + }, + "settlementIbanMasked": { + "type": "string", + "nullable": true + }, + "sponsoredNurseCount": { + "type": "integer", + "format": "int32" + }, + "sponsoredBookingCount": { + "type": "integer", + "format": "int32" + }, + "invoiceCount": { + "type": "integer", + "format": "int32" + }, + "sponsoredNurses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SponsoredNurseDto" + } + } + } + }, + "SponsoredNurseDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseProfileId": { + "type": "integer", + "format": "int64" + }, + "userId": { + "type": "integer", + "format": "int32" + }, + "isVerified": { + "type": "boolean" + }, + "averageRating": { + "type": "number", + "format": "decimal" + }, + "totalCompletedBookings": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfBnplEligibilityDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/BnplEligibilityDto" + } + ] + } + } + } + ] + }, + "BnplEligibilityDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "eligibilityStatus": { + "type": "string" + }, + "isEligible": { + "type": "boolean" + }, + "installmentCount": { + "type": "integer", + "format": "int32" + }, + "planSummary": { + "type": "string" + }, + "creditCeilingIrr": { + "type": "string", + "nullable": true + } + } + }, + "CheckBnplEligibilityQuery": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingRequestId": { + "type": "integer", + "format": "int64" + }, + "providerCode": { + "type": "string", + "nullable": true + }, + "nationalId": { + "type": "string", + "nullable": true + }, + "mobile": { + "type": "string", + "nullable": true + }, + "consent": { + "type": "boolean", + "nullable": true + } + } + }, + "ApiResultOfInitiateBnplResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/InitiateBnplResult" + } + ] + } + } + } + ] + }, + "InitiateBnplResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "bnplTransactionId": { + "type": "integer", + "format": "int64" + }, + "paymentTransactionId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "externalPaymentToken": { + "type": "string" + }, + "redirectUrl": { + "type": "string" + } + } + }, + "InitiateBnplBody": { + "type": "object", + "description": "The initiate body (the idempotency key comes from the Idempotency-Key header).", + "additionalProperties": false, + "properties": { + "bookingRequestId": { + "type": "integer", + "format": "int64" + }, + "providerCode": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfCustomerAddressDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CustomerAddressDto" + } + ] + } + } + } + ] + }, + "CustomerAddressDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "title": { + "type": "string", + "nullable": true + }, + "provinceId": { + "type": "integer", + "format": "int64" + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "cityNameFa": { + "type": "string", + "nullable": true + }, + "cityNameEn": { + "type": "string", + "nullable": true + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "districtNameFa": { + "type": "string", + "nullable": true + }, + "districtNameEn": { + "type": "string", + "nullable": true + }, + "addressLine": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "latitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "recipientName": { + "type": "string", + "nullable": true + }, + "recipientPhone": { + "type": "string", + "nullable": true + } + } + }, + "CreateAddressCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "addressLine": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "recipientName": { + "type": "string", + "nullable": true + }, + "recipientPhone": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "latitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "decimal", + "nullable": true + } + } + }, + "UpdateAddressCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "title": { + "type": "string", + "nullable": true + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "addressLine": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "recipientName": { + "type": "string", + "nullable": true + }, + "recipientPhone": { + "type": "string", + "nullable": true + }, + "latitude": { + "type": "number", + "format": "decimal", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "decimal", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfCustomerAddressDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfCustomerAddressDto" + } + ] + } + } + } + ] + }, + "PagedResultOfCustomerAddressDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/CustomerAddressDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfCustomerProfileDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CustomerProfileDto" + } + ] + } + } + } + ] + }, + "CustomerProfileDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "defaultEmergencyContactName": { + "type": "string", + "nullable": true + }, + "defaultEmergencyContactPhone": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + }, + "preferredLanguage": { + "type": "string", + "nullable": true + } + } + }, + "UpsertCustomerProfileCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "defaultEmergencyContactName": { + "type": "string", + "nullable": true + }, + "defaultEmergencyContactPhone": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "preferredLanguage": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfAvatarUploadResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/AvatarUploadResult" + } + ] + } + } + } + ] + }, + "AvatarUploadResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "url": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfDevLastOtpResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/DevLastOtpResult" + } + ] + } + } + } + ] + }, + "DevLastOtpResult": { + "type": "object", + "description": "The most recent OTP captured for a phone (Development only).", + "additionalProperties": false, + "properties": { + "phone": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfIReadOnlyListOfProvinceDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProvinceDto" + } + } + } + } + ] + }, + "ApiResultOfIReadOnlyListOfCityDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/CityDto" + } + } + } + } + ] + }, + "ApiResultOfIReadOnlyListOfDistrictDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/DistrictDto" + } + } + } + } + ] + }, + "ApiResultOfIReadOnlyListOfProvinceTreeDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ProvinceTreeDto" + } + } + } + } + ] + }, + "ProvinceTreeDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "cities": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/CityTreeDto" + } + } + } + }, + "CityTreeDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "nameEn": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "districts": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/DistrictDto" + } + } + } + }, + "ApiResultOfPagedResultOfHolidayDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfHolidayDto" + } + ] + } + } + } + ] + }, + "PagedResultOfHolidayDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/HolidayDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "HolidayDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "holidayDate": { + "type": "string", + "format": "date" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + }, + "isBankClosed": { + "type": "boolean" + } + } + }, + "UpsertHolidayCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "holidayDate": { + "type": "string", + "format": "date" + }, + "nameFa": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + }, + "isBankClosed": { + "type": "boolean" + } + } + }, + "DeleteHolidayCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "holidayDate": { + "type": "string", + "format": "date" + } + } + }, + "ApiResultOfCenterForBookingDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CenterForBookingDto" + } + ] + } + } + } + ] + }, + "CenterForBookingDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "issuingEntityType": { + "type": "string" + }, + "partnerCenterId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "partnerCenterName": { + "type": "string", + "nullable": true + }, + "isMerchantOfRecord": { + "type": "boolean" + } + } + }, + "ApiResultOfMeResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/MeResult" + } + ] + } + } + } + ] + }, + "MeResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "phone": { + "type": "string" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "hasCustomerProfile": { + "type": "boolean" + }, + "hasNurseProfile": { + "type": "boolean" + }, + "nurseVerificationStatus": { + "type": "string" + } + } + }, + "SelectRoleCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "role": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfNotificationDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfNotificationDto" + } + ] + } + } + } + ] + }, + "PagedResultOfNotificationDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/NotificationDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "NotificationDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "type": { + "type": "string" + }, + "title": { + "type": "string" + }, + "body": { + "type": "string", + "nullable": true + }, + "dataJson": { + "type": "string", + "nullable": true + }, + "isRead": { + "type": "boolean" + }, + "readAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfUnreadCountResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/UnreadCountResult" + } + ] + } + } + } + ] + }, + "UnreadCountResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "count": { + "type": "integer", + "format": "int32" + } + } + }, + "MarkNotificationReadCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "notificationId": { + "type": "integer", + "format": "int64" + } + } + }, + "ApiResultOfNurseBankAccountDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NurseBankAccountDto" + } + ] + } + } + } + ] + }, + "NurseBankAccountDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bankName": { + "type": "string", + "nullable": true + }, + "ibanMasked": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isVerified": { + "type": "boolean" + }, + "matchedNationalId": { + "type": "boolean", + "nullable": true + } + } + }, + "AddNurseBankAccountCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "bankName": { + "type": "string", + "nullable": true + }, + "accountHolderName": { + "type": "string", + "nullable": true + }, + "iban": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfIReadOnlyListOfNurseBankAccountDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/NurseBankAccountDto" + } + } + } + } + ] + }, + "ApiResultOfNursePayableBalanceDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NursePayableBalanceDto" + } + ] + } + } + } + ] + }, + "NursePayableBalanceDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseId": { + "type": "integer", + "format": "int64" + }, + "balanceIrr": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfNursePayoutHistoryDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfNursePayoutHistoryDto" + } + ] + } + } + } + ] + }, + "PagedResultOfNursePayoutHistoryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/NursePayoutHistoryDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "NursePayoutHistoryDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "batchId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "grossEarningsIrr": { + "type": "string" + }, + "clawbackAppliedIrr": { + "type": "string" + }, + "netAmountIrr": { + "type": "string" + }, + "maskedIban": { + "type": "string" + }, + "transferReference": { + "type": "string", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "periodStart": { + "type": "string", + "format": "date" + }, + "periodEnd": { + "type": "string", + "format": "date" + }, + "failureReason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfNurseEarningsBalanceDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NurseEarningsBalanceDto" + } + ] + } + } + } + ] + }, + "NurseEarningsBalanceDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "pendingTotalIrr": { + "type": "string" + }, + "eligibleTotalIrr": { + "type": "string" + }, + "paidTotalIrr": { + "type": "string" + }, + "clawbackOutstandingIrr": { + "type": "string" + }, + "netPayableBalanceIrr": { + "type": "string" + } + } + }, + "ApiResultOfPagedResultOfNurseEarningsItemDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfNurseEarningsItemDto" + } + ] + } + } + } + ] + }, + "PagedResultOfNurseEarningsItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/NurseEarningsItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "NurseEarningsItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "patientName": { + "type": "string", + "nullable": true + }, + "scheduledDate": { + "type": "string", + "format": "date" + }, + "grossPriceIrr": { + "type": "string" + }, + "balinyaarCommissionIrr": { + "type": "string" + }, + "nursePayoutAmount": { + "type": "string" + }, + "state": { + "type": "string" + }, + "disputeWindowEndsAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "payoutEligibleAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "transferReference": { + "type": "string", + "nullable": true + }, + "nursePayoutId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "batchId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "clawbackAppliedIrr": { + "type": "string", + "nullable": true + }, + "netAmountIrr": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfNursePayoutDetailDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NursePayoutDetailDto" + } + ] + } + } + } + ] + }, + "NursePayoutDetailDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "batchId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "grossEarningsIrr": { + "type": "string" + }, + "clawbackAppliedIrr": { + "type": "string" + }, + "netAmountIrr": { + "type": "string" + }, + "amountIrr": { + "type": "string" + }, + "maskedIban": { + "type": "string" + }, + "transferReference": { + "type": "string", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + }, + "batch": { + "$ref": "#/components/schemas/PayoutBatchDto" + }, + "bookings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayoutBookingLinkDto" + } + } + } + }, + "ApiResultOfNurseProfileDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NurseProfileDto" + } + ] + } + } + } + ] + }, + "NurseProfileDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "bio": { + "type": "string", + "nullable": true + }, + "yearsOfExperience": { + "type": "integer", + "format": "int32" + }, + "educationLevel": { + "type": "string", + "nullable": true + }, + "educationField": { + "type": "string", + "nullable": true + }, + "specializationsJson": { + "type": "string", + "nullable": true + }, + "isVerified": { + "type": "boolean" + }, + "isAcceptingBookings": { + "type": "boolean" + }, + "averageRating": { + "type": "number", + "format": "decimal" + }, + "totalReviews": { + "type": "integer", + "format": "int32" + }, + "totalCompletedBookings": { + "type": "integer", + "format": "int32" + }, + "avatarUrl": { + "type": "string", + "nullable": true + } + } + }, + "UpsertNurseProfileCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "bio": { + "type": "string", + "nullable": true + }, + "yearsOfExperience": { + "type": "integer", + "format": "int32" + }, + "educationLevel": { + "type": "string", + "nullable": true + }, + "educationField": { + "type": "string", + "nullable": true + }, + "specializationsJson": { + "type": "string", + "nullable": true + } + } + }, + "SetNurseAcceptingBookingsCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "accepting": { + "type": "boolean" + } + } + }, + "ApiResultOfTrustBadgeDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/TrustBadgeDto" + } + ] + } + } + } + ] + }, + "TrustBadgeDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseId": { + "type": "integer", + "format": "int64" + }, + "isVerified": { + "type": "boolean" + }, + "approvedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "credentialTypes": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ApiResultOfNursePublicProfileDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NursePublicProfileDto" + } + ] + } + } + } + ] + }, + "NursePublicProfileDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "nurseId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string" + }, + "avatarUrl": { + "type": "string", + "nullable": true + }, + "bio": { + "type": "string" + }, + "yearsExperience": { + "type": "integer", + "format": "int32" + }, + "averageRating": { + "type": "number", + "format": "decimal" + }, + "totalReviews": { + "type": "integer", + "format": "int32" + }, + "totalCompletedBookings": { + "type": "integer", + "format": "int32" + }, + "isVerified": { + "type": "boolean" + }, + "inoMembership": { + "type": "boolean" + }, + "attributeChips": { + "type": "array", + "items": { + "type": "string" + } + }, + "services": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NursePublicServiceDto" + } + }, + "latestReview": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NursePublicLatestReviewDto" + } + ] + } + } + }, + "NursePublicServiceDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "variantId": { + "type": "integer", + "format": "int64" + }, + "displayName": { + "type": "string" + }, + "priceIrr": { + "type": "string" + }, + "priceUnit": { + "type": "string" + }, + "sessionCount": { + "type": "integer", + "format": "int32", + "nullable": true + } + } + }, + "NursePublicLatestReviewDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "rating": { + "type": "integer", + "format": "int32" + }, + "body": { + "type": "string", + "nullable": true + }, + "authorMasked": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfNurseReviewsResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NurseReviewsResult" + } + ] + } + } + } + ] + }, + "NurseReviewsResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "aggregate": { + "$ref": "#/components/schemas/NurseReviewAggregateDto" + }, + "reviews": { + "$ref": "#/components/schemas/PagedResultOfReviewListItemDto" + } + } + }, + "NurseReviewAggregateDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "averageRating": { + "type": "number", + "format": "decimal" + }, + "publishedCount": { + "type": "integer", + "format": "int32" + } + } + }, + "PagedResultOfReviewListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ReviewListItemDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ReviewListItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "rating": { + "type": "integer", + "format": "int32" + }, + "body": { + "type": "string", + "nullable": true + }, + "tagCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfNurseTagAggregatesResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NurseTagAggregatesResult" + } + ] + } + } + } + ] + }, + "NurseTagAggregatesResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "publishedReviewCount": { + "type": "integer", + "format": "int32" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagAggregateDto" + } + } + } + }, + "TagAggregateDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "labelFa": { + "type": "string" + }, + "labelEn": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int32" + }, + "percentage": { + "type": "number", + "format": "decimal" + } + } + }, + "ApiResultOfNurseServiceAreaDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/NurseServiceAreaDto" + } + ] + } + } + } + ] + }, + "NurseServiceAreaDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "cityNameFa": { + "type": "string", + "nullable": true + }, + "cityNameEn": { + "type": "string", + "nullable": true + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "districtNameFa": { + "type": "string", + "nullable": true + }, + "districtNameEn": { + "type": "string", + "nullable": true + }, + "isWholeCity": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + } + }, + "AddNurseServiceAreaCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "cityId": { + "type": "integer", + "format": "int64" + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfNurseServiceAreaDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfNurseServiceAreaDto" + } + ] + } + } + } + ] + }, + "PagedResultOfNurseServiceAreaDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/NurseServiceAreaDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfVariantDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/VariantDto" + } + ] + } + } + } + ] + }, + "VariantDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "serviceCategoryId": { + "type": "integer", + "format": "int64" + }, + "categoryNameFa": { + "type": "string", + "nullable": true + }, + "categoryNameEn": { + "type": "string", + "nullable": true + }, + "price": { + "type": "string", + "nullable": true + }, + "priceUnit": { + "type": "string", + "nullable": true + }, + "sessionCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "displayName": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "options": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariantOptionDto" + } + } + } + }, + "VariantOptionDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "optionGroupId": { + "type": "integer", + "format": "int64" + }, + "groupNameFa": { + "type": "string", + "nullable": true + }, + "groupNameEn": { + "type": "string", + "nullable": true + }, + "optionValueId": { + "type": "integer", + "format": "int64" + }, + "valueNameFa": { + "type": "string", + "nullable": true + }, + "valueNameEn": { + "type": "string", + "nullable": true + } + } + }, + "CreateVariantCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "serviceCategoryId": { + "type": "integer", + "format": "int64" + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariantOptionSelection" + } + }, + "price": { + "type": "string" + }, + "priceUnit": { + "type": "string" + }, + "sessionCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "displayName": { + "type": "string", + "nullable": true + } + } + }, + "VariantOptionSelection": { + "type": "object", + "additionalProperties": false, + "properties": { + "optionGroupId": { + "type": "integer", + "format": "int64" + }, + "optionValueId": { + "type": "integer", + "format": "int64" + } + } + }, + "UpdateVariantCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "price": { + "type": "string" + }, + "priceUnit": { + "type": "string" + }, + "sessionCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "displayName": { + "type": "string", + "nullable": true + } + } + }, + "SetVariantActiveCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "isActive": { + "type": "boolean" + } + } + }, + "ApiResultOfPagedResultOfVariantDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfVariantDto" + } + ] + } + } + } + ] + }, + "PagedResultOfVariantDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/VariantDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfVerificationStatusDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/VerificationStatusDto" + } + ] + } + } + } + ] + }, + "VerificationStatusDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "status": { + "type": "string" + }, + "isBookable": { + "type": "boolean" + }, + "blockingSteps": { + "type": "array", + "items": { + "type": "string" + } + }, + "steps": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerificationStepDto" + } + } + } + }, + "VerificationStepDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "status": { + "type": "string" + }, + "isAutomated": { + "type": "boolean" + }, + "isRequired": { + "type": "boolean" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfUploadUrlResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/UploadUrlResult" + } + ] + } + } + } + ] + }, + "UploadUrlResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "objectStorageKey": { + "type": "string" + }, + "uploadUrl": { + "type": "string" + } + } + }, + "RequestDocumentUploadUrlCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "stepId": { + "type": "integer", + "format": "int64" + }, + "contentType": { + "type": "string" + }, + "fileName": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfDocumentConfirmedResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/DocumentConfirmedResult" + } + ] + } + } + } + ] + }, + "DocumentConfirmedResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "documentId": { + "type": "integer", + "format": "int64" + }, + "stepStatus": { + "type": "string" + } + } + }, + "ConfirmDocumentUploadCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "stepId": { + "type": "integer", + "format": "int64" + }, + "objectStorageKey": { + "type": "string" + }, + "integrityHash": { + "type": "string" + }, + "contentType": { + "type": "string" + }, + "fileSizeBytes": { + "type": "integer", + "format": "int64" + }, + "originalFileName": { + "type": "string", + "nullable": true + } + } + }, + "SubmitCredentialDetailsCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "inoNumber": { + "type": "string", + "nullable": true + }, + "specialties": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + }, + "licenseNumber": { + "type": "string", + "nullable": true + }, + "issuingAuthority": { + "type": "string", + "nullable": true + }, + "holderName": { + "type": "string", + "nullable": true + }, + "issuedAt": { + "type": "string", + "format": "date", + "nullable": true + }, + "expiresAt": { + "type": "string", + "format": "date", + "nullable": true + } + } + }, + "ApiResultOfRunStepResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/RunStepResult" + } + ] + } + } + } + ] + }, + "RunStepResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "stepId": { + "type": "integer", + "format": "int64" + }, + "stepStatus": { + "type": "string" + }, + "failureReason": { + "type": "string", + "nullable": true + } + } + }, + "RunIdentityKycCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "nationalId": { + "type": "string" + }, + "livenessPayload": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfWriteCareRecordResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/WriteCareRecordResult" + } + ] + } + } + } + ] + }, + "WriteCareRecordResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "patientId": { + "type": "integer", + "format": "int64" + }, + "recordedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "WriteCareRecordBody": { + "type": "object", + "description": "The care-record body (the patient id comes from the route).", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "body": { + "type": "string", + "nullable": true + }, + "taskResults": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/TaskResultDto" + } + } + } + }, + "TaskResultDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "done": { + "type": "boolean" + } + } + }, + "ApiResultOfPagedResultOfCareRecordDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfCareRecordDto" + } + ] + } + } + } + ] + }, + "PagedResultOfCareRecordDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/CareRecordDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "CareRecordDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "patientId": { + "type": "integer", + "format": "int64" + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nurseProfileId": { + "type": "integer", + "format": "int64" + }, + "nurseName": { + "type": "string", + "nullable": true + }, + "body": { + "type": "string" + }, + "taskResults": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskResultDto" + } + }, + "recordedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfCarePlanDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/CarePlanDto" + } + ] + } + } + } + ] + }, + "CarePlanDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "patientId": { + "type": "integer", + "format": "int64" + }, + "medications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MedicationDto" + } + }, + "routine": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RoutineItemDto" + } + }, + "tasks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CareTaskDto" + } + } + } + }, + "MedicationDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "dosage": { + "type": "string", + "nullable": true + }, + "frequency": { + "type": "string" + }, + "timingNote": { + "type": "string", + "nullable": true + } + } + }, + "RoutineItemDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "label": { + "type": "string" + }, + "timeOfDay": { + "type": "string", + "nullable": true + }, + "note": { + "type": "string", + "nullable": true + } + } + }, + "CareTaskDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "label": { + "type": "string" + }, + "done": { + "type": "boolean" + } + } + }, + "UpsertCarePlanBody": { + "type": "object", + "description": "The family care-plan body (the patient id comes from the route).", + "additionalProperties": false, + "properties": { + "medications": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/MedicationDto" + } + }, + "routine": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/RoutineItemDto" + } + }, + "tasks": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/CareTaskDto" + } + } + } + }, + "ApiResultOfRecordAccessDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/RecordAccessDto" + } + ] + } + } + } + ] + }, + "RecordAccessDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "canView": { + "type": "boolean" + }, + "canEdit": { + "type": "boolean" + }, + "canAppendNote": { + "type": "boolean" + }, + "deniedReason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPatientDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PatientDto" + } + ] + } + } + } + ] + }, + "PatientDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "displayName": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date" + }, + "gender": { + "type": "string", + "nullable": true + }, + "bloodType": { + "type": "string", + "nullable": true + }, + "initialMedicalNotes": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "relation": { + "type": "string", + "nullable": true + }, + "conditions": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + } + }, + "CreatePatientCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "displayName": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date" + }, + "gender": { + "type": "string", + "nullable": true + }, + "bloodType": { + "type": "string", + "nullable": true + }, + "initialMedicalNotes": { + "type": "string", + "nullable": true + }, + "relation": { + "type": "string", + "nullable": true + }, + "conditions": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + } + }, + "ApiResultOfPagedResultOfPatientDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfPatientDto" + } + ] + } + } + } + ] + }, + "PagedResultOfPatientDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/PatientDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "UpdatePatientCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "displayName": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date" + }, + "gender": { + "type": "string", + "nullable": true + }, + "bloodType": { + "type": "string", + "nullable": true + }, + "initialMedicalNotes": { + "type": "string", + "nullable": true + }, + "relation": { + "type": "string", + "nullable": true + }, + "conditions": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + } + }, + "ApiResultOfInitiatePaymentResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/InitiatePaymentResult" + } + ] + } + } + } + ] + }, + "InitiatePaymentResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "transactionId": { + "type": "integer", + "format": "int64" + }, + "redirectUrl": { + "type": "string", + "nullable": true + }, + "gatewayReferenceCode": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPingQueryResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PingQueryResult" + } + ] + } + } + } + ] + }, + "PingQueryResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "service": { + "type": "string", + "nullable": true + }, + "status": { + "type": "string", + "nullable": true + }, + "serverTimeUtc": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfPagedResultOfPlatformConfigDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfPlatformConfigDto" + } + ] + } + } + } + ] + }, + "PagedResultOfPlatformConfigDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/PlatformConfigDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "PlatformConfigDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "dataType": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int32", + "nullable": true + } + } + }, + "UpdatePlatformConfigCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "key": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfConfigChangeDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfConfigChangeDto" + } + ] + } + } + } + ] + }, + "PagedResultOfConfigChangeDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/ConfigChangeDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "ConfigChangeDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "action": { + "type": "string" + }, + "changedFieldsJson": { + "type": "string", + "nullable": true + }, + "actorUserId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurredAt": { + "type": "string", + "format": "date-time" + } + } + }, + "ApiResultOfReviewTagsResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ReviewTagsResult" + } + ] + } + } + } + ] + }, + "ReviewTagsResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "reviewId": { + "type": "integer", + "format": "int64" + }, + "tagCodes": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "AttachReviewTagsBody": { + "type": "object", + "description": "Tag-attach body (the review id comes from the route).", + "additionalProperties": false, + "properties": { + "tagCodes": { + "type": "array", + "nullable": true, + "items": { + "type": "string" + } + } + } + }, + "ApiResultOfModerateReviewResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ModerateReviewResult" + } + ] + } + } + } + ] + }, + "ModerateReviewResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "moderationStatus": { + "type": "string" + }, + "averageRating": { + "type": "number", + "format": "decimal" + }, + "totalReviews": { + "type": "integer", + "format": "int32" + } + } + }, + "ModerateReviewBody": { + "type": "object", + "description": "Moderation body (the review id comes from the route): publish|hide|reject|unpublish.", + "additionalProperties": false, + "properties": { + "action": { + "type": "string", + "nullable": true + }, + "reason": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfNurseSearchResultDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "$ref": "#/components/schemas/PagedResultOfNurseSearchResultDto" + } + } + } + ] + }, + "PagedResultOfNurseSearchResultDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/NurseSearchResultDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "NurseSearchResultDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "variantId": { + "type": "integer", + "format": "int64" + }, + "nurseId": { + "type": "integer", + "format": "int64" + }, + "serviceCategoryId": { + "type": "integer", + "format": "int64" + }, + "price": { + "type": "string", + "nullable": true + }, + "priceUnit": { + "type": "string", + "nullable": true + }, + "nurseGender": { + "type": "string", + "nullable": true + }, + "averageRating": { + "type": "number", + "format": "decimal" + }, + "totalReviews": { + "type": "integer", + "format": "int32" + }, + "totalCompletedBookings": { + "type": "integer", + "format": "int32" + }, + "cityId": { + "type": "integer", + "format": "int64" + }, + "districtId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nurseName": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + }, + "distanceKm": { + "type": "number", + "format": "double", + "nullable": true + } + } + }, + "ApiResultOfPagedResultOfSupportAlertDto": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PagedResultOfSupportAlertDto" + } + ] + } + } + } + ] + }, + "PagedResultOfSupportAlertDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "items": { + "type": "array", + "nullable": true, + "items": { + "$ref": "#/components/schemas/SupportAlertDto" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "SupportAlertDto": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "type": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "status": { + "type": "string" + }, + "entityType": { + "type": "string" + }, + "entityId": { + "type": "string" + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "reviewId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "ownerUserId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "resolutionNote": { + "type": "string", + "nullable": true + }, + "resolvedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "AssignSupportAlertCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "alertId": { + "type": "integer", + "format": "int64" + }, + "ownerUserId": { + "type": "integer", + "format": "int32" + } + } + }, + "ResolveSupportAlertCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "alertId": { + "type": "integer", + "format": "int64" + }, + "note": { + "type": "string", + "nullable": true + } + } + }, + "ApiResultOfOpenTicketResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/OpenTicketResult" + } + ] + } + } + } + ] + }, + "OpenTicketResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "ticketId": { + "type": "integer", + "format": "int64" + }, + "referenceCode": { + "type": "string" + }, + "status": { + "type": "string" + }, + "category": { + "type": "string" + } + } + }, + "OpenTicketCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "category": { + "type": "string" + }, + "subject": { + "type": "string", + "nullable": true + }, + "body": { + "type": "string", + "nullable": true + }, + "bookingId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "refundId": { + "type": "integer", + "format": "int64", + "nullable": true + } + } + }, + "LogEmergencyTicketCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "bookingId": { + "type": "integer", + "format": "int64" + }, + "body": { + "type": "string", + "nullable": true + }, + "raiseAlert": { + "type": "boolean" + } + } + }, + "ApiResultOfPostMessageResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/PostMessageResult" + } + ] + } + } + } + ] + }, + "PostMessageResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "messageId": { + "type": "integer", + "format": "int64" + }, + "ticketId": { + "type": "integer", + "format": "int64" + }, + "sentAt": { + "type": "string", + "format": "date-time" + }, + "clientMessageId": { + "type": "string", + "nullable": true + } + } + }, + "PostMessageCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "ticketId": { + "type": "integer", + "format": "int64" + }, + "body": { + "type": "string" + }, + "isInternal": { + "type": "boolean" + }, + "clientMessageId": { + "type": "string", + "nullable": true + } + } + }, + "AddParticipantCommand": { + "type": "object", + "additionalProperties": false, + "properties": { + "ticketId": { + "type": "integer", + "format": "int64" + }, + "userId": { + "type": "integer", + "format": "int32" + } + } + }, + "ApiResultOfBnplCallbackResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/BnplCallbackResult" + } + ] + } + } + } + ] + }, + "BnplCallbackResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "processingStatus": { + "type": "string" + }, + "duplicate": { + "type": "boolean" + } + } + }, + "ApiResultOfWebhookIngestResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ApiResult" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "data": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/WebhookIngestResult" + } + ] + } + } + } + ] + }, + "WebhookIngestResult": { + "type": "object", + "additionalProperties": false, + "properties": { + "processingStatus": { + "type": "string", + "nullable": true + }, + "duplicate": { + "type": "boolean" + } + } + } + }, + "securitySchemes": { + "Bearer": { + "type": "http", + "description": "Enter JWT Token ONLY", + "name": "Authorization", + "in": "header", + "scheme": "Bearer" + } + } + } +} \ No newline at end of file diff --git a/docs/roadmap/index.md b/docs/roadmap/index.md new file mode 100644 index 0000000..e69ef54 --- /dev/null +++ b/docs/roadmap/index.md @@ -0,0 +1,27 @@ +# Roadmap — where it goes next + +> **Populated by phase 5 — not yet written.** Phase 5 depends on phase 4: you cannot sequence work +> that has not been reconciled into one backlog. + +A **proposal**, not a commitment. The ordering is reasoned and can be overruled; what is not negotiable +is that every item traces to a `BL-###` in [status/backlog.md](../status/index.md), so nothing is +scheduled that was not first triaged. + +## Planned contents + +| File | Covers | +| --- | --- | +| `next-up.md` | The next 3–5 units of work, each spec'd enough to start | +| `deferred.md` | Recorded, each with the trigger that pulls it forward | +| `tech-debt.md` | What must be paid before scale, and what deferring it costs | +| `pre-launch.md` | The hard gate before real users touch this | + +## One item already known for `pre-launch.md` + +The repo **contains live credentials on purpose** — a deliberate pre-launch trade for a demo deployment, +documented in [root CLAUDE.md §6](../../CLAUDE.md) and [DEPLOY.md](../../DEPLOY.md). Before onboarding +real users those values must be rotated and the secret half moved out of git. + +One value is load-bearing and must **never** change: `Seams:FieldEncryption:Key` and `:HashKey` decrypt +every encrypted column and derive the `PhoneHash` that every login looks up. Rotating them locks every +account out. diff --git a/docs/rules/index.md b/docs/rules/index.md new file mode 100644 index 0000000..679d314 --- /dev/null +++ b/docs/rules/index.md @@ -0,0 +1,32 @@ +# Rules + +> **Populated by phase 1 — not yet written.** +> Until then the rules live where they always have: [root CLAUDE.md](../../CLAUDE.md), +> [client/CLAUDE.md](../../client/CLAUDE.md) (161 K), [server/CLAUDE.md](../../server/CLAUDE.md) (75 K), +> [server/CONVENTIONS.md](../../server/CONVENTIONS.md), [client/messages/STYLE.md](../../client/messages/STYLE.md), +> and the [frontend-designer skill](../../.claude/skills/frontend-designer/SKILL.md). + +What must never be broken, and nothing else. + +**The tiering rule this section exists to enforce:** a `CLAUDE.md` keeps only non-negotiables and +pointers — roughly 200 lines. Everything explanatory becomes a reference file here, read on demand. +Loading a rule should not cost 40k tokens. + +## Planned contents + +| File | Covers | +| --- | --- | +| `documentation.md` | The anti-drift convention — `Last verified:` stamps, where a fact belongs, what a doc may claim | +| `shared/naming.md` · `shared/git-and-gates.md` · `shared/code-quality.md` | Cross-project: the `Baya*` / `balinyaar-client` split, branch and commit rules, per-project check gates, no dead code | +| `client/` (8 files) | structure · theme · components · forms · i18n · services · auth · testing | +| `server/` (5 files) | structure · cqrs · persistence · identity · conventions | + +Subdirectories are created by phase 1 along with their first file. + +## Known conflicts to settle first + +- **C-11** — the frontend-designer skill and `client/CLAUDE.md` both claim the design language, with no + stated precedence. +- **C-12** — the skill stopped at manual-testing iteration 1; the code went on to iteration 2. + +Both are logged in [_plan/open-contradictions.md](../_plan/open-contradictions.md). diff --git a/docs/status/index.md b/docs/status/index.md new file mode 100644 index 0000000..9eec607 --- /dev/null +++ b/docs/status/index.md @@ -0,0 +1,33 @@ +# Status — where the project actually is + +> **Populated by phase 4 — not yet written.** Phase 4 owns **149 of the 275 surveyed markdown files**, +> by far the largest extraction job in the chain. Until then, open work is spread across five ledgers +> that do not reference each other. + +## Planned contents + +| File | Covers | +| --- | --- | +| `implemented.md` | The overlay: `product/`'s 14 business areas → build state. `product/` itself stays untouched | +| `backlog.md` | Every open item as `BL-###`, triaged, each carrying its origin id | +| `backlog-closed.md` | Items confirmed done, with what closed them | +| `decisions.md` | The distilled decision log from the whole phase chain | + +## The five ledgers phase 4 reconciles + +| Source | Size | Note | +| --- | --- | --- | +| [frontend/requests/for-backend.md](../../dev/shared-working-context/frontend/requests/for-backend.md) | 67 REQs, 104 K | Append-only; dispositions must be re-checked, not copied | +| [hardening/issues.md](../../dev/post-phase/hardening/issues.md) | 18 items | **18 of 18 unticked**, last touched 2026-07-17 — while four later chains shipped. Re-verify each against code (**C-10**) | +| `reports/*.md` "Follow-ups for later phases" | 53 reports | Every report has one. Confirmed present in all 53 | +| `backend/handoff/*.md` | 22 files | Deferrals with pull-triggers | +| [product/notes/open-questions.md](../../product/notes/open-questions.md) + [manual-testing/](../../dev/manual-testing/) ×2 | — | Business questions and two raw human feedback notes | + +Plus [mocks-registry.md](../../dev/shared-working-context/reports/mocks-registry.md) (75 K) — the seam-by-seam +mock/real status that `implemented.md` needs, and the only file that tracks it. + +## Where decisions come from + +Every `dev/phases/*` prompt shares a fixed structure, and **§5 "Critical rules you must not get wrong"** +is the section that states constraints *not visible in the code*. Verified present in all 32 prompts — +that is the raw material for `decisions.md`. See [the inventory](../_plan/inventory.md).