From 26491cd289c1dfe55805dec7decaf030fc157666 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:07:27 -0500 Subject: [PATCH 01/20] docs(25): create phase plan for default template schema Co-Authored-By: Claude Opus 4.6 (1M context) --- .planning/ROADMAP.md | 381 ++++++++++++++++++ .../25-default-template-schema/25-01-PLAN.md | 169 ++++++++ 2 files changed, 550 insertions(+) create mode 100644 .planning/ROADMAP.md create mode 100644 .planning/phases/25-default-template-schema/25-01-PLAN.md diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md new file mode 100644 index 00000000..95c672c4 --- /dev/null +++ b/.planning/ROADMAP.md @@ -0,0 +1,381 @@ +# Roadmap: TestPlanIt + +## Milestones + +- ✅ **v1.0 AI Bulk Auto-Tagging** - Phases 1-4 (shipped 2026-03-08) +- ✅ **v1.1 ZenStack Upgrade Regression Tests** - Phases 5-8 (shipped 2026-03-17) +- 📋 **v2.0 Comprehensive Test Coverage** - Phases 9-24 (planned) +- 🚧 **v2.1 Per-Project Export Template Assignment** - Phases 25-27 (in progress) + +## Phases + +
+✅ v1.0 AI Bulk Auto-Tagging (Phases 1-4) - SHIPPED 2026-03-08 + +- [x] **Phase 1: Schema Foundation** - Data model supports AI tag suggestions +- [x] **Phase 2: Alert Service and Pipeline** - Background job pipeline processes tag suggestions +- [x] **Phase 3: Settings Page UI** - Users can configure AI tagging from settings +- [x] **Phase 4: (v1.0 complete)** - Milestone wrap-up + +
+ +
+✅ v1.1 ZenStack Upgrade Regression Tests (Phases 5-8) - SHIPPED 2026-03-17 + +- [x] **Phase 5: CRUD Operations** - ZenStack v3 CRUD regression tests +- [x] **Phase 6: Relations and Queries** - Relation query regression tests +- [x] **Phase 7: Access Control** - Access control regression tests +- [x] **Phase 8: Error Handling and Batch Operations** - Error handling and batch regression tests + +
+ +### 📋 v2.0 Comprehensive Test Coverage (Phases 9-24) + +- [x] **Phase 9: Authentication E2E and API Tests** - All auth flows and API token behavior verified (completed 2026-03-19) +- [ ] **Phase 10: Test Case Repository E2E Tests** - All repository workflows verified end-to-end +- [ ] **Phase 11: Repository Components and Hooks** - Repository UI components and hooks tested with edge cases +- [ ] **Phase 12: Test Execution E2E Tests** - Test run creation and execution workflows verified +- [ ] **Phase 13: Run Components, Sessions E2E, and Session Components** - Run UI components and session workflows verified +- [ ] **Phase 14: Project Management E2E and Components** - Project workflows verified with component coverage +- [ ] **Phase 15: AI Feature E2E and API Tests** - AI features verified end-to-end and via API with mocked LLM +- [ ] **Phase 16: AI Component Tests** - AI UI components tested with all states and mocked data +- [ ] **Phase 17: Administration E2E Tests** - All admin management workflows verified end-to-end +- [ ] **Phase 18: Administration Component Tests** - Admin UI components tested with all states +- [ ] **Phase 19: Reporting E2E and Component Tests** - Reporting and analytics verified with component coverage +- [ ] **Phase 20: Search E2E and Component Tests** - Search functionality verified end-to-end and via components +- [ ] **Phase 21: Integrations E2E, Components, and API Tests** - Integration workflows verified across all layers +- [ ] **Phase 22: Custom API Route Tests** - All custom API endpoints verified with auth and error handling +- [ ] **Phase 23: General Components** - Shared UI components tested with edge cases and accessibility +- [ ] **Phase 24: Hooks, Notifications, and Workers** - Custom hooks, notification flows, and workers unit tested + +### 🚧 v2.1 Per-Project Export Template Assignment (Phases 25-27) + +**Milestone Goal:** Allow admins to assign specific Case Export Templates to individual projects and set a per-project default, so users only see relevant templates when exporting. + +- [ ] **Phase 25: Default Template Schema** - Project model extended with optional default export template relation +- [ ] **Phase 26: Admin Assignment UI** - Admin can assign, unassign, and set a default export template per project +- [ ] **Phase 27: Export Dialog Filtering** - Export dialog shows only project-assigned templates with project default pre-selected + +## Phase Details + +### Phase 9: Authentication E2E and API Tests +**Goal**: All authentication flows are verified end-to-end and API token behavior is confirmed +**Depends on**: Phase 8 (v1.1 complete) +**Requirements**: AUTH-01, AUTH-02, AUTH-03, AUTH-04, AUTH-05, AUTH-06, AUTH-07, AUTH-08 +**Success Criteria** (what must be TRUE): + 1. E2E test passes for sign-in/sign-out with valid credentials and correctly rejects invalid credentials + 2. E2E test passes for the complete sign-up flow including email verification + 3. E2E test passes for 2FA (setup, code entry, backup code recovery) with mocked authenticator + 4. E2E tests pass for magic link, SSO (Google/Microsoft/SAML), and password change with session persistence + 5. Component tests pass for all auth pages covering error states, and API tests confirm token auth, creation, revocation, and scope enforcement +**Plans:** 4/4 plans complete + +Plans: +- [ ] 09-01-PLAN.md -- Sign-in/sign-out and sign-up with email verification E2E tests +- [ ] 09-02-PLAN.md -- 2FA, SSO, magic link, and password change E2E tests +- [ ] 09-03-PLAN.md -- Auth page component tests (signin, signup, 2FA setup, 2FA verify) +- [ ] 09-04-PLAN.md -- API token authentication, creation, revocation, and scope tests + +### Phase 10: Test Case Repository E2E Tests +**Goal**: All test case repository workflows are verified end-to-end +**Depends on**: Phase 9 +**Requirements**: REPO-01, REPO-02, REPO-03, REPO-04, REPO-05, REPO-06, REPO-07, REPO-08, REPO-09, REPO-10 +**Success Criteria** (what must be TRUE): + 1. E2E tests pass for test case CRUD including all custom field types (text, select, date, user, etc.) + 2. E2E tests pass for folder operations including create, rename, move, delete, and nested hierarchies + 3. E2E tests pass for bulk operations (multi-select, bulk edit, bulk delete, bulk move to folder) + 4. E2E tests pass for search/filter (text search, custom field filters, tag filters, state filters) and import/export (CSV, JSON, markdown) + 5. E2E tests pass for shared steps, version history, tag management, issue linking, and drag-and-drop reordering +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 11: Repository Components and Hooks +**Goal**: Test case repository UI components and data hooks are fully tested with edge cases +**Depends on**: Phase 10 +**Requirements**: REPO-11, REPO-12, REPO-13, REPO-14 +**Success Criteria** (what must be TRUE): + 1. Component tests pass for the test case editor covering TipTap rich text, custom fields, steps, and attachment uploads + 2. Component tests pass for the repository table covering sorting, pagination, column visibility, and view switching + 3. Component tests pass for folder tree, breadcrumbs, and navigation with empty and nested states + 4. Hook tests pass for useRepositoryCasesWithFilteredFields, field hooks, and filter hooks with mock data +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 12: Test Execution E2E Tests +**Goal**: All test run creation and execution workflows are verified end-to-end +**Depends on**: Phase 10 +**Requirements**: RUN-01, RUN-02, RUN-03, RUN-04, RUN-05, RUN-06 +**Success Criteria** (what must be TRUE): + 1. E2E test passes for the test run creation wizard (name, milestone, configuration group, case selection) + 2. E2E test passes for step-by-step case execution including result recording, status updates, and attachments + 3. E2E test passes for bulk status updates and case assignment across multiple cases in a run + 4. E2E test passes for run completion workflow with status enforcement and multi-configuration test runs + 5. E2E test passes for test result import via API (JUnit XML format) +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 13: Run Components, Sessions E2E, and Session Components +**Goal**: Test run UI components and all exploratory session workflows are verified +**Depends on**: Phase 12 +**Requirements**: RUN-07, RUN-08, RUN-09, RUN-10, SESS-01, SESS-02, SESS-03, SESS-04, SESS-05, SESS-06 +**Success Criteria** (what must be TRUE): + 1. Component tests pass for test run detail view (case list, execution panel, result recording) including TestRunCaseDetails and TestResultHistory + 2. Component tests pass for MagicSelectButton/Dialog with mocked LLM responses covering success, loading, and error states + 3. E2E tests pass for session creation with template, configuration, and milestone selection + 4. E2E tests pass for session execution (add results with status/notes/attachments) and session completion with summary view + 5. Component and hook tests pass for SessionResultForm, SessionResultsList, CompleteSessionDialog, and session hooks +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 14: Project Management E2E and Components +**Goal**: All project management workflows are verified end-to-end with component coverage +**Depends on**: Phase 9 +**Requirements**: PROJ-01, PROJ-02, PROJ-03, PROJ-04, PROJ-05, PROJ-06, PROJ-07, PROJ-08, PROJ-09 +**Success Criteria** (what must be TRUE): + 1. E2E test passes for the 5-step project creation wizard (name, description, template, members, configurations) + 2. E2E tests pass for project settings (general, integrations, AI models, quickscript, share links) + 3. E2E tests pass for milestone CRUD (create, edit, nest, complete, cascade delete) and project documentation editor with mocked AI writing assistant + 4. E2E tests pass for member management (add, remove, role changes) and project overview dashboard (stats, activity, assignments) + 5. Component and hook tests pass for ProjectCard, ProjectMenu, milestone components, and project permission hooks +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 15: AI Feature E2E and API Tests +**Goal**: All AI-powered features are verified end-to-end and via API with mocked LLM providers +**Depends on**: Phase 9 +**Requirements**: AI-01, AI-02, AI-03, AI-04, AI-05, AI-08, AI-09 +**Success Criteria** (what must be TRUE): + 1. E2E test passes for AI test case generation wizard (source input, template, configure, review) with mocked LLM + 2. E2E test passes for auto-tag flow (configure, analyze, review suggestions, apply) with mocked LLM + 3. E2E test passes for magic select in test runs and QuickScript generation with mocked LLM + 4. E2E test passes for writing assistant in TipTap editor with mocked LLM + 5. API tests pass for all LLM and auto-tag endpoints (generate-test-cases, magic-select, chat, parse-markdown, submit, status, cancel, apply) +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 16: AI Component Tests +**Goal**: All AI feature UI components are tested with edge cases and mocked data +**Depends on**: Phase 15 +**Requirements**: AI-06, AI-07 +**Success Criteria** (what must be TRUE): + 1. Component tests pass for AutoTagWizardDialog, AutoTagReviewDialog, AutoTagProgress, and TagChip covering all states (loading, empty, error, success) + 2. Component tests pass for QuickScript dialog, template selector, and AI preview pane with mocked LLM responses +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 17: Administration E2E Tests +**Goal**: All admin management workflows are verified end-to-end +**Depends on**: Phase 9 +**Requirements**: ADM-01, ADM-02, ADM-03, ADM-04, ADM-05, ADM-06, ADM-07, ADM-08, ADM-09, ADM-10, ADM-11 +**Success Criteria** (what must be TRUE): + 1. E2E tests pass for user management (list, edit, deactivate, reset 2FA, revoke API keys) and group management (create, edit, assign users, assign to projects) + 2. E2E tests pass for role management (create, edit permissions per area) and SSO configuration (add/edit providers, force SSO, email domain restrictions) + 3. E2E tests pass for workflow management (create, edit, reorder states) and status management (create, edit flags, scope assignment) + 4. E2E tests pass for configuration management (categories, variants, groups) and audit log (view, filter, CSV export) + 5. E2E tests pass for Elasticsearch admin (settings, reindex), LLM integration management, and app config management +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 18: Administration Component Tests +**Goal**: Admin UI components are tested with all states and form interactions +**Depends on**: Phase 17 +**Requirements**: ADM-12, ADM-13 +**Success Criteria** (what must be TRUE): + 1. Component tests pass for QueueManagement, ElasticsearchAdmin, and audit log viewer covering loading, empty, error, and populated states + 2. Component tests pass for user edit form, group edit form, and role permissions matrix covering validation and error states +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 19: Reporting E2E and Component Tests +**Goal**: All reporting and analytics workflows are verified with component coverage +**Depends on**: Phase 9 +**Requirements**: RPT-01, RPT-02, RPT-03, RPT-04, RPT-05, RPT-06, RPT-07, RPT-08 +**Success Criteria** (what must be TRUE): + 1. E2E test passes for the report builder (create report, select dimensions/metrics, generate chart) + 2. E2E tests pass for pre-built reports (automation trends, flaky tests, test case health, issue coverage) and report drill-down/filtering + 3. E2E tests pass for share links (create, access public/password-protected/authenticated) and forecasting (milestone forecast, duration estimates) + 4. Component tests pass for ReportBuilder, ReportChart, DrillDownDrawer, and ReportFilters with all data states + 5. Component tests pass for all chart types (donut, gantt, bubble, sunburst, line, bar) and share link components (ShareDialog, PasswordGate, SharedReportViewer) +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 20: Search E2E and Component Tests +**Goal**: All search functionality is verified end-to-end with component coverage +**Depends on**: Phase 9 +**Requirements**: SRCH-01, SRCH-02, SRCH-03, SRCH-04, SRCH-05 +**Success Criteria** (what must be TRUE): + 1. E2E test passes for global search (Cmd+K, cross-entity results, result navigation to correct page) + 2. E2E tests pass for advanced search operators (exact phrase, required/excluded terms, wildcards, field:value syntax) + 3. E2E test passes for faceted search filters (custom field values, tags, states, date ranges) + 4. Component tests pass for UnifiedSearch, GlobalSearchSheet, search result components, and FacetedSearchFilters with all data states + 5. Component tests pass for result display components (CustomFieldDisplay, DateTimeDisplay, UserDisplay) covering all field types +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 21: Integrations E2E, Components, and API Tests +**Goal**: All third-party integration workflows are verified end-to-end with component and API coverage +**Depends on**: Phase 9 +**Requirements**: INTG-01, INTG-02, INTG-03, INTG-04, INTG-05, INTG-06 +**Success Criteria** (what must be TRUE): + 1. E2E tests pass for issue tracker setup (Jira, GitHub, Azure DevOps) and issue operations (create, link, sync status) with mocked APIs + 2. E2E test passes for code repository setup and QuickScript file context with mocked APIs + 3. Component tests pass for UnifiedIssueManager, CreateIssueDialog, SearchIssuesDialog, and integration configuration forms + 4. API tests pass for integration endpoints (test-connection, create-issue, search, sync) with mocked external services +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 22: Custom API Route Tests +**Goal**: All custom API endpoints are verified with correct behavior, auth enforcement, and error handling +**Depends on**: Phase 9 +**Requirements**: CAPI-01, CAPI-02, CAPI-03, CAPI-04, CAPI-05, CAPI-06, CAPI-07, CAPI-08, CAPI-09, CAPI-10 +**Success Criteria** (what must be TRUE): + 1. API tests pass for project endpoints (cases/bulk-edit, cases/fetch-many, folders/stats) with auth and tenant isolation verified + 2. API tests pass for test run endpoints (summary, attachments, import, completed, summaries) and session summary endpoint + 3. API tests pass for milestone endpoints (descendants, forecast, summary) and share link endpoints (access, password-verify, report data) + 4. API tests pass for all report builder endpoints (all report types, drill-down queries) and admin endpoints (elasticsearch, queues, trash, user management) + 5. API tests pass for search, tag/issue count aggregation, file upload/download, health, metadata, and OpenAPI documentation endpoints +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 23: General Components +**Goal**: All shared UI components are tested with full edge case and error state coverage +**Depends on**: Phase 9 +**Requirements**: COMP-01, COMP-02, COMP-03, COMP-04, COMP-05, COMP-06, COMP-07, COMP-08 +**Success Criteria** (what must be TRUE): + 1. Component tests pass for Header, UserDropdownMenu, and NotificationBell covering all notification states (empty, unread count, loading) + 2. Component tests pass for comment system (CommentEditor, CommentList, MentionSuggestion) and attachment components (display, upload, preview carousel) + 3. Component tests pass for DataTable (sorting, filtering, column visibility, row selection) and form components (ConfigurationSelect, FolderSelect, MilestoneSelect, DatePickerField) + 4. Component tests pass for onboarding dialogs, TipTap editor extensions (image resize, tables, code blocks), and DnD components (drag previews, drag interactions) +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +### Phase 24: Hooks, Notifications, and Workers +**Goal**: All custom hooks, notification flows, and background workers are unit tested +**Depends on**: Phase 9 +**Requirements**: HOOK-01, HOOK-02, HOOK-03, HOOK-04, HOOK-05, NOTIF-01, NOTIF-02, NOTIF-03, WORK-01, WORK-02, WORK-03 +**Success Criteria** (what must be TRUE): + 1. Hook tests pass for ZenStack-generated data fetching hooks (useFindMany*, useCreate*, useUpdate*, useDelete*) with mocked data + 2. Hook tests pass for permission hooks (useProjectPermissions, useUserAccess, role-based hooks) covering all permission states + 3. Hook tests pass for UI state hooks (useExportData, useReportColumns, filter/sort hooks) and form hooks (useForm integrations, validation) + 4. Hook tests pass for integration hooks (useAutoTagJob, useIntegration, useLlm) with mocked providers + 5. Component tests pass for NotificationBell, NotificationContent, and NotificationPreferences; API tests pass for notification dispatch; unit tests pass for emailWorker, repoCacheWorker, and autoTagWorker +**Plans**: 2 plans + +Plans: +- [ ] 10-01-PLAN.md -- Gap-fill: test case edit/delete and bulk move to folder +- [ ] 10-02-PLAN.md -- Gap-fill: shared steps CRUD and versioning + +--- + +### Phase 25: Default Template Schema +**Goal**: The Project model exposes an optional default export template so that the application can persist and query per-project default selections +**Depends on**: Nothing (SCHEMA-01 already complete; this extends it) +**Requirements**: SCHEMA-02 +**Success Criteria** (what must be TRUE): + 1. The Project model has an optional relation to CaseExportTemplate representing the project's default export template + 2. Setting and clearing the default template for a project persists correctly in the database + 3. ZenStack/Prisma generation succeeds and the new relation is queryable via generated hooks +**Plans**: 1 plan + +Plans: +- [ ] 25-01-PLAN.md -- Add defaultCaseExportTemplate relation to Project model and regenerate + +### Phase 26: Admin Assignment UI +**Goal**: Admins can assign or unassign export templates to a project and designate one as the default, directly from project settings +**Depends on**: Phase 25 +**Requirements**: ADMIN-01, ADMIN-02 +**Success Criteria** (what must be TRUE): + 1. Admin can navigate to project settings and see a list of all enabled export templates with their assignment status for that project + 2. Admin can assign an export template to a project and the assignment is reflected immediately in the UI + 3. Admin can unassign an export template from a project and it no longer appears in the project's assigned list + 4. Admin can mark one assigned template as the project default, and the selection persists across page reloads +**Plans**: TBD + +### Phase 27: Export Dialog Filtering +**Goal**: The export dialog shows only the templates relevant to the current project, with the project default pre-selected, while gracefully falling back when no assignments exist +**Depends on**: Phase 26 +**Requirements**: EXPORT-01, EXPORT-02, EXPORT-03 +**Success Criteria** (what must be TRUE): + 1. When a project has assigned templates, the export dialog lists only those templates (not all global templates) + 2. When a project has a default template set, the export dialog opens with that template pre-selected + 3. When a project has no assigned templates, the export dialog shows all enabled templates (backward compatible fallback) +**Plans**: TBD + +--- + +## Progress + +**Execution Order:** +Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 → 16 → 17 → 18 → 19 → 20 → 21 → 22 → 23 → 24 → 25 → 26 → 27 + +| Phase | Milestone | Plans Complete | Status | Completed | +|-------|-----------|----------------|--------|-----------| +| 1. Schema Foundation | v1.0 | 1/1 | Complete | 2026-03-08 | +| 2. Alert Service and Pipeline | v1.0 | 3/3 | Complete | 2026-03-08 | +| 3. Settings Page UI | v1.0 | 1/1 | Complete | 2026-03-08 | +| 4. (v1.0 complete) | v1.0 | 0/0 | Complete | 2026-03-08 | +| 5. CRUD Operations | v1.1 | 4/4 | Complete | 2026-03-17 | +| 6. Relations and Queries | v1.1 | 2/2 | Complete | 2026-03-17 | +| 7. Access Control | v1.1 | 2/2 | Complete | 2026-03-17 | +| 8. Error Handling and Batch Operations | v1.1 | 2/2 | Complete | 2026-03-17 | +| 9. Authentication E2E and API Tests | v2.0 | 4/4 | Complete | 2026-03-19 | +| 10. Test Case Repository E2E Tests | v2.0 | 0/2 | Planning complete | - | +| 11. Repository Components and Hooks | v2.0 | 0/TBD | Not started | - | +| 12. Test Execution E2E Tests | v2.0 | 0/TBD | Not started | - | +| 13. Run Components, Sessions E2E, and Session Components | v2.0 | 0/TBD | Not started | - | +| 14. Project Management E2E and Components | v2.0 | 0/TBD | Not started | - | +| 15. AI Feature E2E and API Tests | v2.0 | 0/TBD | Not started | - | +| 16. AI Component Tests | v2.0 | 0/TBD | Not started | - | +| 17. Administration E2E Tests | v2.0 | 0/TBD | Not started | - | +| 18. Administration Component Tests | v2.0 | 0/TBD | Not started | - | +| 19. Reporting E2E and Component Tests | v2.0 | 0/TBD | Not started | - | +| 20. Search E2E and Component Tests | v2.0 | 0/TBD | Not started | - | +| 21. Integrations E2E, Components, and API Tests | v2.0 | 0/TBD | Not started | - | +| 22. Custom API Route Tests | v2.0 | 0/TBD | Not started | - | +| 23. General Components | v2.0 | 0/TBD | Not started | - | +| 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - | +| 25. Default Template Schema | v2.1 | 0/1 | Planning complete | - | +| 26. Admin Assignment UI | v2.1 | 0/TBD | Not started | - | +| 27. Export Dialog Filtering | v2.1 | 0/TBD | Not started | - | diff --git a/.planning/phases/25-default-template-schema/25-01-PLAN.md b/.planning/phases/25-default-template-schema/25-01-PLAN.md new file mode 100644 index 00000000..a1f68bd9 --- /dev/null +++ b/.planning/phases/25-default-template-schema/25-01-PLAN.md @@ -0,0 +1,169 @@ +--- +phase: 25-default-template-schema +plan: 01 +type: execute +wave: 1 +depends_on: [] +files_modified: + - testplanit/schema.zmodel +autonomous: true +requirements: + - SCHEMA-02 + +must_haves: + truths: + - "Project model has an optional defaultCaseExportTemplate relation to CaseExportTemplate" + - "Setting defaultCaseExportTemplateId on a project persists a valid FK to CaseExportTemplate" + - "Clearing defaultCaseExportTemplateId (setting to null) persists correctly" + - "ZenStack and Prisma generation succeeds without errors" + - "Deleting a CaseExportTemplate that is a project default sets the FK to null (SetNull)" + artifacts: + - path: "testplanit/schema.zmodel" + provides: "Project model with defaultCaseExportTemplate relation" + contains: "defaultCaseExportTemplateId" + key_links: + - from: "Projects.defaultCaseExportTemplateId" + to: "CaseExportTemplate.id" + via: "@relation FK" + pattern: "defaultCaseExportTemplate\\s+CaseExportTemplate" +--- + + +Add a nullable `defaultCaseExportTemplateId` FK and relation to the Project model in schema.zmodel, then regenerate ZenStack/Prisma artifacts and push the schema to the database. + +Purpose: Enables per-project default export template selection (SCHEMA-02). Phase 26 will build the admin UI to set this value; Phase 27 will use it to pre-select a template in the export dialog. + +Output: Updated schema.zmodel with the new relation, regenerated Prisma client and ZenStack hooks, database schema updated. + + + +@/Users/bderman/.claude/get-shit-done/workflows/execute-plan.md +@/Users/bderman/.claude/get-shit-done/templates/summary.md + + + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@.planning/phases/25-default-template-schema/25-CONTEXT.md + + + + +From testplanit/schema.zmodel (Project model, lines 334-467): +```zmodel +model Projects { + // ... existing fields ... + defaultRoleId Int? + defaultRole Roles? @relation("ProjectDefaultRole", fields: [defaultRoleId], references: [id]) + // ... existing fields ... + assignedExportTemplates CaseExportTemplateProjectAssignment[] + quickScriptEnabled Boolean @default(false) + // access control rules follow +} +``` + +From testplanit/schema.zmodel (CaseExportTemplate model, lines 785-806): +```zmodel +model CaseExportTemplate { + id Int @id @default(autoincrement()) + name String @unique @length(1) + // ... other fields ... + projects CaseExportTemplateProjectAssignment[] + + @@deny('all', !auth()) + @@allow('all', auth().access == 'ADMIN') + @@allow('read', auth().access != null) +} +``` + + + + + + + Task 1: Add defaultCaseExportTemplate relation to Project model + testplanit/schema.zmodel + + - testplanit/schema.zmodel (lines 334-467 for Project model, lines 785-806 for CaseExportTemplate model) + + +In `testplanit/schema.zmodel`, add two new fields to the `Projects` model, placed after the `assignedExportTemplates` line (line 377) and before `quickScriptEnabled`: + +```zmodel + defaultCaseExportTemplateId Int? + defaultCaseExportTemplate CaseExportTemplate? @relation("ProjectDefaultExportTemplate", fields: [defaultCaseExportTemplateId], references: [id], onDelete: SetNull) +``` + +Then add a back-relation on the `CaseExportTemplate` model. After the existing `projects` line (line 801), add: + +```zmodel + defaultForProjects Projects[] @relation("ProjectDefaultExportTemplate") +``` + +Key details: +- Use `onDelete: SetNull` so deleting a CaseExportTemplate clears the default on any project referencing it (per CONTEXT.md discretion decision) +- Use a named relation `"ProjectDefaultExportTemplate"` to disambiguate from the existing join-table relation via `CaseExportTemplateProjectAssignment` +- The FK is nullable (`Int?`) and the relation is optional (`CaseExportTemplate?`) since projects may not have a default +- No access control changes needed on Project model (existing rules cover all fields) + + + cd testplanit && grep -n "defaultCaseExportTemplateId" schema.zmodel && grep -n "defaultCaseExportTemplate " schema.zmodel && grep -n "defaultForProjects" schema.zmodel && grep -n "ProjectDefaultExportTemplate" schema.zmodel + + + - schema.zmodel contains `defaultCaseExportTemplateId Int?` inside the Projects model + - schema.zmodel contains `defaultCaseExportTemplate CaseExportTemplate? @relation("ProjectDefaultExportTemplate", fields: [defaultCaseExportTemplateId], references: [id], onDelete: SetNull)` inside the Projects model + - schema.zmodel contains `defaultForProjects Projects[] @relation("ProjectDefaultExportTemplate")` inside the CaseExportTemplate model + - The new fields appear after `assignedExportTemplates` and before `quickScriptEnabled` in the Projects model + + Project model has nullable FK and optional relation to CaseExportTemplate for per-project default; CaseExportTemplate has back-relation + + + + Task 2: Regenerate ZenStack/Prisma and push schema + testplanit/schema.zmodel + + - testplanit/schema.zmodel (verify Task 1 changes are present) + - testplanit/package.json (confirm `generate` script exists) + + +Run `pnpm generate` from the `testplanit/` directory. This command: +1. Runs `zenstack generate` which regenerates all ZenStack hooks in `lib/hooks/` +2. Runs `prisma db push` which applies the schema change to the database (adds nullable `defaultCaseExportTemplateId` column to Projects table) + +The nullable FK addition is safe for existing data -- all existing rows get NULL automatically. + +After generation succeeds, verify the generated Prisma schema includes the new field by checking `testplanit/prisma/schema.prisma` for `defaultCaseExportTemplateId`. + + + cd testplanit && pnpm generate 2>&1 | tail -20 && grep "defaultCaseExportTemplateId" prisma/schema.prisma + + + - `pnpm generate` exits with code 0 + - `testplanit/prisma/schema.prisma` contains `defaultCaseExportTemplateId` + - `testplanit/prisma/schema.prisma` contains `defaultCaseExportTemplate` + - No TypeScript compilation errors related to the new fields + + ZenStack hooks regenerated, Prisma client updated, database schema pushed with new nullable FK column on Projects table + + + + + +1. `grep "defaultCaseExportTemplateId" testplanit/schema.zmodel` returns the FK field +2. `grep "defaultCaseExportTemplate " testplanit/schema.zmodel` returns the relation field +3. `grep "defaultForProjects" testplanit/schema.zmodel` returns the back-relation on CaseExportTemplate +4. `grep "defaultCaseExportTemplateId" testplanit/prisma/schema.prisma` confirms Prisma schema was generated +5. `cd testplanit && pnpm generate` completes without errors + + + +- Project model in schema.zmodel has `defaultCaseExportTemplateId Int?` and `defaultCaseExportTemplate CaseExportTemplate?` relation +- CaseExportTemplate model has `defaultForProjects Projects[]` back-relation +- `pnpm generate` succeeds (ZenStack + Prisma generation + db push) +- Generated Prisma schema and hooks include the new relation + + + +After completion, create `.planning/phases/25-default-template-schema/25-01-SUMMARY.md` + From a739d82d623c61d6b5105c170fbcc5be5b610e72 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:10:40 -0500 Subject: [PATCH 02/20] feat(25-01): Add defaultCaseExportTemplate relation to Projects model - Added nullable defaultCaseExportTemplateId Int? FK to Projects model - Added defaultCaseExportTemplate CaseExportTemplate? optional relation with onDelete: SetNull - Added defaultForProjects Projects[] back-relation on CaseExportTemplate model - Named relation 'ProjectDefaultExportTemplate' disambiguates from join-table relation --- testplanit/schema.zmodel | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/testplanit/schema.zmodel b/testplanit/schema.zmodel index 1b52779e..c5d8742e 100644 --- a/testplanit/schema.zmodel +++ b/testplanit/schema.zmodel @@ -374,8 +374,10 @@ model Projects { comments Comment[] auditLogs AuditLog[] shareLinks ShareLink[] - assignedExportTemplates CaseExportTemplateProjectAssignment[] - quickScriptEnabled Boolean @default(false) + assignedExportTemplates CaseExportTemplateProjectAssignment[] + defaultCaseExportTemplateId Int? + defaultCaseExportTemplate CaseExportTemplate? @relation("ProjectDefaultExportTemplate", fields: [defaultCaseExportTemplateId], references: [id], onDelete: SetNull) + quickScriptEnabled Boolean @default(false) @@index([isDeleted, isCompleted]) @@index([createdBy]) @@ -798,7 +800,8 @@ model CaseExportTemplate { isDeleted Boolean @default(false) createdAt DateTime @default(now()) @db.Timestamptz(6) updatedAt DateTime @updatedAt - projects CaseExportTemplateProjectAssignment[] + projects CaseExportTemplateProjectAssignment[] + defaultForProjects Projects[] @relation("ProjectDefaultExportTemplate") @@deny('all', !auth()) @@allow('all', auth().access == 'ADMIN') From 0cabe15dd2e4aeec40c612c79feed8f4ec415894 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:12:07 -0500 Subject: [PATCH 03/20] chore(25-01): Regenerate ZenStack/Prisma artifacts after adding defaultCaseExportTemplate relation - prisma/schema.prisma updated with defaultCaseExportTemplateId FK and relation - lib/hooks updated with new relation metadata - Database schema pushed (nullable column added to Projects table) - OpenAPI spec updated to include new fields --- testplanit/lib/hooks/__model_meta.ts | 21 + testplanit/lib/hooks/projects.ts | 2 +- testplanit/lib/openapi/zenstack-openapi.json | 6628 ++++++++++++++---- testplanit/prisma/schema.prisma | 123 +- 4 files changed, 5232 insertions(+), 1542 deletions(-) diff --git a/testplanit/lib/hooks/__model_meta.ts b/testplanit/lib/hooks/__model_meta.ts index f303f5e7..ee17666b 100644 --- a/testplanit/lib/hooks/__model_meta.ts +++ b/testplanit/lib/hooks/__model_meta.ts @@ -986,6 +986,21 @@ const metadata: ModelMeta = { isDataModel: true, isArray: true, backLink: 'project', + }, defaultCaseExportTemplateId: { + name: "defaultCaseExportTemplateId", + type: "Int", + isOptional: true, + isForeignKey: true, + relationField: 'defaultCaseExportTemplate', + }, defaultCaseExportTemplate: { + name: "defaultCaseExportTemplate", + type: "CaseExportTemplate", + isDataModel: true, + isOptional: true, + backLink: 'defaultForProjects', + isRelationOwner: true, + onDeleteAction: 'SetNull', + foreignKeyMapping: { "id": "defaultCaseExportTemplateId" }, }, quickScriptEnabled: { name: "quickScriptEnabled", type: "Boolean", @@ -2051,6 +2066,12 @@ const metadata: ModelMeta = { isDataModel: true, isArray: true, backLink: 'template', + }, defaultForProjects: { + name: "defaultForProjects", + type: "Projects", + isDataModel: true, + isArray: true, + backLink: 'defaultCaseExportTemplate', }, }, uniqueConstraints: { id: { diff --git a/testplanit/lib/hooks/projects.ts b/testplanit/lib/hooks/projects.ts index 9da0a885..6ef4ffef 100644 --- a/testplanit/lib/hooks/projects.ts +++ b/testplanit/lib/hooks/projects.ts @@ -328,7 +328,7 @@ export function useSuspenseCountProjects(args: { operation: PolicyCrudKind; where?: { id?: number; name?: string; iconUrl?: string; note?: string; docs?: string; isCompleted?: boolean; isDeleted?: boolean; createdBy?: string; defaultAccessType?: ProjectAccessType; defaultRoleId?: number; promptConfigId?: string; quickScriptEnabled?: boolean }; }, options?: (Omit, 'queryKey'> & ExtraQueryOptions)) { +export function useCheckProjects(args: { operation: PolicyCrudKind; where?: { id?: number; name?: string; iconUrl?: string; note?: string; docs?: string; isCompleted?: boolean; isDeleted?: boolean; createdBy?: string; defaultAccessType?: ProjectAccessType; defaultRoleId?: number; promptConfigId?: string; defaultCaseExportTemplateId?: number; quickScriptEnabled?: boolean }; }, options?: (Omit, 'queryKey'> & ExtraQueryOptions)) { const { endpoint, fetch } = getHooksContext(); return useModelQuery('Projects', `${endpoint}/projects/check`, args, options, fetch); } diff --git a/testplanit/lib/openapi/zenstack-openapi.json b/testplanit/lib/openapi/zenstack-openapi.json index 60b4d2db..48775ab8 100644 --- a/testplanit/lib/openapi/zenstack-openapi.json +++ b/testplanit/lib/openapi/zenstack-openapi.json @@ -853,6 +853,7 @@ "defaultAccessType", "defaultRoleId", "promptConfigId", + "defaultCaseExportTemplateId", "quickScriptEnabled" ] }, @@ -3270,6 +3271,26 @@ "$ref": "#/components/schemas/CaseExportTemplateProjectAssignment" } }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, + "defaultCaseExportTemplate": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CaseExportTemplate" + } + ] + }, "quickScriptEnabled": { "type": "boolean" } @@ -4284,6 +4305,12 @@ "items": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignment" } + }, + "defaultForProjects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Projects" + } } }, "required": [ @@ -15219,6 +15246,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "$ref": "#/components/schemas/IntNullableFilter" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -15355,6 +15395,19 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentListRelationFilter" + }, + "defaultCaseExportTemplate": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateNullableScalarRelationFilter" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + }, + { + "type": "null" + } + ] } } }, @@ -15442,6 +15495,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "$ref": "#/components/schemas/SortOrder" + }, + { + "$ref": "#/components/schemas/SortOrderInput" + } + ] + }, "quickScriptEnabled": { "$ref": "#/components/schemas/SortOrder" }, @@ -15534,6 +15597,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentOrderByRelationAggregateInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateOrderByWithRelationInput" } } }, @@ -15708,6 +15774,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "$ref": "#/components/schemas/IntNullableFilter" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -15844,6 +15923,19 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentListRelationFilter" + }, + "defaultCaseExportTemplate": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateNullableScalarRelationFilter" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + }, + { + "type": "null" + } + ] } } }, @@ -16032,6 +16124,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "$ref": "#/components/schemas/IntNullableWithAggregatesFilter" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -22261,6 +22366,9 @@ }, "projects": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentListRelationFilter" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsListRelationFilter" } } }, @@ -22335,6 +22443,9 @@ }, "projects": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentOrderByRelationAggregateInput" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsOrderByRelationAggregateInput" } } }, @@ -22522,6 +22633,9 @@ }, "projects": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentListRelationFilter" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsListRelationFilter" } } }, @@ -64685,6 +64799,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -64898,6 +65015,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -64987,6 +65107,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" } @@ -67892,6 +68022,9 @@ }, "projects": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutTemplateInput" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsCreateNestedManyWithoutDefaultCaseExportTemplateInput" } }, "required": [ @@ -68058,6 +68191,9 @@ }, "projects": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutTemplateNestedInput" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsUpdateManyWithoutDefaultCaseExportTemplateNestedInput" } } }, @@ -93848,6 +93984,31 @@ } } }, + "CaseExportTemplateNullableScalarRelationFilter": { + "type": "object", + "properties": { + "is": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + } + ] + }, + "isNot": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + } + ] + } + } + }, "ProjectStatusAssignmentOrderByRelationAggregateInput": { "type": "object", "properties": { @@ -118033,6 +118194,27 @@ } } }, + "CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateCreateWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedCreateWithoutDefaultForProjectsInput" + } + ] + }, + "connectOrCreate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateOrConnectWithoutDefaultForProjectsInput" + }, + "connect": { + "$ref": "#/components/schemas/CaseExportTemplateWhereUniqueInput" + } + } + }, "ProjectAssignmentUncheckedCreateNestedManyWithoutProjectInput": { "type": "object", "properties": { @@ -123548,6 +123730,63 @@ } } }, + "CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateCreateWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedCreateWithoutDefaultForProjectsInput" + } + ] + }, + "connectOrCreate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateOrConnectWithoutDefaultForProjectsInput" + }, + "upsert": { + "$ref": "#/components/schemas/CaseExportTemplateUpsertWithoutDefaultForProjectsInput" + }, + "disconnect": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + } + ] + }, + "delete": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + } + ] + }, + "connect": { + "$ref": "#/components/schemas/CaseExportTemplateWhereUniqueInput" + }, + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateUpdateToOneWithWhereWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUpdateWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedUpdateWithoutDefaultForProjectsInput" + } + ] + } + } + }, "ProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput": { "type": "object", "properties": { @@ -141052,6 +141291,174 @@ } } }, + "ProjectsCreateNestedManyWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + } + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "connectOrCreate": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "createMany": { + "$ref": "#/components/schemas/ProjectsCreateManyDefaultCaseExportTemplateInputEnvelope" + }, + "connect": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + } + } + }, + "CaseExportTemplateProjectAssignmentUncheckedCreateNestedManyWithoutTemplateInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateWithoutTemplateInput" + } + }, + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateWithoutTemplateInput" + } + } + ] + }, + "connectOrCreate": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateOrConnectWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateOrConnectWithoutTemplateInput" + } + } + ] + }, + "createMany": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateManyTemplateInputEnvelope" + }, + "connect": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + } + } + ] + } + } + }, + "ProjectsUncheckedCreateNestedManyWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + } + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "connectOrCreate": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "createMany": { + "$ref": "#/components/schemas/ProjectsCreateManyDefaultCaseExportTemplateInputEnvelope" + }, + "connect": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + } + } + }, "CaseExportTemplateProjectAssignmentUpdateManyWithoutTemplateNestedInput": { "type": "object", "properties": { @@ -141199,6 +141606,447 @@ } } }, + "ProjectsUpdateManyWithoutDefaultCaseExportTemplateNestedInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + } + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "connectOrCreate": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "upsert": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpsertWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUpsertWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "createMany": { + "$ref": "#/components/schemas/ProjectsCreateManyDefaultCaseExportTemplateInputEnvelope" + }, + "set": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "disconnect": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "delete": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "connect": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUpdateWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "updateMany": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateManyWithWhereWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUpdateManyWithWhereWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "deleteMany": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsScalarWhereInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsScalarWhereInput" + } + } + ] + } + } + }, + "CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutTemplateNestedInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateWithoutTemplateInput" + } + }, + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateWithoutTemplateInput" + } + } + ] + }, + "connectOrCreate": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateOrConnectWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateOrConnectWithoutTemplateInput" + } + } + ] + }, + "upsert": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpsertWithWhereUniqueWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpsertWithWhereUniqueWithoutTemplateInput" + } + } + ] + }, + "createMany": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateManyTemplateInputEnvelope" + }, + "set": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + } + } + ] + }, + "disconnect": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + } + } + ] + }, + "delete": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + } + } + ] + }, + "connect": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + } + } + ] + }, + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateWithWhereUniqueWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateWithWhereUniqueWithoutTemplateInput" + } + } + ] + }, + "updateMany": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithWhereWithoutTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithWhereWithoutTemplateInput" + } + } + ] + }, + "deleteMany": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentScalarWhereInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentScalarWhereInput" + } + } + ] + } + } + }, + "ProjectsUncheckedUpdateManyWithoutDefaultCaseExportTemplateNestedInput": { + "type": "object", + "properties": { + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + } + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "connectOrCreate": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "upsert": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpsertWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUpsertWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "createMany": { + "$ref": "#/components/schemas/ProjectsCreateManyDefaultCaseExportTemplateInputEnvelope" + }, + "set": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "disconnect": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "delete": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "connect": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + } + } + ] + }, + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUpdateWithWhereUniqueWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "updateMany": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateManyWithWhereWithoutDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsUpdateManyWithWhereWithoutDefaultCaseExportTemplateInput" + } + } + ] + }, + "deleteMany": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsScalarWhereInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsScalarWhereInput" + } + } + ] + } + } + }, "CaseExportTemplateCreateNestedOneWithoutProjectsInput": { "type": "object", "properties": { @@ -195422,6 +196270,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -195511,6 +196362,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -204549,6 +205410,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "$ref": "#/components/schemas/IntNullableFilter" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -217392,6 +218266,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -217475,6 +218352,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -224293,418 +225180,603 @@ "data" ] }, - "UserUpsertWithoutCreatedProjectsInput": { + "CaseExportTemplateCreateWithoutDefaultForProjectsInput": { "type": "object", "properties": { - "update": { + "name": { + "type": "string" + }, + "description": { "oneOf": [ { - "$ref": "#/components/schemas/UserUpdateWithoutCreatedProjectsInput" + "type": "null" }, { - "$ref": "#/components/schemas/UserUncheckedUpdateWithoutCreatedProjectsInput" + "type": "string" } ] }, - "create": { + "category": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "headerBody": { "oneOf": [ { - "$ref": "#/components/schemas/UserCreateWithoutCreatedProjectsInput" + "type": "null" }, { - "$ref": "#/components/schemas/UserUncheckedCreateWithoutCreatedProjectsInput" + "type": "string" } ] }, - "where": { - "$ref": "#/components/schemas/UserWhereInput" - } - }, - "required": [ - "update", - "create" - ] - }, - "UserUpdateToOneWithWhereWithoutCreatedProjectsInput": { - "type": "object", - "properties": { - "where": { - "$ref": "#/components/schemas/UserWhereInput" + "templateBody": { + "type": "string" }, - "data": { + "footerBody": { "oneOf": [ { - "$ref": "#/components/schemas/UserUpdateWithoutCreatedProjectsInput" + "type": "null" }, { - "$ref": "#/components/schemas/UserUncheckedUpdateWithoutCreatedProjectsInput" + "type": "string" } ] + }, + "fileExtension": { + "type": "string" + }, + "language": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "projects": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutTemplateInput" } }, "required": [ - "data" + "name", + "category", + "templateBody", + "fileExtension", + "language" ] }, - "UserUpdateWithoutCreatedProjectsInput": { + "CaseExportTemplateUncheckedCreateWithoutDefaultForProjectsInput": { "type": "object", "properties": { "id": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] + "type": "integer" }, "name": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] + "type": "string" }, - "email": { + "description": { "oneOf": [ { - "type": "string" + "type": "null" }, { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + "type": "string" } ] }, - "emailVerified": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] + "category": { + "type": "string" }, - "emailVerifToken": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] + "framework": { + "type": "string" }, - "emailTokenExpires": { + "headerBody": { "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, { "type": "null" - } - ] - }, - "password": { - "oneOf": [ - { - "type": "string" }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] - }, - "image": { - "oneOf": [ { "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" } ] }, - "authMethod": { - "oneOf": [ - { - "$ref": "#/components/schemas/AuthMethod" - }, - { - "$ref": "#/components/schemas/EnumAuthMethodFieldUpdateOperationsInput" - } - ] + "templateBody": { + "type": "string" }, - "externalId": { + "footerBody": { "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, { "type": "null" - } - ] - }, - "access": { - "oneOf": [ - { - "$ref": "#/components/schemas/Access" }, { - "$ref": "#/components/schemas/EnumAccessFieldUpdateOperationsInput" + "type": "string" } ] }, - "isActive": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] + "fileExtension": { + "type": "string" }, - "isDeleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] + "language": { + "type": "string" }, - "isApi": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" }, "createdAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" - } - ] + "type": "string", + "format": "date-time" }, "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" - } - ] + "type": "string", + "format": "date-time" }, - "lastActiveAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] + "projects": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateNestedManyWithoutTemplateInput" + } + }, + "required": [ + "name", + "category", + "templateBody", + "fileExtension", + "language" + ] + }, + "CaseExportTemplateCreateOrConnectWithoutDefaultForProjectsInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/CaseExportTemplateWhereUniqueInput" }, - "lastSeenVersion": { + "create": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CaseExportTemplateCreateWithoutDefaultForProjectsInput" }, { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" + "$ref": "#/components/schemas/CaseExportTemplateUncheckedCreateWithoutDefaultForProjectsInput" } ] - }, - "twoFactorEnabled": { + } + }, + "required": [ + "where", + "create" + ] + }, + "UserUpsertWithoutCreatedProjectsInput": { + "type": "object", + "properties": { + "update": { "oneOf": [ { - "type": "boolean" + "$ref": "#/components/schemas/UserUpdateWithoutCreatedProjectsInput" }, { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + "$ref": "#/components/schemas/UserUncheckedUpdateWithoutCreatedProjectsInput" } ] }, - "twoFactorSecret": { + "create": { "oneOf": [ { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + "$ref": "#/components/schemas/UserCreateWithoutCreatedProjectsInput" }, { - "type": "null" + "$ref": "#/components/schemas/UserUncheckedCreateWithoutCreatedProjectsInput" } ] }, - "twoFactorBackupCodes": { + "where": { + "$ref": "#/components/schemas/UserWhereInput" + } + }, + "required": [ + "update", + "create" + ] + }, + "UserUpdateToOneWithWhereWithoutCreatedProjectsInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/UserWhereInput" + }, + "data": { "oneOf": [ { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + "$ref": "#/components/schemas/UserUpdateWithoutCreatedProjectsInput" }, { - "type": "null" + "$ref": "#/components/schemas/UserUncheckedUpdateWithoutCreatedProjectsInput" } ] - }, - "accounts": { - "$ref": "#/components/schemas/AccountUpdateManyWithoutUserNestedInput" - }, - "role": { - "$ref": "#/components/schemas/RolesUpdateOneRequiredWithoutUsersNestedInput" - }, - "createdBy": { - "$ref": "#/components/schemas/UserUpdateOneWithoutCreatedUsersNestedInput" - }, - "userPreferences": { - "$ref": "#/components/schemas/UserPreferencesUpdateOneWithoutUserNestedInput" - }, - "createdUsers": { - "$ref": "#/components/schemas/UserUpdateManyWithoutCreatedByNestedInput" - }, - "projects": { - "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutUserNestedInput" - }, - "groups": { - "$ref": "#/components/schemas/GroupAssignmentUpdateManyWithoutUserNestedInput" - }, - "createdMilestones": { - "$ref": "#/components/schemas/MilestonesUpdateManyWithoutCreatorNestedInput" - }, - "repositoryFolders": { - "$ref": "#/components/schemas/RepositoryFoldersUpdateManyWithoutCreatorNestedInput" - }, - "repositoryCases": { - "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutCreatorNestedInput" - }, - "attachments": { - "$ref": "#/components/schemas/AttachmentsUpdateManyWithoutCreatedByNestedInput" - }, - "assignedSessions": { - "$ref": "#/components/schemas/SessionsUpdateManyWithoutAssignedToNestedInput" - }, - "createdSessions": { - "$ref": "#/components/schemas/SessionsUpdateManyWithoutCreatedByNestedInput" - }, - "sessionResults": { - "$ref": "#/components/schemas/SessionResultsUpdateManyWithoutCreatedByNestedInput" - }, - "testRunCreatedBy": { - "$ref": "#/components/schemas/TestRunsUpdateManyWithoutCreatedByNestedInput" - }, - "testRunCasesAssigned": { - "$ref": "#/components/schemas/TestRunCasesUpdateManyWithoutAssignedToNestedInput" - }, - "testRunResults": { - "$ref": "#/components/schemas/TestRunResultsUpdateManyWithoutExecutedByNestedInput" - }, - "editedTestRunResults": { - "$ref": "#/components/schemas/TestRunResultsUpdateManyWithoutEditedByNestedInput" - }, - "createdIssues": { - "$ref": "#/components/schemas/IssueUpdateManyWithoutCreatedByNestedInput" - }, - "projectPermissions": { - "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutUserNestedInput" - }, - "junitTestSuites": { - "$ref": "#/components/schemas/JUnitTestSuiteUpdateManyWithoutCreatedByNestedInput" - }, - "junitTestResults": { - "$ref": "#/components/schemas/JUnitTestResultUpdateManyWithoutCreatedByNestedInput" - }, - "junitProperties": { - "$ref": "#/components/schemas/JUnitPropertyUpdateManyWithoutCreatedByNestedInput" - }, - "junitAttachments": { - "$ref": "#/components/schemas/JUnitAttachmentUpdateManyWithoutCreatedByNestedInput" - }, - "junitTestSteps": { - "$ref": "#/components/schemas/JUnitTestStepUpdateManyWithoutCreatedByNestedInput" - }, - "createdCaseLinks": { - "$ref": "#/components/schemas/RepositoryCaseLinkUpdateManyWithoutCreatedByNestedInput" - }, - "createdSharedStepGroups": { - "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutCreatedByNestedInput" - }, - "notifications": { - "$ref": "#/components/schemas/NotificationUpdateManyWithoutUserNestedInput" - }, - "userIntegrationAuths": { - "$ref": "#/components/schemas/UserIntegrationAuthUpdateManyWithoutUserNestedInput" - }, - "createdEmailDomains": { - "$ref": "#/components/schemas/AllowedEmailDomainUpdateManyWithoutCreatorNestedInput" - }, - "llmUsages": { - "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutUserNestedInput" - }, - "testmoImportJobs": { - "$ref": "#/components/schemas/TestmoImportJobUpdateManyWithoutCreatedByNestedInput" - }, - "createdComments": { - "$ref": "#/components/schemas/CommentUpdateManyWithoutCreatorNestedInput" - }, - "commentMentions": { - "$ref": "#/components/schemas/CommentMentionUpdateManyWithoutUserNestedInput" - }, - "apiTokens": { - "$ref": "#/components/schemas/ApiTokenUpdateManyWithoutUserNestedInput" - }, - "createdShareLinks": { - "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutCreatedByNestedInput" - }, - "shareLinkAccessLogs": { - "$ref": "#/components/schemas/ShareLinkAccessLogUpdateManyWithoutAccessedByNestedInput" } - } + }, + "required": [ + "data" + ] }, - "UserUncheckedUpdateWithoutCreatedProjectsInput": { + "UserUpdateWithoutCreatedProjectsInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "email": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "emailVerified": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "emailVerifToken": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "emailTokenExpires": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "password": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "image": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "authMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/AuthMethod" + }, + { + "$ref": "#/components/schemas/EnumAuthMethodFieldUpdateOperationsInput" + } + ] + }, + "externalId": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "access": { + "oneOf": [ + { + "$ref": "#/components/schemas/Access" + }, + { + "$ref": "#/components/schemas/EnumAccessFieldUpdateOperationsInput" + } + ] + }, + "isActive": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isApi": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "lastActiveAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "lastSeenVersion": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "twoFactorEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "twoFactorSecret": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "twoFactorBackupCodes": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "accounts": { + "$ref": "#/components/schemas/AccountUpdateManyWithoutUserNestedInput" + }, + "role": { + "$ref": "#/components/schemas/RolesUpdateOneRequiredWithoutUsersNestedInput" + }, + "createdBy": { + "$ref": "#/components/schemas/UserUpdateOneWithoutCreatedUsersNestedInput" + }, + "userPreferences": { + "$ref": "#/components/schemas/UserPreferencesUpdateOneWithoutUserNestedInput" + }, + "createdUsers": { + "$ref": "#/components/schemas/UserUpdateManyWithoutCreatedByNestedInput" + }, + "projects": { + "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutUserNestedInput" + }, + "groups": { + "$ref": "#/components/schemas/GroupAssignmentUpdateManyWithoutUserNestedInput" + }, + "createdMilestones": { + "$ref": "#/components/schemas/MilestonesUpdateManyWithoutCreatorNestedInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUpdateManyWithoutCreatorNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutCreatorNestedInput" + }, + "attachments": { + "$ref": "#/components/schemas/AttachmentsUpdateManyWithoutCreatedByNestedInput" + }, + "assignedSessions": { + "$ref": "#/components/schemas/SessionsUpdateManyWithoutAssignedToNestedInput" + }, + "createdSessions": { + "$ref": "#/components/schemas/SessionsUpdateManyWithoutCreatedByNestedInput" + }, + "sessionResults": { + "$ref": "#/components/schemas/SessionResultsUpdateManyWithoutCreatedByNestedInput" + }, + "testRunCreatedBy": { + "$ref": "#/components/schemas/TestRunsUpdateManyWithoutCreatedByNestedInput" + }, + "testRunCasesAssigned": { + "$ref": "#/components/schemas/TestRunCasesUpdateManyWithoutAssignedToNestedInput" + }, + "testRunResults": { + "$ref": "#/components/schemas/TestRunResultsUpdateManyWithoutExecutedByNestedInput" + }, + "editedTestRunResults": { + "$ref": "#/components/schemas/TestRunResultsUpdateManyWithoutEditedByNestedInput" + }, + "createdIssues": { + "$ref": "#/components/schemas/IssueUpdateManyWithoutCreatedByNestedInput" + }, + "projectPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutUserNestedInput" + }, + "junitTestSuites": { + "$ref": "#/components/schemas/JUnitTestSuiteUpdateManyWithoutCreatedByNestedInput" + }, + "junitTestResults": { + "$ref": "#/components/schemas/JUnitTestResultUpdateManyWithoutCreatedByNestedInput" + }, + "junitProperties": { + "$ref": "#/components/schemas/JUnitPropertyUpdateManyWithoutCreatedByNestedInput" + }, + "junitAttachments": { + "$ref": "#/components/schemas/JUnitAttachmentUpdateManyWithoutCreatedByNestedInput" + }, + "junitTestSteps": { + "$ref": "#/components/schemas/JUnitTestStepUpdateManyWithoutCreatedByNestedInput" + }, + "createdCaseLinks": { + "$ref": "#/components/schemas/RepositoryCaseLinkUpdateManyWithoutCreatedByNestedInput" + }, + "createdSharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutCreatedByNestedInput" + }, + "notifications": { + "$ref": "#/components/schemas/NotificationUpdateManyWithoutUserNestedInput" + }, + "userIntegrationAuths": { + "$ref": "#/components/schemas/UserIntegrationAuthUpdateManyWithoutUserNestedInput" + }, + "createdEmailDomains": { + "$ref": "#/components/schemas/AllowedEmailDomainUpdateManyWithoutCreatorNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutUserNestedInput" + }, + "testmoImportJobs": { + "$ref": "#/components/schemas/TestmoImportJobUpdateManyWithoutCreatedByNestedInput" + }, + "createdComments": { + "$ref": "#/components/schemas/CommentUpdateManyWithoutCreatorNestedInput" + }, + "commentMentions": { + "$ref": "#/components/schemas/CommentMentionUpdateManyWithoutUserNestedInput" + }, + "apiTokens": { + "$ref": "#/components/schemas/ApiTokenUpdateManyWithoutUserNestedInput" + }, + "createdShareLinks": { + "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutCreatedByNestedInput" + }, + "shareLinkAccessLogs": { + "$ref": "#/components/schemas/ShareLinkAccessLogUpdateManyWithoutAccessedByNestedInput" + } + } + }, + "UserUncheckedUpdateWithoutCreatedProjectsInput": { "type": "object", "properties": { "id": { @@ -229654,6 +230726,387 @@ } } }, + "CaseExportTemplateUpsertWithoutDefaultForProjectsInput": { + "type": "object", + "properties": { + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateUpdateWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedUpdateWithoutDefaultForProjectsInput" + } + ] + }, + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateCreateWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedCreateWithoutDefaultForProjectsInput" + } + ] + }, + "where": { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + } + }, + "required": [ + "update", + "create" + ] + }, + "CaseExportTemplateUpdateToOneWithWhereWithoutDefaultForProjectsInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/CaseExportTemplateWhereInput" + }, + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateUpdateWithoutDefaultForProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedUpdateWithoutDefaultForProjectsInput" + } + ] + } + }, + "required": [ + "data" + ] + }, + "CaseExportTemplateUpdateWithoutDefaultForProjectsInput": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "category": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "framework": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "headerBody": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "templateBody": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "footerBody": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "fileExtension": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "isDefault": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "projects": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutTemplateNestedInput" + } + } + }, + "CaseExportTemplateUncheckedUpdateWithoutDefaultForProjectsInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "description": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "category": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "framework": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "headerBody": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "templateBody": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "footerBody": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "fileExtension": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "language": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "isDefault": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "projects": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutTemplateNestedInput" + } + } + }, "UserCreateWithoutProjectsInput": { "type": "object", "properties": { @@ -230338,6 +231791,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -230431,6 +231887,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -231582,6 +233048,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -231738,6 +233207,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -232146,6 +233628,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -232239,6 +233724,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -232918,6 +234413,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -233074,6 +234572,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -233432,6 +234943,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -233525,6 +235039,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -234147,6 +235671,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -234303,6 +235830,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -234542,6 +236082,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -234635,6 +236178,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -237401,6 +238954,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -237557,6 +239113,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -240561,6 +242130,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -240654,6 +242226,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -241097,6 +242679,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -241253,6 +242838,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -248860,6 +250458,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -248953,6 +250554,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -249495,6 +251106,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -249651,6 +251265,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -251547,263 +253174,7 @@ "data" ] }, - "CaseExportTemplateProjectAssignmentUpsertWithWhereUniqueWithoutTemplateInput": { - "type": "object", - "properties": { - "where": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" - }, - "update": { - "oneOf": [ - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateWithoutTemplateInput" - }, - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateWithoutTemplateInput" - } - ] - }, - "create": { - "oneOf": [ - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateWithoutTemplateInput" - }, - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateWithoutTemplateInput" - } - ] - } - }, - "required": [ - "where", - "update", - "create" - ] - }, - "CaseExportTemplateProjectAssignmentUpdateWithWhereUniqueWithoutTemplateInput": { - "type": "object", - "properties": { - "where": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" - }, - "data": { - "oneOf": [ - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateWithoutTemplateInput" - }, - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateWithoutTemplateInput" - } - ] - } - }, - "required": [ - "where", - "data" - ] - }, - "CaseExportTemplateProjectAssignmentUpdateManyWithWhereWithoutTemplateInput": { - "type": "object", - "properties": { - "where": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentScalarWhereInput" - }, - "data": { - "oneOf": [ - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyMutationInput" - }, - { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutTemplateInput" - } - ] - } - }, - "required": [ - "where", - "data" - ] - }, - "CaseExportTemplateCreateWithoutProjectsInput": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "category": { - "type": "string" - }, - "framework": { - "type": "string" - }, - "headerBody": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "templateBody": { - "type": "string" - }, - "footerBody": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "fileExtension": { - "type": "string" - }, - "language": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "isEnabled": { - "type": "boolean" - }, - "isDeleted": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "name", - "category", - "templateBody", - "fileExtension", - "language" - ] - }, - "CaseExportTemplateUncheckedCreateWithoutProjectsInput": { - "type": "object", - "properties": { - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "category": { - "type": "string" - }, - "framework": { - "type": "string" - }, - "headerBody": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "templateBody": { - "type": "string" - }, - "footerBody": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "fileExtension": { - "type": "string" - }, - "language": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "isEnabled": { - "type": "boolean" - }, - "isDeleted": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "name", - "category", - "templateBody", - "fileExtension", - "language" - ] - }, - "CaseExportTemplateCreateOrConnectWithoutProjectsInput": { - "type": "object", - "properties": { - "where": { - "$ref": "#/components/schemas/CaseExportTemplateWhereUniqueInput" - }, - "create": { - "oneOf": [ - { - "$ref": "#/components/schemas/CaseExportTemplateCreateWithoutProjectsInput" - }, - { - "$ref": "#/components/schemas/CaseExportTemplateUncheckedCreateWithoutProjectsInput" - } - ] - } - }, - "required": [ - "where", - "create" - ] - }, - "ProjectsCreateWithoutAssignedExportTemplatesInput": { + "ProjectsCreateWithoutDefaultCaseExportTemplateInput": { "type": "object", "properties": { "name": { @@ -251952,6 +253323,729 @@ }, "shareLinks": { "$ref": "#/components/schemas/ShareLinkCreateNestedManyWithoutProjectInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + } + }, + "required": [ + "name", + "creator" + ] + }, + "ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "iconUrl": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "isCompleted": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "completedAt": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ] + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "defaultAccessType": { + "$ref": "#/components/schemas/ProjectAccessType" + }, + "defaultRoleId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, + "promptConfigId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "quickScriptEnabled": { + "type": "boolean" + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUncheckedCreateNestedManyWithoutProjectInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUncheckedCreateNestedManyWithoutProjectInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUncheckedCreateNestedManyWithoutProjectInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUncheckedCreateNestedManyWithoutProjectInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUncheckedCreateNestedManyWithoutProjectInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUncheckedCreateNestedManyWithoutProjectInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUncheckedCreateNestedManyWithoutProjectInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUncheckedCreateNestedManyWithoutProjectInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUncheckedCreateNestedManyWithoutProjectInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUncheckedCreateNestedManyWithoutProjectInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUncheckedCreateNestedManyWithoutProjectInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUncheckedCreateNestedManyWithoutProjectInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsUncheckedCreateNestedManyWithoutProjectInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUncheckedCreateNestedManyWithoutProjectInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUncheckedCreateNestedManyWithoutProjectInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUncheckedCreateNestedManyWithoutProjectInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUncheckedCreateNestedManyWithoutProjectInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUncheckedCreateNestedManyWithoutProjectInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUncheckedCreateNestedOneWithoutProjectInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUncheckedCreateNestedManyWithoutProjectInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUncheckedCreateNestedManyWithoutProjectInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUncheckedCreateNestedManyWithoutProjectInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUncheckedCreateNestedManyWithoutProjectInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUncheckedCreateNestedManyWithoutProjectInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUncheckedCreateNestedManyWithoutProjectInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUncheckedCreateNestedManyWithoutProjectInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateNestedManyWithoutProjectInput" + } + }, + "required": [ + "name", + "createdBy" + ] + }, + "ProjectsCreateOrConnectWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + } + ] + } + }, + "required": [ + "where", + "create" + ] + }, + "ProjectsCreateManyDefaultCaseExportTemplateInputEnvelope": { + "type": "object", + "properties": { + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateManyDefaultCaseExportTemplateInput" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectsCreateManyDefaultCaseExportTemplateInput" + } + } + ] + }, + "skipDuplicates": { + "type": "boolean" + } + }, + "required": [ + "data" + ] + }, + "CaseExportTemplateProjectAssignmentUpsertWithWhereUniqueWithoutTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateWithoutTemplateInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateWithoutTemplateInput" + } + ] + }, + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateWithoutTemplateInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedCreateWithoutTemplateInput" + } + ] + } + }, + "required": [ + "where", + "update", + "create" + ] + }, + "CaseExportTemplateProjectAssignmentUpdateWithWhereUniqueWithoutTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentWhereUniqueInput" + }, + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateWithoutTemplateInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateWithoutTemplateInput" + } + ] + } + }, + "required": [ + "where", + "data" + ] + }, + "CaseExportTemplateProjectAssignmentUpdateManyWithWhereWithoutTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentScalarWhereInput" + }, + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyMutationInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutTemplateInput" + } + ] + } + }, + "required": [ + "where", + "data" + ] + }, + "ProjectsUpsertWithWhereUniqueWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + "update": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateWithoutDefaultCaseExportTemplateInput" + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedUpdateWithoutDefaultCaseExportTemplateInput" + } + ] + }, + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsCreateWithoutDefaultCaseExportTemplateInput" + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedCreateWithoutDefaultCaseExportTemplateInput" + } + ] + } + }, + "required": [ + "where", + "update", + "create" + ] + }, + "ProjectsUpdateWithWhereUniqueWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/ProjectsWhereUniqueInput" + }, + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateWithoutDefaultCaseExportTemplateInput" + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedUpdateWithoutDefaultCaseExportTemplateInput" + } + ] + } + }, + "required": [ + "where", + "data" + ] + }, + "ProjectsUpdateManyWithWhereWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/ProjectsScalarWhereInput" + }, + "data": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectsUpdateManyMutationInput" + }, + { + "$ref": "#/components/schemas/ProjectsUncheckedUpdateManyWithoutDefaultCaseExportTemplateInput" + } + ] + } + }, + "required": [ + "where", + "data" + ] + }, + "CaseExportTemplateCreateWithoutProjectsInput": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "category": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "headerBody": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "templateBody": { + "type": "string" + }, + "footerBody": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "fileExtension": { + "type": "string" + }, + "language": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsCreateNestedManyWithoutDefaultCaseExportTemplateInput" + } + }, + "required": [ + "name", + "category", + "templateBody", + "fileExtension", + "language" + ] + }, + "CaseExportTemplateUncheckedCreateWithoutProjectsInput": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "category": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "headerBody": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "templateBody": { + "type": "string" + }, + "footerBody": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "fileExtension": { + "type": "string" + }, + "language": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsUncheckedCreateNestedManyWithoutDefaultCaseExportTemplateInput" + } + }, + "required": [ + "name", + "category", + "templateBody", + "fileExtension", + "language" + ] + }, + "CaseExportTemplateCreateOrConnectWithoutProjectsInput": { + "type": "object", + "properties": { + "where": { + "$ref": "#/components/schemas/CaseExportTemplateWhereUniqueInput" + }, + "create": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaseExportTemplateCreateWithoutProjectsInput" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateUncheckedCreateWithoutProjectsInput" + } + ] + } + }, + "required": [ + "where", + "create" + ] + }, + "ProjectsCreateWithoutAssignedExportTemplatesInput": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "iconUrl": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "isCompleted": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "completedAt": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ] + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "defaultAccessType": { + "$ref": "#/components/schemas/ProjectAccessType" + }, + "quickScriptEnabled": { + "type": "boolean" + }, + "creator": { + "$ref": "#/components/schemas/UserCreateNestedOneWithoutCreatedProjectsInput" + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentCreateNestedManyWithoutProjectInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentCreateNestedManyWithoutProjectInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentCreateNestedManyWithoutProjectInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesCreateNestedManyWithoutProjectInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesCreateNestedManyWithoutProjectInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersCreateNestedManyWithoutProjectInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesCreateNestedManyWithoutProjectInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsCreateNestedManyWithoutProjectInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsCreateNestedManyWithoutProjectInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsCreateNestedManyWithoutProjectInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsCreateNestedManyWithoutProjectInput" + }, + "defaultRole": { + "$ref": "#/components/schemas/RolesCreateNestedOneWithoutDefaultForProjectsInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionCreateNestedManyWithoutProjectInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionCreateNestedManyWithoutProjectInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupCreateNestedManyWithoutProjectInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationCreateNestedManyWithoutProjectInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationCreateNestedManyWithoutProjectInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigCreateNestedOneWithoutProjectInput" + }, + "promptConfig": { + "$ref": "#/components/schemas/PromptConfigCreateNestedOneWithoutProjectsInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueCreateNestedManyWithoutProjectInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageCreateNestedManyWithoutProjectInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigCreateNestedManyWithoutProjectInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheCreateNestedManyWithoutProjectInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentCreateNestedManyWithoutProjectInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogCreateNestedManyWithoutProjectInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -252045,6 +254139,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -252360,6 +254464,9 @@ "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" } ] + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsUpdateManyWithoutDefaultCaseExportTemplateNestedInput" } } }, @@ -252526,6 +254633,9 @@ "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" } ] + }, + "defaultForProjects": { + "$ref": "#/components/schemas/ProjectsUncheckedUpdateManyWithoutDefaultCaseExportTemplateNestedInput" } } }, @@ -252785,6 +254895,9 @@ }, "shareLinks": { "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -252941,6 +255054,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -262973,6 +265099,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -263066,6 +265195,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -263904,6 +266043,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -264060,6 +266202,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -264453,6 +266608,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -264546,6 +266704,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -266005,129 +268173,226 @@ } ] }, - "defaultAccessType": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProjectAccessType" - }, - { - "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" - } - ] - }, - "quickScriptEnabled": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "creator": { - "$ref": "#/components/schemas/UserUpdateOneRequiredWithoutCreatedProjectsNestedInput" - }, - "assignedUsers": { - "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutProjectNestedInput" - }, - "assignedStatuses": { - "$ref": "#/components/schemas/ProjectStatusAssignmentUpdateManyWithoutProjectNestedInput" - }, - "milestoneTypes": { - "$ref": "#/components/schemas/MilestoneTypesAssignmentUpdateManyWithoutProjectNestedInput" - }, - "assignedTemplates": { - "$ref": "#/components/schemas/TemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" - }, - "assignedWorkflows": { - "$ref": "#/components/schemas/ProjectWorkflowAssignmentUpdateManyWithoutProjectNestedInput" - }, - "milestones": { - "$ref": "#/components/schemas/MilestonesUpdateManyWithoutProjectNestedInput" - }, - "repositories": { - "$ref": "#/components/schemas/RepositoriesUpdateManyWithoutProjectNestedInput" - }, - "repositoryCases": { - "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutProjectNestedInput" - }, - "repositoryCaseVersions": { - "$ref": "#/components/schemas/RepositoryCaseVersionsUpdateManyWithoutProjectNestedInput" - }, - "sessions": { - "$ref": "#/components/schemas/SessionsUpdateManyWithoutProjectNestedInput" - }, - "sessionVersions": { - "$ref": "#/components/schemas/SessionVersionsUpdateManyWithoutProjectNestedInput" - }, - "testRuns": { - "$ref": "#/components/schemas/TestRunsUpdateManyWithoutProjectNestedInput" - }, - "defaultRole": { - "$ref": "#/components/schemas/RolesUpdateOneWithoutDefaultForProjectsNestedInput" - }, - "userPermissions": { - "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutProjectNestedInput" - }, - "groupPermissions": { - "$ref": "#/components/schemas/GroupProjectPermissionUpdateManyWithoutProjectNestedInput" - }, - "sharedStepGroups": { - "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutProjectNestedInput" - }, - "projectIntegrations": { - "$ref": "#/components/schemas/ProjectIntegrationUpdateManyWithoutProjectNestedInput" - }, - "projectLlmIntegrations": { - "$ref": "#/components/schemas/ProjectLlmIntegrationUpdateManyWithoutProjectNestedInput" - }, - "codeRepositoryConfig": { - "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUpdateOneWithoutProjectNestedInput" - }, - "promptConfig": { - "$ref": "#/components/schemas/PromptConfigUpdateOneWithoutProjectsNestedInput" - }, - "issues": { - "$ref": "#/components/schemas/IssueUpdateManyWithoutProjectNestedInput" - }, - "llmUsages": { - "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutProjectNestedInput" - }, - "llmFeatureConfigs": { - "$ref": "#/components/schemas/LlmFeatureConfigUpdateManyWithoutProjectNestedInput" - }, - "llmResponseCaches": { - "$ref": "#/components/schemas/LlmResponseCacheUpdateManyWithoutProjectNestedInput" - }, - "comments": { - "$ref": "#/components/schemas/CommentUpdateManyWithoutProjectNestedInput" - }, - "auditLogs": { - "$ref": "#/components/schemas/AuditLogUpdateManyWithoutProjectNestedInput" - }, - "shareLinks": { - "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutProjectNestedInput" - }, - "assignedExportTemplates": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" - } - } - }, - "ProjectsUncheckedUpdateWithoutRepositoryFoldersInput": { - "type": "object", - "properties": { - "id": { - "oneOf": [ - { - "type": "integer" - }, - { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" - } - ] - }, - "name": { + "defaultAccessType": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectAccessType" + }, + { + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "creator": { + "$ref": "#/components/schemas/UserUpdateOneRequiredWithoutCreatedProjectsNestedInput" + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUpdateManyWithoutProjectNestedInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUpdateManyWithoutProjectNestedInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUpdateManyWithoutProjectNestedInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUpdateManyWithoutProjectNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutProjectNestedInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUpdateManyWithoutProjectNestedInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUpdateManyWithoutProjectNestedInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUpdateManyWithoutProjectNestedInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsUpdateManyWithoutProjectNestedInput" + }, + "defaultRole": { + "$ref": "#/components/schemas/RolesUpdateOneWithoutDefaultForProjectsNestedInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutProjectNestedInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUpdateManyWithoutProjectNestedInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutProjectNestedInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUpdateManyWithoutProjectNestedInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUpdateManyWithoutProjectNestedInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUpdateOneWithoutProjectNestedInput" + }, + "promptConfig": { + "$ref": "#/components/schemas/PromptConfigUpdateOneWithoutProjectsNestedInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUpdateManyWithoutProjectNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutProjectNestedInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUpdateManyWithoutProjectNestedInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUpdateManyWithoutProjectNestedInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUpdateManyWithoutProjectNestedInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUpdateManyWithoutProjectNestedInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutProjectNestedInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" + } + } + }, + "ProjectsUncheckedUpdateWithoutRepositoryFoldersInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "createdBy": { "oneOf": [ { "type": "string" @@ -266137,33 +268402,30 @@ } ] }, - "iconUrl": { + "defaultAccessType": { "oneOf": [ { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + "$ref": "#/components/schemas/ProjectAccessType" }, { - "type": "null" + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" } ] }, - "note": { + "defaultRoleId": { "oneOf": [ { - "type": "string" + "type": "integer" }, { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" }, { "type": "null" } ] }, - "docs": { + "promptConfigId": { "oneOf": [ { "type": "string" @@ -266176,72 +268438,7 @@ } ] }, - "isCompleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "isDeleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "completedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" - } - ] - }, - "createdBy": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] - }, - "defaultAccessType": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProjectAccessType" - }, - { - "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" - } - ] - }, - "defaultRoleId": { + "defaultCaseExportTemplateId": { "oneOf": [ { "type": "integer" @@ -266254,19 +268451,6 @@ } ] }, - "promptConfigId": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, "quickScriptEnabled": { "oneOf": [ { @@ -270759,6 +272943,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -270852,6 +273039,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -274736,6 +276933,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -274892,6 +277092,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -278356,6 +280569,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -278449,6 +280665,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -279402,6 +281628,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -279558,6 +281787,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -291520,6 +293762,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -291613,6 +293858,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -295133,6 +297388,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -295289,6 +297547,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -302485,6 +304756,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -302578,6 +304852,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -303418,6 +305702,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -303574,6 +305861,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -305207,6 +307507,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -305300,6 +307603,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -308122,129 +310435,226 @@ } ] }, - "defaultAccessType": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProjectAccessType" - }, - { - "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" - } - ] - }, - "quickScriptEnabled": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "creator": { - "$ref": "#/components/schemas/UserUpdateOneRequiredWithoutCreatedProjectsNestedInput" - }, - "assignedUsers": { - "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutProjectNestedInput" - }, - "assignedStatuses": { - "$ref": "#/components/schemas/ProjectStatusAssignmentUpdateManyWithoutProjectNestedInput" - }, - "milestoneTypes": { - "$ref": "#/components/schemas/MilestoneTypesAssignmentUpdateManyWithoutProjectNestedInput" - }, - "assignedTemplates": { - "$ref": "#/components/schemas/TemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" - }, - "assignedWorkflows": { - "$ref": "#/components/schemas/ProjectWorkflowAssignmentUpdateManyWithoutProjectNestedInput" - }, - "milestones": { - "$ref": "#/components/schemas/MilestonesUpdateManyWithoutProjectNestedInput" - }, - "repositories": { - "$ref": "#/components/schemas/RepositoriesUpdateManyWithoutProjectNestedInput" - }, - "repositoryFolders": { - "$ref": "#/components/schemas/RepositoryFoldersUpdateManyWithoutProjectNestedInput" - }, - "repositoryCases": { - "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutProjectNestedInput" - }, - "repositoryCaseVersions": { - "$ref": "#/components/schemas/RepositoryCaseVersionsUpdateManyWithoutProjectNestedInput" - }, - "sessions": { - "$ref": "#/components/schemas/SessionsUpdateManyWithoutProjectNestedInput" - }, - "sessionVersions": { - "$ref": "#/components/schemas/SessionVersionsUpdateManyWithoutProjectNestedInput" - }, - "defaultRole": { - "$ref": "#/components/schemas/RolesUpdateOneWithoutDefaultForProjectsNestedInput" - }, - "userPermissions": { - "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutProjectNestedInput" - }, - "groupPermissions": { - "$ref": "#/components/schemas/GroupProjectPermissionUpdateManyWithoutProjectNestedInput" - }, - "sharedStepGroups": { - "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutProjectNestedInput" - }, - "projectIntegrations": { - "$ref": "#/components/schemas/ProjectIntegrationUpdateManyWithoutProjectNestedInput" - }, - "projectLlmIntegrations": { - "$ref": "#/components/schemas/ProjectLlmIntegrationUpdateManyWithoutProjectNestedInput" - }, - "codeRepositoryConfig": { - "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUpdateOneWithoutProjectNestedInput" - }, - "promptConfig": { - "$ref": "#/components/schemas/PromptConfigUpdateOneWithoutProjectsNestedInput" - }, - "issues": { - "$ref": "#/components/schemas/IssueUpdateManyWithoutProjectNestedInput" - }, - "llmUsages": { - "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutProjectNestedInput" - }, - "llmFeatureConfigs": { - "$ref": "#/components/schemas/LlmFeatureConfigUpdateManyWithoutProjectNestedInput" - }, - "llmResponseCaches": { - "$ref": "#/components/schemas/LlmResponseCacheUpdateManyWithoutProjectNestedInput" - }, - "comments": { - "$ref": "#/components/schemas/CommentUpdateManyWithoutProjectNestedInput" - }, - "auditLogs": { - "$ref": "#/components/schemas/AuditLogUpdateManyWithoutProjectNestedInput" - }, - "shareLinks": { - "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutProjectNestedInput" - }, - "assignedExportTemplates": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" - } - } - }, - "ProjectsUncheckedUpdateWithoutTestRunsInput": { - "type": "object", - "properties": { - "id": { - "oneOf": [ - { - "type": "integer" - }, - { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" - } - ] - }, - "name": { + "defaultAccessType": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectAccessType" + }, + { + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "creator": { + "$ref": "#/components/schemas/UserUpdateOneRequiredWithoutCreatedProjectsNestedInput" + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUpdateManyWithoutProjectNestedInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUpdateManyWithoutProjectNestedInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUpdateManyWithoutProjectNestedInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUpdateManyWithoutProjectNestedInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUpdateManyWithoutProjectNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutProjectNestedInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUpdateManyWithoutProjectNestedInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUpdateManyWithoutProjectNestedInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUpdateManyWithoutProjectNestedInput" + }, + "defaultRole": { + "$ref": "#/components/schemas/RolesUpdateOneWithoutDefaultForProjectsNestedInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutProjectNestedInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUpdateManyWithoutProjectNestedInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutProjectNestedInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUpdateManyWithoutProjectNestedInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUpdateManyWithoutProjectNestedInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUpdateOneWithoutProjectNestedInput" + }, + "promptConfig": { + "$ref": "#/components/schemas/PromptConfigUpdateOneWithoutProjectsNestedInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUpdateManyWithoutProjectNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutProjectNestedInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUpdateManyWithoutProjectNestedInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUpdateManyWithoutProjectNestedInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUpdateManyWithoutProjectNestedInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUpdateManyWithoutProjectNestedInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutProjectNestedInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" + } + } + }, + "ProjectsUncheckedUpdateWithoutTestRunsInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "createdBy": { "oneOf": [ { "type": "string" @@ -308254,33 +310664,30 @@ } ] }, - "iconUrl": { + "defaultAccessType": { "oneOf": [ { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + "$ref": "#/components/schemas/ProjectAccessType" }, { - "type": "null" + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" } ] }, - "note": { + "defaultRoleId": { "oneOf": [ { - "type": "string" + "type": "integer" }, { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" }, { "type": "null" } ] }, - "docs": { + "promptConfigId": { "oneOf": [ { "type": "string" @@ -308293,72 +310700,7 @@ } ] }, - "isCompleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "isDeleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "completedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" - } - ] - }, - "createdBy": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] - }, - "defaultAccessType": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProjectAccessType" - }, - { - "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" - } - ] - }, - "defaultRoleId": { + "defaultCaseExportTemplateId": { "oneOf": [ { "type": "integer" @@ -308371,19 +310713,6 @@ } ] }, - "promptConfigId": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, "quickScriptEnabled": { "oneOf": [ { @@ -324212,6 +326541,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -324305,6 +326637,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -326077,6 +328419,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -326233,6 +328578,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -328299,6 +330657,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -328392,6 +330753,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -328896,6 +331267,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -329052,6 +331426,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -332474,6 +334861,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -332567,6 +334957,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -333085,6 +335485,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -333241,6 +335644,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -336289,6 +338705,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -336382,6 +338801,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -337616,6 +340045,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -337772,6 +340204,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -338287,6 +340732,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -338380,6 +340828,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -339025,6 +341483,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -339181,6 +341642,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -354544,6 +357018,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -354637,6 +357114,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -355787,6 +358274,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -355943,6 +358433,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -359110,6 +361613,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -359203,6 +361709,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -360232,6 +362748,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -360388,6 +362907,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -363548,6 +366080,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -363641,6 +366176,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -364165,6 +366710,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -364321,6 +366869,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -365401,6 +367962,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -365484,6 +368048,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -366975,6 +369549,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -367068,6 +369645,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -368233,6 +370820,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -368389,6 +370979,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -369414,6 +372017,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -369507,6 +372113,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -370025,6 +372641,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -370181,6 +372800,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -370685,6 +373317,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -370778,6 +373413,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -371296,6 +373941,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -371452,6 +374100,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -377501,6 +380162,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -377594,6 +380258,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -379721,6 +382395,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -379877,6 +382554,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -384549,6 +387239,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentCreateNestedManyWithoutProjectInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateCreateNestedOneWithoutDefaultForProjectsInput" } }, "required": [ @@ -384642,6 +387335,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -385007,6 +387710,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -385163,6 +387869,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -385584,6 +388303,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" } @@ -389759,6 +392488,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -389905,217 +392637,256 @@ } ] }, - "quickScriptEnabled": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "assignedUsers": { - "$ref": "#/components/schemas/ProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedStatuses": { - "$ref": "#/components/schemas/ProjectStatusAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "milestoneTypes": { - "$ref": "#/components/schemas/MilestoneTypesAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedTemplates": { - "$ref": "#/components/schemas/TemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedWorkflows": { - "$ref": "#/components/schemas/ProjectWorkflowAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "milestones": { - "$ref": "#/components/schemas/MilestonesUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositories": { - "$ref": "#/components/schemas/RepositoriesUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositoryFolders": { - "$ref": "#/components/schemas/RepositoryFoldersUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositoryCases": { - "$ref": "#/components/schemas/RepositoryCasesUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositoryCaseVersions": { - "$ref": "#/components/schemas/RepositoryCaseVersionsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "sessions": { - "$ref": "#/components/schemas/SessionsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "sessionVersions": { - "$ref": "#/components/schemas/SessionVersionsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "testRuns": { - "$ref": "#/components/schemas/TestRunsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "userPermissions": { - "$ref": "#/components/schemas/UserProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" - }, - "groupPermissions": { - "$ref": "#/components/schemas/GroupProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" - }, - "sharedStepGroups": { - "$ref": "#/components/schemas/SharedStepGroupUncheckedUpdateManyWithoutProjectNestedInput" - }, - "projectIntegrations": { - "$ref": "#/components/schemas/ProjectIntegrationUncheckedUpdateManyWithoutProjectNestedInput" - }, - "projectLlmIntegrations": { - "$ref": "#/components/schemas/ProjectLlmIntegrationUncheckedUpdateManyWithoutProjectNestedInput" - }, - "codeRepositoryConfig": { - "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUncheckedUpdateOneWithoutProjectNestedInput" - }, - "issues": { - "$ref": "#/components/schemas/IssueUncheckedUpdateManyWithoutProjectNestedInput" - }, - "llmUsages": { - "$ref": "#/components/schemas/LlmUsageUncheckedUpdateManyWithoutProjectNestedInput" - }, - "llmFeatureConfigs": { - "$ref": "#/components/schemas/LlmFeatureConfigUncheckedUpdateManyWithoutProjectNestedInput" - }, - "llmResponseCaches": { - "$ref": "#/components/schemas/LlmResponseCacheUncheckedUpdateManyWithoutProjectNestedInput" - }, - "comments": { - "$ref": "#/components/schemas/CommentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "auditLogs": { - "$ref": "#/components/schemas/AuditLogUncheckedUpdateManyWithoutProjectNestedInput" - }, - "shareLinks": { - "$ref": "#/components/schemas/ShareLinkUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedExportTemplates": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - } - } - }, - "ProjectsUncheckedUpdateManyWithoutCreatorInput": { - "type": "object", - "properties": { - "id": { - "oneOf": [ - { - "type": "integer" - }, - { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" - } - ] - }, - "name": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] - }, - "iconUrl": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "note": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "docs": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "isCompleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "isDeleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "completedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" - } - ] - }, - "defaultAccessType": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProjectAccessType" - }, - { - "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" - } - ] - }, - "defaultRoleId": { + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUncheckedUpdateManyWithoutProjectNestedInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUncheckedUpdateManyWithoutProjectNestedInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUncheckedUpdateManyWithoutProjectNestedInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUncheckedUpdateOneWithoutProjectNestedInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUncheckedUpdateManyWithoutProjectNestedInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUncheckedUpdateManyWithoutProjectNestedInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + } + } + }, + "ProjectsUncheckedUpdateManyWithoutCreatorInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "defaultAccessType": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectAccessType" + }, + { + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" + } + ] + }, + "defaultRoleId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "promptConfigId": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "defaultCaseExportTemplateId": { "oneOf": [ { "type": "integer" @@ -390128,19 +392899,6 @@ } ] }, - "promptConfigId": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, "quickScriptEnabled": { "oneOf": [ { @@ -402864,6 +405622,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" } @@ -404233,6 +407001,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -404376,6 +407147,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -404609,6 +407393,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -425275,7 +428072,735 @@ } ] }, - "createdById": { + "createdById": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "currentVersion": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + } + } + }, + "CaseExportTemplateProjectAssignmentCreateManyTemplateInput": { + "type": "object", + "properties": { + "projectId": { + "type": "integer" + } + }, + "required": [ + "projectId" + ] + }, + "ProjectsCreateManyDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "iconUrl": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "isCompleted": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "completedAt": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date-time" + } + ] + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "defaultAccessType": { + "$ref": "#/components/schemas/ProjectAccessType" + }, + "defaultRoleId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, + "promptConfigId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "quickScriptEnabled": { + "type": "boolean" + } + }, + "required": [ + "name", + "createdBy" + ] + }, + "CaseExportTemplateProjectAssignmentUpdateWithoutTemplateInput": { + "type": "object", + "properties": { + "project": { + "$ref": "#/components/schemas/ProjectsUpdateOneRequiredWithoutAssignedExportTemplatesNestedInput" + } + } + }, + "CaseExportTemplateProjectAssignmentUncheckedUpdateWithoutTemplateInput": { + "type": "object", + "properties": { + "projectId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + } + } + }, + "CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutTemplateInput": { + "type": "object", + "properties": { + "projectId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + } + } + }, + "ProjectsUpdateWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "defaultAccessType": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectAccessType" + }, + { + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "creator": { + "$ref": "#/components/schemas/UserUpdateOneRequiredWithoutCreatedProjectsNestedInput" + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUpdateManyWithoutProjectNestedInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUpdateManyWithoutProjectNestedInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUpdateManyWithoutProjectNestedInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUpdateManyWithoutProjectNestedInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUpdateManyWithoutProjectNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUpdateManyWithoutProjectNestedInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUpdateManyWithoutProjectNestedInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUpdateManyWithoutProjectNestedInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUpdateManyWithoutProjectNestedInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsUpdateManyWithoutProjectNestedInput" + }, + "defaultRole": { + "$ref": "#/components/schemas/RolesUpdateOneWithoutDefaultForProjectsNestedInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUpdateManyWithoutProjectNestedInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUpdateManyWithoutProjectNestedInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUpdateManyWithoutProjectNestedInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUpdateManyWithoutProjectNestedInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUpdateManyWithoutProjectNestedInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUpdateOneWithoutProjectNestedInput" + }, + "promptConfig": { + "$ref": "#/components/schemas/PromptConfigUpdateOneWithoutProjectsNestedInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUpdateManyWithoutProjectNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUpdateManyWithoutProjectNestedInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUpdateManyWithoutProjectNestedInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUpdateManyWithoutProjectNestedInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUpdateManyWithoutProjectNestedInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUpdateManyWithoutProjectNestedInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUpdateManyWithoutProjectNestedInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + } + } + }, + "ProjectsUncheckedUpdateWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "createdBy": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "defaultAccessType": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectAccessType" + }, + { + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" + } + ] + }, + "defaultRoleId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "promptConfigId": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUncheckedUpdateManyWithoutProjectNestedInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUncheckedUpdateManyWithoutProjectNestedInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUncheckedUpdateManyWithoutProjectNestedInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUncheckedUpdateOneWithoutProjectNestedInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUncheckedUpdateManyWithoutProjectNestedInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUncheckedUpdateManyWithoutProjectNestedInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + } + } + }, + "ProjectsUncheckedUpdateManyWithoutDefaultCaseExportTemplateInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "createdBy": { "oneOf": [ { "type": "string" @@ -425285,62 +428810,49 @@ } ] }, - "currentVersion": { + "defaultAccessType": { "oneOf": [ { - "type": "integer" + "$ref": "#/components/schemas/ProjectAccessType" }, { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" } ] - } - } - }, - "CaseExportTemplateProjectAssignmentCreateManyTemplateInput": { - "type": "object", - "properties": { - "projectId": { - "type": "integer" - } - }, - "required": [ - "projectId" - ] - }, - "CaseExportTemplateProjectAssignmentUpdateWithoutTemplateInput": { - "type": "object", - "properties": { - "project": { - "$ref": "#/components/schemas/ProjectsUpdateOneRequiredWithoutAssignedExportTemplatesNestedInput" - } - } - }, - "CaseExportTemplateProjectAssignmentUncheckedUpdateWithoutTemplateInput": { - "type": "object", - "properties": { - "projectId": { + }, + "defaultRoleId": { "oneOf": [ { "type": "integer" }, { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" } ] - } - } - }, - "CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutTemplateInput": { - "type": "object", - "properties": { - "projectId": { + }, + "promptConfigId": { "oneOf": [ { - "type": "integer" + "type": "string" }, { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" } ] } @@ -465624,6 +469136,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" } @@ -466121,6 +469643,9 @@ }, "assignedExportTemplates": { "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUpdateManyWithoutProjectNestedInput" + }, + "defaultCaseExportTemplate": { + "$ref": "#/components/schemas/CaseExportTemplateUpdateOneWithoutDefaultForProjectsNestedInput" } } }, @@ -466264,227 +469789,253 @@ } ] }, - "quickScriptEnabled": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "assignedUsers": { - "$ref": "#/components/schemas/ProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedStatuses": { - "$ref": "#/components/schemas/ProjectStatusAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "milestoneTypes": { - "$ref": "#/components/schemas/MilestoneTypesAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedTemplates": { - "$ref": "#/components/schemas/TemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedWorkflows": { - "$ref": "#/components/schemas/ProjectWorkflowAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "milestones": { - "$ref": "#/components/schemas/MilestonesUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositories": { - "$ref": "#/components/schemas/RepositoriesUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositoryFolders": { - "$ref": "#/components/schemas/RepositoryFoldersUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositoryCases": { - "$ref": "#/components/schemas/RepositoryCasesUncheckedUpdateManyWithoutProjectNestedInput" - }, - "repositoryCaseVersions": { - "$ref": "#/components/schemas/RepositoryCaseVersionsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "sessions": { - "$ref": "#/components/schemas/SessionsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "sessionVersions": { - "$ref": "#/components/schemas/SessionVersionsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "testRuns": { - "$ref": "#/components/schemas/TestRunsUncheckedUpdateManyWithoutProjectNestedInput" - }, - "userPermissions": { - "$ref": "#/components/schemas/UserProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" - }, - "groupPermissions": { - "$ref": "#/components/schemas/GroupProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" - }, - "sharedStepGroups": { - "$ref": "#/components/schemas/SharedStepGroupUncheckedUpdateManyWithoutProjectNestedInput" - }, - "projectIntegrations": { - "$ref": "#/components/schemas/ProjectIntegrationUncheckedUpdateManyWithoutProjectNestedInput" - }, - "projectLlmIntegrations": { - "$ref": "#/components/schemas/ProjectLlmIntegrationUncheckedUpdateManyWithoutProjectNestedInput" - }, - "codeRepositoryConfig": { - "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUncheckedUpdateOneWithoutProjectNestedInput" - }, - "issues": { - "$ref": "#/components/schemas/IssueUncheckedUpdateManyWithoutProjectNestedInput" - }, - "llmUsages": { - "$ref": "#/components/schemas/LlmUsageUncheckedUpdateManyWithoutProjectNestedInput" - }, - "llmFeatureConfigs": { - "$ref": "#/components/schemas/LlmFeatureConfigUncheckedUpdateManyWithoutProjectNestedInput" - }, - "llmResponseCaches": { - "$ref": "#/components/schemas/LlmResponseCacheUncheckedUpdateManyWithoutProjectNestedInput" - }, - "comments": { - "$ref": "#/components/schemas/CommentUncheckedUpdateManyWithoutProjectNestedInput" - }, - "auditLogs": { - "$ref": "#/components/schemas/AuditLogUncheckedUpdateManyWithoutProjectNestedInput" - }, - "shareLinks": { - "$ref": "#/components/schemas/ShareLinkUncheckedUpdateManyWithoutProjectNestedInput" - }, - "assignedExportTemplates": { - "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" - } - } - }, - "ProjectsUncheckedUpdateManyWithoutPromptConfigInput": { - "type": "object", - "properties": { - "id": { - "oneOf": [ - { - "type": "integer" - }, - { - "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" - } - ] - }, - "name": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] - }, - "iconUrl": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "note": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "docs": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "isCompleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "isDeleted": { - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" - } - ] - }, - "completedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" - } - ] - }, - "createdBy": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" - } - ] - }, - "defaultAccessType": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProjectAccessType" - }, - { - "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" - } - ] - }, - "defaultRoleId": { + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "quickScriptEnabled": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "assignedUsers": { + "$ref": "#/components/schemas/ProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedStatuses": { + "$ref": "#/components/schemas/ProjectStatusAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "milestoneTypes": { + "$ref": "#/components/schemas/MilestoneTypesAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedTemplates": { + "$ref": "#/components/schemas/TemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedWorkflows": { + "$ref": "#/components/schemas/ProjectWorkflowAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "milestones": { + "$ref": "#/components/schemas/MilestonesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositories": { + "$ref": "#/components/schemas/RepositoriesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryFolders": { + "$ref": "#/components/schemas/RepositoryFoldersUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryCases": { + "$ref": "#/components/schemas/RepositoryCasesUncheckedUpdateManyWithoutProjectNestedInput" + }, + "repositoryCaseVersions": { + "$ref": "#/components/schemas/RepositoryCaseVersionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sessions": { + "$ref": "#/components/schemas/SessionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sessionVersions": { + "$ref": "#/components/schemas/SessionVersionsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "testRuns": { + "$ref": "#/components/schemas/TestRunsUncheckedUpdateManyWithoutProjectNestedInput" + }, + "userPermissions": { + "$ref": "#/components/schemas/UserProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" + }, + "groupPermissions": { + "$ref": "#/components/schemas/GroupProjectPermissionUncheckedUpdateManyWithoutProjectNestedInput" + }, + "sharedStepGroups": { + "$ref": "#/components/schemas/SharedStepGroupUncheckedUpdateManyWithoutProjectNestedInput" + }, + "projectIntegrations": { + "$ref": "#/components/schemas/ProjectIntegrationUncheckedUpdateManyWithoutProjectNestedInput" + }, + "projectLlmIntegrations": { + "$ref": "#/components/schemas/ProjectLlmIntegrationUncheckedUpdateManyWithoutProjectNestedInput" + }, + "codeRepositoryConfig": { + "$ref": "#/components/schemas/ProjectCodeRepositoryConfigUncheckedUpdateOneWithoutProjectNestedInput" + }, + "issues": { + "$ref": "#/components/schemas/IssueUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmUsages": { + "$ref": "#/components/schemas/LlmUsageUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmFeatureConfigs": { + "$ref": "#/components/schemas/LlmFeatureConfigUncheckedUpdateManyWithoutProjectNestedInput" + }, + "llmResponseCaches": { + "$ref": "#/components/schemas/LlmResponseCacheUncheckedUpdateManyWithoutProjectNestedInput" + }, + "comments": { + "$ref": "#/components/schemas/CommentUncheckedUpdateManyWithoutProjectNestedInput" + }, + "auditLogs": { + "$ref": "#/components/schemas/AuditLogUncheckedUpdateManyWithoutProjectNestedInput" + }, + "shareLinks": { + "$ref": "#/components/schemas/ShareLinkUncheckedUpdateManyWithoutProjectNestedInput" + }, + "assignedExportTemplates": { + "$ref": "#/components/schemas/CaseExportTemplateProjectAssignmentUncheckedUpdateManyWithoutProjectNestedInput" + } + } + }, + "ProjectsUncheckedUpdateManyWithoutPromptConfigInput": { + "type": "object", + "properties": { + "id": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/IntFieldUpdateOperationsInput" + } + ] + }, + "name": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "iconUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "note": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "docs": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/NullableStringFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "isCompleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "isDeleted": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/BoolFieldUpdateOperationsInput" + } + ] + }, + "completedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/NullableDateTimeFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "$ref": "#/components/schemas/DateTimeFieldUpdateOperationsInput" + } + ] + }, + "createdBy": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/StringFieldUpdateOperationsInput" + } + ] + }, + "defaultAccessType": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectAccessType" + }, + { + "$ref": "#/components/schemas/EnumProjectAccessTypeFieldUpdateOperationsInput" + } + ] + }, + "defaultRoleId": { + "oneOf": [ + { + "type": "integer" + }, + { + "$ref": "#/components/schemas/NullableIntFieldUpdateOperationsInput" + }, + { + "type": "null" + } + ] + }, + "defaultCaseExportTemplateId": { "oneOf": [ { "type": "integer" @@ -468338,6 +471889,16 @@ } ] }, + "defaultCaseExportTemplate": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateDefaultArgs" + } + ] + }, "_count": { "oneOf": [ { @@ -469098,6 +472659,16 @@ } ] }, + "defaultForProjects": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/ProjectsFindManyArgs" + } + ] + }, "_count": { "oneOf": [ { @@ -472514,6 +476085,9 @@ "properties": { "projects": { "type": "boolean" + }, + "defaultForProjects": { + "type": "boolean" } } }, @@ -474454,6 +478028,19 @@ } ] }, + "defaultCaseExportTemplateId": { + "type": "boolean" + }, + "defaultCaseExportTemplate": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/CaseExportTemplateDefaultArgs" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -475535,6 +479122,16 @@ } ] }, + "defaultForProjects": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/ProjectsFindManyArgs" + } + ] + }, "_count": { "oneOf": [ { @@ -481773,6 +485370,9 @@ "promptConfigId": { "type": "boolean" }, + "defaultCaseExportTemplateId": { + "type": "boolean" + }, "quickScriptEnabled": { "type": "boolean" }, @@ -481789,6 +485389,9 @@ }, "defaultRoleId": { "type": "boolean" + }, + "defaultCaseExportTemplateId": { + "type": "boolean" } } }, @@ -481800,6 +485403,9 @@ }, "defaultRoleId": { "type": "boolean" + }, + "defaultCaseExportTemplateId": { + "type": "boolean" } } }, @@ -481845,6 +485451,9 @@ "promptConfigId": { "type": "boolean" }, + "defaultCaseExportTemplateId": { + "type": "boolean" + }, "quickScriptEnabled": { "type": "boolean" } @@ -481892,6 +485501,9 @@ "promptConfigId": { "type": "boolean" }, + "defaultCaseExportTemplateId": { + "type": "boolean" + }, "quickScriptEnabled": { "type": "boolean" } @@ -494752,6 +498364,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "type": "boolean" }, @@ -511531,6 +515153,9 @@ "promptConfigId": { "type": "integer" }, + "defaultCaseExportTemplateId": { + "type": "integer" + }, "quickScriptEnabled": { "type": "integer" }, @@ -511552,6 +515177,7 @@ "defaultAccessType", "defaultRoleId", "promptConfigId", + "defaultCaseExportTemplateId", "quickScriptEnabled", "_all" ] @@ -511578,6 +515204,16 @@ "type": "number" } ] + }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] } } }, @@ -511603,6 +515239,16 @@ "type": "integer" } ] + }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] } } }, @@ -511741,6 +515387,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { @@ -511888,6 +515544,16 @@ } ] }, + "defaultCaseExportTemplateId": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "integer" + } + ] + }, "quickScriptEnabled": { "oneOf": [ { diff --git a/testplanit/prisma/schema.prisma b/testplanit/prisma/schema.prisma index 14208adb..bcd23bd2 100644 --- a/testplanit/prisma/schema.prisma +++ b/testplanit/prisma/schema.prisma @@ -437,50 +437,52 @@ model Roles { } model Projects { - id Int @id() @default(autoincrement()) - name String @unique() - iconUrl String? - note String? - docs String? - isCompleted Boolean @default(false) - isDeleted Boolean @default(false) - completedAt DateTime? @db.Date() - createdAt DateTime @default(now()) @db.Timestamptz(6) - createdBy String - creator User @relation("ProjectCreator", fields: [createdBy], references: [id]) - assignedUsers ProjectAssignment[] - assignedStatuses ProjectStatusAssignment[] - milestoneTypes MilestoneTypesAssignment[] - assignedTemplates TemplateProjectAssignment[] - assignedWorkflows ProjectWorkflowAssignment[] - milestones Milestones[] - repositories Repositories[] - repositoryFolders RepositoryFolders[] - repositoryCases RepositoryCases[] - repositoryCaseVersions RepositoryCaseVersions[] - sessions Sessions[] - sessionVersions SessionVersions[] - testRuns TestRuns[] - defaultAccessType ProjectAccessType @default(GLOBAL_ROLE) - defaultRoleId Int? - defaultRole Roles? @relation("ProjectDefaultRole", fields: [defaultRoleId], references: [id]) - userPermissions UserProjectPermission[] - groupPermissions GroupProjectPermission[] - sharedStepGroups SharedStepGroup[] - projectIntegrations ProjectIntegration[] - projectLlmIntegrations ProjectLlmIntegration[] - codeRepositoryConfig ProjectCodeRepositoryConfig? - promptConfigId String? - promptConfig PromptConfig? @relation(fields: [promptConfigId], references: [id]) - issues Issue[] - llmUsages LlmUsage[] - llmFeatureConfigs LlmFeatureConfig[] - llmResponseCaches LlmResponseCache[] - comments Comment[] - auditLogs AuditLog[] - shareLinks ShareLink[] - assignedExportTemplates CaseExportTemplateProjectAssignment[] - quickScriptEnabled Boolean @default(false) + id Int @id() @default(autoincrement()) + name String @unique() + iconUrl String? + note String? + docs String? + isCompleted Boolean @default(false) + isDeleted Boolean @default(false) + completedAt DateTime? @db.Date() + createdAt DateTime @default(now()) @db.Timestamptz(6) + createdBy String + creator User @relation("ProjectCreator", fields: [createdBy], references: [id]) + assignedUsers ProjectAssignment[] + assignedStatuses ProjectStatusAssignment[] + milestoneTypes MilestoneTypesAssignment[] + assignedTemplates TemplateProjectAssignment[] + assignedWorkflows ProjectWorkflowAssignment[] + milestones Milestones[] + repositories Repositories[] + repositoryFolders RepositoryFolders[] + repositoryCases RepositoryCases[] + repositoryCaseVersions RepositoryCaseVersions[] + sessions Sessions[] + sessionVersions SessionVersions[] + testRuns TestRuns[] + defaultAccessType ProjectAccessType @default(GLOBAL_ROLE) + defaultRoleId Int? + defaultRole Roles? @relation("ProjectDefaultRole", fields: [defaultRoleId], references: [id]) + userPermissions UserProjectPermission[] + groupPermissions GroupProjectPermission[] + sharedStepGroups SharedStepGroup[] + projectIntegrations ProjectIntegration[] + projectLlmIntegrations ProjectLlmIntegration[] + codeRepositoryConfig ProjectCodeRepositoryConfig? + promptConfigId String? + promptConfig PromptConfig? @relation(fields: [promptConfigId], references: [id]) + issues Issue[] + llmUsages LlmUsage[] + llmFeatureConfigs LlmFeatureConfig[] + llmResponseCaches LlmResponseCache[] + comments Comment[] + auditLogs AuditLog[] + shareLinks ShareLink[] + assignedExportTemplates CaseExportTemplateProjectAssignment[] + defaultCaseExportTemplateId Int? + defaultCaseExportTemplate CaseExportTemplate? @relation("ProjectDefaultExportTemplate", fields: [defaultCaseExportTemplateId], references: [id], onDelete: SetNull) + quickScriptEnabled Boolean @default(false) @@index([isDeleted, isCompleted]) @@index([createdBy]) @@ -711,22 +713,23 @@ model TemplateResultAssignment { } model CaseExportTemplate { - id Int @id() @default(autoincrement()) - name String @unique() - description String? - category String - framework String @default("") - headerBody String? - templateBody String - footerBody String? - fileExtension String - language String - isDefault Boolean @default(false) - isEnabled Boolean @default(true) - isDeleted Boolean @default(false) - createdAt DateTime @default(now()) @db.Timestamptz(6) - updatedAt DateTime @updatedAt() - projects CaseExportTemplateProjectAssignment[] + id Int @id() @default(autoincrement()) + name String @unique() + description String? + category String + framework String @default("") + headerBody String? + templateBody String + footerBody String? + fileExtension String + language String + isDefault Boolean @default(false) + isEnabled Boolean @default(true) + isDeleted Boolean @default(false) + createdAt DateTime @default(now()) @db.Timestamptz(6) + updatedAt DateTime @updatedAt() + projects CaseExportTemplateProjectAssignment[] + defaultForProjects Projects[] @relation("ProjectDefaultExportTemplate") } model CaseExportTemplateProjectAssignment { From a0d6be435b6ce6bd850cf1bbdd55e48c153fff99 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:13:05 -0500 Subject: [PATCH 04/20] docs(25-01): complete default-template-schema plan - 25-01-SUMMARY.md created - STATE.md updated with decisions and session info - ROADMAP.md phase 25 marked complete (1/1 plans done) - REQUIREMENTS.md SCHEMA-02 marked complete --- .planning/REQUIREMENTS.md | 63 +++++++++++ .planning/ROADMAP.md | 4 +- .planning/STATE.md | 72 ++++++++++++ .../25-01-SUMMARY.md | 105 ++++++++++++++++++ 4 files changed, 242 insertions(+), 2 deletions(-) create mode 100644 .planning/REQUIREMENTS.md create mode 100644 .planning/STATE.md create mode 100644 .planning/phases/25-default-template-schema/25-01-SUMMARY.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 00000000..b51e8bbc --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,63 @@ +# Requirements: Per-Project Export Template Assignment + +**Defined:** 2026-03-18 +**Core Value:** Teams can plan, execute, and track testing across manual and automated workflows in one place — with AI assistance to reduce repetitive work. +**Issue:** GitHub #85 + +## v2.1 Requirements + +Requirements for per-project export template assignment. Each maps to roadmap phases. + +### Schema + +- [x] **SCHEMA-01**: CaseExportTemplateProjectAssignment join model links CaseExportTemplate to Project (already exists) +- [x] **SCHEMA-02**: Project has a default case export template relation + +### Admin UI + +- [ ] **ADMIN-01**: Admin can assign/unassign export templates to a project in project settings +- [ ] **ADMIN-02**: Admin can set a default export template for a project + +### Export Dialog + +- [ ] **EXPORT-01**: Export dialog only shows templates assigned to the current project +- [ ] **EXPORT-02**: Project default template is pre-selected in the export dialog +- [ ] **EXPORT-03**: If no templates are assigned to a project, all enabled templates are shown (backward compatible) + +## Future Requirements + +None — this is a self-contained feature. + +## Out of Scope + +| Feature | Reason | +|---------------------------------------|-----------------------------------------------------------------| +| Per-user template preferences | Not in issue #85, could be future enhancement | +| Template creation from project settings | Templates are managed globally in admin; projects only assign existing ones | +| Template ordering per project | Unnecessary complexity for v2.1 | + +## Traceability + +Which phases cover which requirements. Updated during roadmap creation. + +| Requirement | Phase | Status | +|-------------|----------|------------------| +| SCHEMA-01 | — | Complete (exists) | +| SCHEMA-02 | Phase 25 | Complete | +| ADMIN-01 | Phase 26 | Pending | +| ADMIN-02 | Phase 26 | Pending | +| EXPORT-01 | Phase 27 | Pending | +| EXPORT-02 | Phase 27 | Pending | +| EXPORT-03 | Phase 27 | Pending | + +**Coverage:** + +- v2.1 requirements: 7 total +- Already complete: 1 (SCHEMA-01) +- Remaining: 6 +- Mapped: 6/6 + +--- + +*Requirements defined: 2026-03-18* +*Last updated: 2026-03-18 after roadmap creation (Phases 25-27)* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 95c672c4..abf2be03 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -52,7 +52,7 @@ **Milestone Goal:** Allow admins to assign specific Case Export Templates to individual projects and set a per-project default, so users only see relevant templates when exporting. -- [ ] **Phase 25: Default Template Schema** - Project model extended with optional default export template relation +- [x] **Phase 25: Default Template Schema** - Project model extended with optional default export template relation (completed 2026-03-19) - [ ] **Phase 26: Admin Assignment UI** - Admin can assign, unassign, and set a default export template per project - [ ] **Phase 27: Export Dialog Filtering** - Export dialog shows only project-assigned templates with project default pre-selected @@ -376,6 +376,6 @@ Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 → | 22. Custom API Route Tests | v2.0 | 0/TBD | Not started | - | | 23. General Components | v2.0 | 0/TBD | Not started | - | | 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - | -| 25. Default Template Schema | v2.1 | 0/1 | Planning complete | - | +| 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - | | 26. Admin Assignment UI | v2.1 | 0/TBD | Not started | - | | 27. Export Dialog Filtering | v2.1 | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md new file mode 100644 index 00000000..cee0eb6a --- /dev/null +++ b/.planning/STATE.md @@ -0,0 +1,72 @@ +--- +gsd_state_version: 1.0 +milestone: v2.1 +milestone_name: Per-Project Export Template Assignment +status: planning +stopped_at: Completed 25-01-PLAN.md +last_updated: "2026-03-19T03:12:52.239Z" +last_activity: 2026-03-18 — Roadmap created for v2.1 (Phases 25-27) +progress: + total_phases: 19 + completed_phases: 1 + total_plans: 1 + completed_plans: 1 + percent: 0 +--- + +# State + +## Project Reference + +See: .planning/PROJECT.md (updated 2026-03-18) + +**Core value:** Teams can plan, execute, and track testing across manual and automated workflows in one place — with AI assistance to reduce repetitive work. +**Current focus:** v2.1 Per-Project Export Template Assignment — Phase 25: Default Template Schema + +## Current Position + +Phase: 25 of 27 (Default Template Schema) +Plan: — of TBD in current phase +Status: Ready to plan +Last activity: 2026-03-18 — Roadmap created for v2.1 (Phases 25-27) + +Progress: [░░░░░░░░░░] 0% (v2.1 phases) + +## Performance Metrics + +**Velocity:** +- Total plans completed (v2.1): 0 +- Average duration: — +- Total execution time: — + +**By Phase:** + +| Phase | Plans | Total | Avg/Plan | +|-------|-------|-------|----------| +| - | - | - | - | + +## Accumulated Context +| Phase 25-default-template-schema P01 | 5min | 2 tasks | 5 files | + +### Decisions + +- Follow TemplateProjectAssignment pattern (existing pattern for case field template assignments) +- Backward compatible fallback: no assignments = show all enabled templates +- SCHEMA-01 already complete (CaseExportTemplateProjectAssignment join model exists in schema.zmodel) +- ZenStack hooks for CaseExportTemplateProjectAssignment are already generated +- [Phase 25-default-template-schema]: Used onDelete: SetNull on defaultCaseExportTemplateId FK so deleting a CaseExportTemplate clears the default on referencing projects +- [Phase 25-default-template-schema]: Named relation 'ProjectDefaultExportTemplate' disambiguates from CaseExportTemplateProjectAssignment join-table relation + +### Pending Todos + +None yet. + +### Blockers/Concerns + +None yet. + +## Session Continuity + +Last session: 2026-03-19T03:12:52.238Z +Stopped at: Completed 25-01-PLAN.md +Resume file: None diff --git a/.planning/phases/25-default-template-schema/25-01-SUMMARY.md b/.planning/phases/25-default-template-schema/25-01-SUMMARY.md new file mode 100644 index 00000000..b420d502 --- /dev/null +++ b/.planning/phases/25-default-template-schema/25-01-SUMMARY.md @@ -0,0 +1,105 @@ +--- +phase: 25-default-template-schema +plan: 01 +subsystem: database +tags: [prisma, zenstack, postgresql, schema, relations] + +# Dependency graph +requires: [] +provides: + - "Projects model with nullable defaultCaseExportTemplateId FK and defaultCaseExportTemplate optional relation" + - "CaseExportTemplate model with defaultForProjects back-relation" + - "Database column Projects.defaultCaseExportTemplateId (nullable, SetNull on delete)" +affects: + - 26-default-template-ui + - 27-export-dialog + +# Tech tracking +tech-stack: + added: [] + patterns: + - "Named relation 'ProjectDefaultExportTemplate' disambiguates from CaseExportTemplateProjectAssignment join-table relation" + - "onDelete: SetNull on nullable FK clears default when template is deleted" + +key-files: + created: [] + modified: + - testplanit/schema.zmodel + - testplanit/prisma/schema.prisma + - testplanit/lib/hooks/__model_meta.ts + - testplanit/lib/hooks/projects.ts + - testplanit/lib/openapi/zenstack-openapi.json + +key-decisions: + - "Used onDelete: SetNull so deleting a CaseExportTemplate clears defaultCaseExportTemplateId on any referencing project (no orphan FKs)" + - "Named relation 'ProjectDefaultExportTemplate' required to disambiguate from the existing join-table relation via CaseExportTemplateProjectAssignment" + +patterns-established: + - "Pattern: nullable optional relation with SetNull for per-project default selections (mirrors defaultRoleId/defaultRole pattern)" + +requirements-completed: [SCHEMA-02] + +# Metrics +duration: 5min +completed: 2026-03-19 +--- + +# Phase 25 Plan 01: Default Template Schema Summary + +**Nullable `defaultCaseExportTemplateId` FK added to Projects model with `onDelete: SetNull`, enabling per-project export template defaults; ZenStack/Prisma regenerated and database schema pushed.** + +## Performance + +- **Duration:** ~5 min +- **Started:** 2026-03-19T03:05:00Z +- **Completed:** 2026-03-19T03:10:00Z +- **Tasks:** 2 +- **Files modified:** 5 + +## Accomplishments + +- Added `defaultCaseExportTemplateId Int?` FK and `defaultCaseExportTemplate CaseExportTemplate?` optional relation to Projects model in schema.zmodel +- Added `defaultForProjects Projects[]` back-relation on CaseExportTemplate model with named relation `"ProjectDefaultExportTemplate"` +- Ran `pnpm generate` — ZenStack hooks, Prisma client, and OpenAPI spec regenerated; nullable column pushed to database with all existing rows defaulting to NULL + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Add defaultCaseExportTemplate relation to Project model** - `a739d82d` (feat) +2. **Task 2: Regenerate ZenStack/Prisma and push schema** - `0cabe15d` (chore) + +## Files Created/Modified + +- `testplanit/schema.zmodel` - Added FK and relation fields to Projects model; added back-relation to CaseExportTemplate model +- `testplanit/prisma/schema.prisma` - Generated Prisma schema with new fields +- `testplanit/lib/hooks/__model_meta.ts` - Updated ZenStack model metadata +- `testplanit/lib/hooks/projects.ts` - Updated ZenStack hooks for Projects model +- `testplanit/lib/openapi/zenstack-openapi.json` - Updated OpenAPI spec + +## Decisions Made + +- Used `onDelete: SetNull` so deleting a CaseExportTemplate automatically clears the FK on any project that used it as default — no orphaned references +- Named the relation `"ProjectDefaultExportTemplate"` to disambiguate from the existing `CaseExportTemplateProjectAssignment` join-table relation that also links Projects and CaseExportTemplate + +## Deviations from Plan + +None - plan executed exactly as written. + +## Issues Encountered + +None - `pnpm generate` and `prisma db push` completed cleanly on first attempt. + +## User Setup Required + +None - no external service configuration required. The nullable column was added to the existing Projects table without any data migration needed. + +## Next Phase Readiness + +- Schema change is ready for Phase 26 (admin UI) to set `defaultCaseExportTemplateId` on projects +- Phase 27 (export dialog) can use `project.defaultCaseExportTemplate` to pre-select a template +- ZenStack auto-generated hooks (`useFindManyProjects`, `useUpdateProjects`) already include the new field + +--- +*Phase: 25-default-template-schema* +*Completed: 2026-03-19* From 8e52c46dc6af7158bc51da0dbc17bfc56d003550 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:15:10 -0500 Subject: [PATCH 05/20] docs(phase-25): complete phase execution --- .planning/ROADMAP.md | 2 +- .planning/STATE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index abf2be03..73d18cae 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -376,6 +376,6 @@ Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 → | 22. Custom API Route Tests | v2.0 | 0/TBD | Not started | - | | 23. General Components | v2.0 | 0/TBD | Not started | - | | 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - | -| 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - | +| 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - | | 26. Admin Assignment UI | v2.1 | 0/TBD | Not started | - | | 27. Export Dialog Filtering | v2.1 | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index cee0eb6a..030bf623 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -4,7 +4,7 @@ milestone: v2.1 milestone_name: Per-Project Export Template Assignment status: planning stopped_at: Completed 25-01-PLAN.md -last_updated: "2026-03-19T03:12:52.239Z" +last_updated: "2026-03-19T03:15:05.303Z" last_activity: 2026-03-18 — Roadmap created for v2.1 (Phases 25-27) progress: total_phases: 19 From 83a47a53dafc3b12decdf0b32de4bf9f729c2d74 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:42:05 -0500 Subject: [PATCH 06/20] docs(26): create phase plan for admin assignment UI --- .planning/ROADMAP.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 73d18cae..32d172ef 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -331,7 +331,11 @@ Plans: 2. Admin can assign an export template to a project and the assignment is reflected immediately in the UI 3. Admin can unassign an export template from a project and it no longer appears in the project's assigned list 4. Admin can mark one assigned template as the project default, and the selection persists across page reloads -**Plans**: TBD +**Plans**: 2 plans + +Plans: +- [ ] 26-01-PLAN.md -- Update ZenStack access rules for project admin write access +- [ ] 26-02-PLAN.md -- Build ExportTemplateAssignmentSection and integrate into quickscript page ### Phase 27: Export Dialog Filtering **Goal**: The export dialog shows only the templates relevant to the current project, with the project default pre-selected, while gracefully falling back when no assignments exist @@ -377,5 +381,5 @@ Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 → | 23. General Components | v2.0 | 0/TBD | Not started | - | | 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - | | 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - | -| 26. Admin Assignment UI | v2.1 | 0/TBD | Not started | - | +| 26. Admin Assignment UI | v2.1 | 0/2 | Planning complete | - | | 27. Export Dialog Filtering | v2.1 | 0/TBD | Not started | - | From 30b477586b01ddbbf8f50f884e66da8c1aca947a Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:47:04 -0500 Subject: [PATCH 07/20] feat(26-01): Add project admin access rules to CaseExportTemplateProjectAssignment - Add @@allow('create,delete') for users with explicit SPECIFIC_ROLE Project Admin on project - Add @@allow('create,delete') for users with PROJECTADMIN access assigned to project - Mirrors access pattern from Projects model for consistency - Run pnpm generate to regenerate ZenStack/Prisma artifacts --- testplanit/schema.zmodel | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/testplanit/schema.zmodel b/testplanit/schema.zmodel index c5d8742e..4871b809 100644 --- a/testplanit/schema.zmodel +++ b/testplanit/schema.zmodel @@ -817,6 +817,10 @@ model CaseExportTemplateProjectAssignment { @@id([templateId, projectId]) @@deny('all', !auth()) @@allow('all', auth().access == 'ADMIN') + // Project admins with explicit SPECIFIC_ROLE can manage assignments for their projects + @@allow('create,delete', project.userPermissions?[user == auth() && accessType == 'SPECIFIC_ROLE' && role.name == 'Project Admin']) + // Users with PROJECTADMIN access assigned to the project can manage assignments + @@allow('create,delete', project.assignedUsers?[user == auth()] && auth().access == 'PROJECTADMIN') @@allow('read', auth().access != null) } From 64ea86429e39a3ad80b50666788644294d1868d7 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:48:16 -0500 Subject: [PATCH 08/20] docs(26-01): complete admin assignment access rules plan - Add 26-01-SUMMARY.md with plan execution results - Update STATE.md with progress, decisions, and session info - Update ROADMAP.md progress for phase 26 - Mark ADMIN-01 requirement as complete Co-Authored-By: Claude Sonnet 4.6 --- .planning/REQUIREMENTS.md | 4 +- .planning/ROADMAP.md | 2 +- .planning/STATE.md | 14 +-- .../26-admin-assignment-ui/26-01-SUMMARY.md | 88 +++++++++++++++++++ 4 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 .planning/phases/26-admin-assignment-ui/26-01-SUMMARY.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index b51e8bbc..11175219 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -15,7 +15,7 @@ Requirements for per-project export template assignment. Each maps to roadmap ph ### Admin UI -- [ ] **ADMIN-01**: Admin can assign/unassign export templates to a project in project settings +- [x] **ADMIN-01**: Admin can assign/unassign export templates to a project in project settings - [ ] **ADMIN-02**: Admin can set a default export template for a project ### Export Dialog @@ -44,7 +44,7 @@ Which phases cover which requirements. Updated during roadmap creation. |-------------|----------|------------------| | SCHEMA-01 | — | Complete (exists) | | SCHEMA-02 | Phase 25 | Complete | -| ADMIN-01 | Phase 26 | Pending | +| ADMIN-01 | Phase 26 | Complete | | ADMIN-02 | Phase 26 | Pending | | EXPORT-01 | Phase 27 | Pending | | EXPORT-02 | Phase 27 | Pending | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 32d172ef..f1ffd851 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -381,5 +381,5 @@ Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 → | 23. General Components | v2.0 | 0/TBD | Not started | - | | 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - | | 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - | -| 26. Admin Assignment UI | v2.1 | 0/2 | Planning complete | - | +| 26. Admin Assignment UI | 1/2 | In Progress| | - | | 27. Export Dialog Filtering | v2.1 | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 030bf623..75f4e7de 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v2.1 milestone_name: Per-Project Export Template Assignment status: planning -stopped_at: Completed 25-01-PLAN.md -last_updated: "2026-03-19T03:15:05.303Z" +stopped_at: Completed 26-admin-assignment-ui-01-PLAN.md +last_updated: "2026-03-19T03:47:58.316Z" last_activity: 2026-03-18 — Roadmap created for v2.1 (Phases 25-27) progress: total_phases: 19 completed_phases: 1 - total_plans: 1 - completed_plans: 1 + total_plans: 3 + completed_plans: 2 percent: 0 --- @@ -47,6 +47,7 @@ Progress: [░░░░░░░░░░] 0% (v2.1 phases) ## Accumulated Context | Phase 25-default-template-schema P01 | 5min | 2 tasks | 5 files | +| Phase 26-admin-assignment-ui P01 | 5 | 1 tasks | 1 files | ### Decisions @@ -56,6 +57,7 @@ Progress: [░░░░░░░░░░] 0% (v2.1 phases) - ZenStack hooks for CaseExportTemplateProjectAssignment are already generated - [Phase 25-default-template-schema]: Used onDelete: SetNull on defaultCaseExportTemplateId FK so deleting a CaseExportTemplate clears the default on referencing projects - [Phase 25-default-template-schema]: Named relation 'ProjectDefaultExportTemplate' disambiguates from CaseExportTemplateProjectAssignment join-table relation +- [Phase 26-admin-assignment-ui]: Mirrored Projects model access pattern for project-admin-scoped create/delete on CaseExportTemplateProjectAssignment ### Pending Todos @@ -67,6 +69,6 @@ None yet. ## Session Continuity -Last session: 2026-03-19T03:12:52.238Z -Stopped at: Completed 25-01-PLAN.md +Last session: 2026-03-19T03:47:58.314Z +Stopped at: Completed 26-admin-assignment-ui-01-PLAN.md Resume file: None diff --git a/.planning/phases/26-admin-assignment-ui/26-01-SUMMARY.md b/.planning/phases/26-admin-assignment-ui/26-01-SUMMARY.md new file mode 100644 index 00000000..bfd36a64 --- /dev/null +++ b/.planning/phases/26-admin-assignment-ui/26-01-SUMMARY.md @@ -0,0 +1,88 @@ +--- +phase: 26-admin-assignment-ui +plan: 01 +subsystem: database +tags: [zenstack, prisma, access-control, zmodel, project-admin] + +# Dependency graph +requires: + - phase: 25-default-template-schema + provides: CaseExportTemplateProjectAssignment join model in schema.zmodel +provides: + - Project admins can create/delete CaseExportTemplateProjectAssignment records for their own projects +affects: [26-admin-assignment-ui] + +# Tech tracking +tech-stack: + added: [] + patterns: [ZenStack access rules follow Projects model pattern for project-scoped operations] + +key-files: + created: [] + modified: + - testplanit/schema.zmodel + +key-decisions: + - "Mirrored Projects model access pattern for project admin scoped create/delete rules on CaseExportTemplateProjectAssignment" + - "Two rules: one for explicit SPECIFIC_ROLE Project Admin, one for PROJECTADMIN access type assigned to project" + +patterns-established: + - "Project-scoped access pattern: project.userPermissions?[user == auth() && accessType == 'SPECIFIC_ROLE' && role.name == 'Project Admin']" + +requirements-completed: [ADMIN-01] + +# Metrics +duration: 5min +completed: 2026-03-19 +--- + +# Phase 26 Plan 01: Admin Assignment UI - Access Rules Summary + +**ZenStack access rules updated on CaseExportTemplateProjectAssignment to allow project admins to create/delete template assignments for their own projects** + +## Performance + +- **Duration:** 5 min +- **Started:** 2026-03-19T03:42:00Z +- **Completed:** 2026-03-19T03:47:10Z +- **Tasks:** 1 +- **Files modified:** 1 + +## Accomplishments +- Added `@@allow('create,delete')` rule for users with explicit SPECIFIC_ROLE Project Admin on project +- Added `@@allow('create,delete')` rule for users with PROJECTADMIN access type assigned to project +- Ran `pnpm generate` to regenerate ZenStack/Prisma artifacts successfully + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Add project admin access rules to CaseExportTemplateProjectAssignment** - `30b47758` (feat) + +**Plan metadata:** (docs commit follows) + +## Files Created/Modified +- `testplanit/schema.zmodel` - Added two project-admin-scoped create/delete access rules to CaseExportTemplateProjectAssignment model + +## Decisions Made +- Mirrored the Projects model access pattern (lines 395-408) to maintain consistency across project-scoped resources +- Two distinct rules: one for explicit role-based access (SPECIFIC_ROLE), one for PROJECTADMIN access type + +## Deviations from Plan + +None - plan executed exactly as written. + +## Issues Encountered +None + +## User Setup Required +None - no external service configuration required. + +## Next Phase Readiness +- Access rules updated: project admins can now create/delete CaseExportTemplateProjectAssignment records for their own projects +- ZenStack generation succeeded, hooks are updated +- Ready to build the UI for managing template assignments (remaining tasks in phase 26) + +--- +*Phase: 26-admin-assignment-ui* +*Completed: 2026-03-19* From 14929833b8a47fe0e95e09a719255772f2516ddf Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:51:37 -0500 Subject: [PATCH 09/20] feat(26-02): create ExportTemplateAssignmentSection component - Add ExportTemplateAssignmentSection with checkbox list for template assignment - Delete-all/recreate save pattern for assignments - Default template selector (filtered to assigned templates only) - Clears default when unchecked template was the default - Add exportTemplates translation keys to en-US.json quickScript namespace - data-testid="export-template-assignment-section" for testing --- .../ExportTemplateAssignmentSection.tsx | 254 ++++++++++++++++++ testplanit/messages/en-US.json | 12 + 2 files changed, 266 insertions(+) create mode 100644 testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx diff --git a/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx b/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx new file mode 100644 index 00000000..d497a442 --- /dev/null +++ b/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx @@ -0,0 +1,254 @@ +"use client"; + +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Loader2 } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; +import { + useCreateManyCaseExportTemplateProjectAssignment, + useDeleteManyCaseExportTemplateProjectAssignment, + useFindManyCaseExportTemplate, + useFindManyCaseExportTemplateProjectAssignment, +} from "~/lib/hooks"; +import { useUpdateProjects } from "~/lib/hooks"; + +interface ExportTemplateAssignmentSectionProps { + projectId: number; + currentDefaultId: number | null; +} + +export function ExportTemplateAssignmentSection({ + projectId, + currentDefaultId, +}: ExportTemplateAssignmentSectionProps) { + const t = useTranslations("projects.settings.quickScript"); + + const { data: templates, isLoading: templatesLoading } = + useFindManyCaseExportTemplate({ + where: { isDeleted: false, isEnabled: true }, + select: { + id: true, + name: true, + category: true, + framework: true, + language: true, + }, + }); + + const { data: assignments, isLoading: assignmentsLoading } = + useFindManyCaseExportTemplateProjectAssignment({ + where: { projectId }, + select: { templateId: true }, + }); + + const { mutateAsync: deleteManyAssignment } = + useDeleteManyCaseExportTemplateProjectAssignment(); + const { mutateAsync: createManyAssignment } = + useCreateManyCaseExportTemplateProjectAssignment(); + const updateProject = useUpdateProjects(); + + const [selectedIds, setSelectedIds] = useState>(new Set()); + const [selectedDefaultId, setSelectedDefaultId] = useState( + currentDefaultId + ); + const [isDirty, setIsDirty] = useState(false); + const [isSaving, setIsSaving] = useState(false); + + // Initialize selectedIds from server data once loaded + useEffect(() => { + if (assignments) { + setSelectedIds(new Set(assignments.map((a) => a.templateId))); + setIsDirty(false); + } + }, [assignments]); + + // Initialize selectedDefaultId from prop + useEffect(() => { + setSelectedDefaultId(currentDefaultId); + }, [currentDefaultId]); + + const handleCheckboxChange = (templateId: number, checked: boolean) => { + setSelectedIds((prev) => { + const next = new Set(prev); + if (checked) { + next.add(templateId); + } else { + next.delete(templateId); + // Clear default if unchecking the default template + if (templateId === selectedDefaultId) { + setSelectedDefaultId(null); + } + } + return next; + }); + setIsDirty(true); + }; + + const handleDefaultChange = (value: string) => { + setSelectedDefaultId(value === "none" ? null : parseInt(value)); + setIsDirty(true); + }; + + const handleSave = async () => { + setIsSaving(true); + try { + // Step 1: Delete all existing assignments for this project + await deleteManyAssignment({ where: { projectId } }); + + // Step 2: Create new assignments + const ids = Array.from(selectedIds); + if (ids.length > 0) { + await createManyAssignment({ + data: ids.map((templateId) => ({ templateId, projectId })), + }); + } + + // Step 3: Update default (always — either set to selectedDefaultId or null) + const defaultStillAssigned = + selectedDefaultId != null && selectedIds.has(selectedDefaultId); + await updateProject.mutateAsync({ + where: { id: projectId }, + data: { + defaultCaseExportTemplateId: defaultStillAssigned + ? selectedDefaultId + : null, + }, + }); + + setIsDirty(false); + toast.success(t("exportTemplates.saved")); + } catch { + toast.error(t("exportTemplates.saveError")); + } finally { + setIsSaving(false); + } + }; + + const isLoading = templatesLoading || assignmentsLoading; + + const assignedTemplates = (templates ?? []).filter((tpl) => + selectedIds.has(tpl.id) + ); + + return ( + + + {t("exportTemplates.title")} + {t("exportTemplates.description")} + + + {isLoading ? ( +
+ +
+ ) : !templates || templates.length === 0 ? ( +

+ {t("exportTemplates.noTemplates")} +

+ ) : ( + <> +
+ {templates.map((template) => { + const isChecked = selectedIds.has(template.id); + const isDefault = template.id === selectedDefaultId; + return ( +
+ + handleCheckboxChange(template.id, !!checked) + } + /> + +
+ ); + })} +
+ + {/* Default template selector */} +
+ + +
+ +
+ +
+ + )} +
+
+ ); +} diff --git a/testplanit/messages/en-US.json b/testplanit/messages/en-US.json index 57d6c63d..0eadc2c9 100644 --- a/testplanit/messages/en-US.json +++ b/testplanit/messages/en-US.json @@ -1231,6 +1231,18 @@ "repositoryRequired": "Repository is required", "pathPatternRequired": "At least one path pattern is required" }, + "exportTemplates": { + "title": "Export Templates", + "description": "Assign export templates to this project. Only assigned templates will appear in the export dialog.", + "noTemplates": "No export templates are enabled. Contact your system administrator.", + "defaultLabel": "Default Template", + "defaultPlaceholder": "None (use global default)", + "assigned": "Assigned", + "save": "Save Template Assignments", + "saving": "Saving...", + "saved": "Template assignments saved", + "saveError": "Failed to save template assignments" + }, "disconnect": "Disconnect Repository", "confirmDisconnect": "Are you sure you want to disconnect \"{name}\" from this project?", "disconnectWarningTitle": "Disconnecting this repository will:", From b6b55c53349dcd8f23df0cee30beb636d9de8a58 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:52:18 -0500 Subject: [PATCH 10/20] feat(26-02): integrate ExportTemplateAssignmentSection into quickscript page - Import ExportTemplateAssignmentSection component - Add defaultCaseExportTemplateId to project query select - Render ExportTemplateAssignmentSection between toggle card and code repo section --- .../projects/settings/[projectId]/quickscript/page.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/page.tsx b/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/page.tsx index d411056f..9d8b15cc 100644 --- a/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/page.tsx +++ b/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/page.tsx @@ -55,6 +55,7 @@ import { useRequireAuth } from "~/hooks/useRequireAuth"; import { useCreateProjectCodeRepositoryConfig, useDeleteProjectCodeRepositoryConfig, useFindFirstProjectCodeRepositoryConfig, useFindFirstProjects, useFindManyCodeRepository, useUpdateProjectCodeRepositoryConfig, useUpdateProjects } from "~/lib/hooks"; +import { ExportTemplateAssignmentSection } from "./ExportTemplateAssignmentSection"; import { Link } from "~/lib/navigation"; interface PreviewFile { @@ -155,6 +156,7 @@ export default function QuickScriptPage() { name: true, iconUrl: true, quickScriptEnabled: true, + defaultCaseExportTemplateId: true, assignedUsers: { where: { user: { @@ -558,6 +560,12 @@ export default function QuickScriptPage() { + {/* Export Template Assignment */} + + {repositories?.length === 0 ? ( From ba1d6edd478c0329abea33a5eece8a11c5234052 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Wed, 18 Mar 2026 22:53:48 -0500 Subject: [PATCH 11/20] docs(26-02): complete export template assignment UI plan - Add 26-02-SUMMARY.md with component details and decisions - Update STATE.md: session, decisions, metrics - Update ROADMAP.md: phase 26 plans complete - Mark ADMIN-02 requirement complete in REQUIREMENTS.md --- .planning/REQUIREMENTS.md | 4 +- .planning/ROADMAP.md | 4 +- .planning/STATE.md | 14 +-- .../26-admin-assignment-ui/26-02-SUMMARY.md | 101 ++++++++++++++++++ 4 files changed, 113 insertions(+), 10 deletions(-) create mode 100644 .planning/phases/26-admin-assignment-ui/26-02-SUMMARY.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 11175219..05b9b6ef 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -16,7 +16,7 @@ Requirements for per-project export template assignment. Each maps to roadmap ph ### Admin UI - [x] **ADMIN-01**: Admin can assign/unassign export templates to a project in project settings -- [ ] **ADMIN-02**: Admin can set a default export template for a project +- [x] **ADMIN-02**: Admin can set a default export template for a project ### Export Dialog @@ -45,7 +45,7 @@ Which phases cover which requirements. Updated during roadmap creation. | SCHEMA-01 | — | Complete (exists) | | SCHEMA-02 | Phase 25 | Complete | | ADMIN-01 | Phase 26 | Complete | -| ADMIN-02 | Phase 26 | Pending | +| ADMIN-02 | Phase 26 | Complete | | EXPORT-01 | Phase 27 | Pending | | EXPORT-02 | Phase 27 | Pending | | EXPORT-03 | Phase 27 | Pending | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index f1ffd851..2cbff48a 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -53,7 +53,7 @@ **Milestone Goal:** Allow admins to assign specific Case Export Templates to individual projects and set a per-project default, so users only see relevant templates when exporting. - [x] **Phase 25: Default Template Schema** - Project model extended with optional default export template relation (completed 2026-03-19) -- [ ] **Phase 26: Admin Assignment UI** - Admin can assign, unassign, and set a default export template per project +- [x] **Phase 26: Admin Assignment UI** - Admin can assign, unassign, and set a default export template per project (completed 2026-03-19) - [ ] **Phase 27: Export Dialog Filtering** - Export dialog shows only project-assigned templates with project default pre-selected ## Phase Details @@ -381,5 +381,5 @@ Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 → | 23. General Components | v2.0 | 0/TBD | Not started | - | | 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - | | 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - | -| 26. Admin Assignment UI | 1/2 | In Progress| | - | +| 26. Admin Assignment UI | 2/2 | Complete | 2026-03-19 | - | | 27. Export Dialog Filtering | v2.1 | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 75f4e7de..b42169bb 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v2.1 milestone_name: Per-Project Export Template Assignment status: planning -stopped_at: Completed 26-admin-assignment-ui-01-PLAN.md -last_updated: "2026-03-19T03:47:58.316Z" +stopped_at: Completed 26-admin-assignment-ui-02-PLAN.md +last_updated: "2026-03-19T03:53:31.773Z" last_activity: 2026-03-18 — Roadmap created for v2.1 (Phases 25-27) progress: total_phases: 19 - completed_phases: 1 + completed_phases: 2 total_plans: 3 - completed_plans: 2 + completed_plans: 3 percent: 0 --- @@ -48,6 +48,7 @@ Progress: [░░░░░░░░░░] 0% (v2.1 phases) ## Accumulated Context | Phase 25-default-template-schema P01 | 5min | 2 tasks | 5 files | | Phase 26-admin-assignment-ui P01 | 5 | 1 tasks | 1 files | +| Phase 26 P02 | 15min | 2 tasks | 3 files | ### Decisions @@ -58,6 +59,7 @@ Progress: [░░░░░░░░░░] 0% (v2.1 phases) - [Phase 25-default-template-schema]: Used onDelete: SetNull on defaultCaseExportTemplateId FK so deleting a CaseExportTemplate clears the default on referencing projects - [Phase 25-default-template-schema]: Named relation 'ProjectDefaultExportTemplate' disambiguates from CaseExportTemplateProjectAssignment join-table relation - [Phase 26-admin-assignment-ui]: Mirrored Projects model access pattern for project-admin-scoped create/delete on CaseExportTemplateProjectAssignment +- [Phase 26-admin-assignment-ui]: Added translation keys in Task 1 commit because TypeScript validates next-intl keys against en-US.json at compile time ### Pending Todos @@ -69,6 +71,6 @@ None yet. ## Session Continuity -Last session: 2026-03-19T03:47:58.314Z -Stopped at: Completed 26-admin-assignment-ui-01-PLAN.md +Last session: 2026-03-19T03:53:27.608Z +Stopped at: Completed 26-admin-assignment-ui-02-PLAN.md Resume file: None diff --git a/.planning/phases/26-admin-assignment-ui/26-02-SUMMARY.md b/.planning/phases/26-admin-assignment-ui/26-02-SUMMARY.md new file mode 100644 index 00000000..8588d219 --- /dev/null +++ b/.planning/phases/26-admin-assignment-ui/26-02-SUMMARY.md @@ -0,0 +1,101 @@ +--- +phase: 26-admin-assignment-ui +plan: 02 +subsystem: ui +tags: [react, zenstack, next-intl, shadcn, tanstack-query] + +# Dependency graph +requires: + - phase: 26-admin-assignment-ui-01 + provides: ZenStack access control for CaseExportTemplateProjectAssignment create/delete scoped to project admins + - phase: 25-default-template-schema + provides: defaultCaseExportTemplateId field on Projects model and CaseExportTemplateProjectAssignment join model +provides: + - ExportTemplateAssignmentSection component for per-project template assignment UI + - Export template assignment section rendered on quickscript settings page above code repo section + - Translation keys for export template assignment under projects.settings.quickScript.exportTemplates +affects: [27-export-dialog, testing, e2e] + +# Tech tracking +tech-stack: + added: [] + patterns: + - "Delete-all/recreate pattern for many-to-many assignment updates (mirrors EditTemplate.tsx)" + - "Controlled Set state for checkbox group with dirty tracking" + +key-files: + created: + - testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx + modified: + - testplanit/app/[locale]/projects/settings/[projectId]/quickscript/page.tsx + - testplanit/messages/en-US.json + +key-decisions: + - "Added translation keys to en-US.json as part of Task 1 because TypeScript type-checks translation keys against the JSON at compile time — component would not compile without them" + - "Badge for Default shows only when template is both assigned and is the current default (not a separate column)" + +patterns-established: + - "ExportTemplateAssignmentSection: uses useEffect to initialize Set from server assignments, isDirty flag to enable Save only after local changes" + +requirements-completed: [ADMIN-01, ADMIN-02] + +# Metrics +duration: 15min +completed: 2026-03-19 +--- + +# Phase 26 Plan 02: Export Template Assignment UI Summary + +**Checkbox-based export template assignment section with default selector on project QuickScript settings page, using delete-all/recreate save pattern via ZenStack hooks** + +## Performance + +- **Duration:** ~15 min +- **Started:** 2026-03-19T03:47:58Z +- **Completed:** 2026-03-19T03:52:32Z +- **Tasks:** 2 of 3 (checkpoint:human-verify pending) +- **Files modified:** 3 + +## Accomplishments +- Created ExportTemplateAssignmentSection component with checkbox list for all enabled export templates +- Admin can assign/unassign templates via checkboxes and set a default from assigned templates +- Save uses delete-all/recreate pattern: deleteMany assignments then createMany, plus updateProject for default +- Unassigning the default template automatically clears it (defaultStillAssigned check before updateProject) +- Component integrated into page.tsx above the code repository section with defaultCaseExportTemplateId passed as prop +- Added full set of exportTemplates translation keys under projects.settings.quickScript namespace + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Create ExportTemplateAssignmentSection component** - `14929833` (feat) +2. **Task 2: Integrate section into page and add translations** - `b6b55c53` (feat) +3. **Task 3: Verify template assignment UI** - checkpoint:human-verify (pending) + +## Files Created/Modified +- `testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx` - Export template assignment UI with checkbox list, default selector, and save handler +- `testplanit/app/[locale]/projects/settings/[projectId]/quickscript/page.tsx` - Added import, defaultCaseExportTemplateId to query, ExportTemplateAssignmentSection render +- `testplanit/messages/en-US.json` - Added exportTemplates keys under projects.settings.quickScript + +## Decisions Made +- Added translation keys as part of Task 1 commit (not Task 2) because TypeScript validates translation key names against en-US.json at compile time — the component would not compile without them being present first +- Badge for "Assigned" indicator only shows when template is both checked AND is the current default, keeping the row clean for non-default assigned templates + +## Deviations from Plan + +None - plan executed exactly as written. Translation keys were added in Task 1 commit (instead of Task 2) due to TypeScript type-checking dependency, but this is a commit ordering detail not a scope deviation. + +## Issues Encountered +- TypeScript compile-time validation of i18n keys via next-intl means translation keys must exist before the component will type-check. Added translations first, then verified compilation. No functional impact. + +## User Setup Required +None - no external service configuration required. + +## Next Phase Readiness +- ExportTemplateAssignmentSection is fully implemented and integrated +- Pending: human verification that the UI renders correctly and assignments persist (Task 3 checkpoint) +- After verification: Phase 27 (export dialog integration) can use project assignments to filter templates shown to users + +--- +*Phase: 26-admin-assignment-ui* +*Completed: 2026-03-19* From 87e79d2b467b3e25d050615d222cc7e470dac331 Mon Sep 17 00:00:00 2001 From: Brad DerManouelian Date: Thu, 19 Mar 2026 00:09:39 -0500 Subject: [PATCH 12/20] refactor(26-02): refine export template assignment UI based on review - Replace checkbox list with MultiAsyncCombobox for template selection - Add alphabetical sorting by name in template options - Push metadata badges (category, language) to the right in option rows - Add assignedLabel and selectPlaceholder translation keys - Fix MultiAsyncCombobox X button alignment and check icon consistency --- .../ExportTemplateAssignmentSection.tsx | 158 ++++++++++-------- .../components/ui/multi-async-combobox.tsx | 10 +- testplanit/messages/en-US.json | 2 + 3 files changed, 98 insertions(+), 72 deletions(-) diff --git a/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx b/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx index d497a442..88cb5b07 100644 --- a/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx +++ b/testplanit/app/[locale]/projects/settings/[projectId]/quickscript/ExportTemplateAssignmentSection.tsx @@ -9,8 +9,8 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Checkbox } from "@/components/ui/checkbox"; import { Label } from "@/components/ui/label"; +import { MultiAsyncCombobox } from "@/components/ui/multi-async-combobox"; import { Select, SelectContent, @@ -20,7 +20,7 @@ import { } from "@/components/ui/select"; import { Loader2 } from "lucide-react"; import { useTranslations } from "next-intl"; -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; import { useCreateManyCaseExportTemplateProjectAssignment, @@ -41,6 +41,14 @@ export function ExportTemplateAssignmentSection({ }: ExportTemplateAssignmentSectionProps) { const t = useTranslations("projects.settings.quickScript"); + type TemplateOption = { + id: number; + name: string; + category: string; + framework: string; + language: string; + }; + const { data: templates, isLoading: templatesLoading } = useFindManyCaseExportTemplate({ where: { isDeleted: false, isEnabled: true }, @@ -65,42 +73,66 @@ export function ExportTemplateAssignmentSection({ useCreateManyCaseExportTemplateProjectAssignment(); const updateProject = useUpdateProjects(); - const [selectedIds, setSelectedIds] = useState>(new Set()); + const [selectedTemplates, setSelectedTemplates] = useState( + [] + ); const [selectedDefaultId, setSelectedDefaultId] = useState( currentDefaultId ); const [isDirty, setIsDirty] = useState(false); const [isSaving, setIsSaving] = useState(false); - // Initialize selectedIds from server data once loaded + // Initialize selectedTemplates from server data once loaded useEffect(() => { - if (assignments) { - setSelectedIds(new Set(assignments.map((a) => a.templateId))); + if (assignments && templates) { + const assignedIds = new Set(assignments.map((a) => a.templateId)); + setSelectedTemplates(templates.filter((tpl) => assignedIds.has(tpl.id))); setIsDirty(false); } - }, [assignments]); + }, [assignments, templates]); // Initialize selectedDefaultId from prop useEffect(() => { setSelectedDefaultId(currentDefaultId); }, [currentDefaultId]); - const handleCheckboxChange = (templateId: number, checked: boolean) => { - setSelectedIds((prev) => { - const next = new Set(prev); - if (checked) { - next.add(templateId); - } else { - next.delete(templateId); - // Clear default if unchecking the default template - if (templateId === selectedDefaultId) { - setSelectedDefaultId(null); - } + const selectedIds = useMemo( + () => new Set(selectedTemplates.map((t) => t.id)), + [selectedTemplates] + ); + + const handleTemplatesChange = useCallback( + (newSelected: TemplateOption[]) => { + setSelectedTemplates(newSelected); + // Clear default if it's no longer in the selected set + const newIds = new Set(newSelected.map((t) => t.id)); + if (selectedDefaultId != null && !newIds.has(selectedDefaultId)) { + setSelectedDefaultId(null); } - return next; - }); - setIsDirty(true); - }; + setIsDirty(true); + }, + [selectedDefaultId] + ); + + const sortedTemplates = useMemo( + () => [...(templates ?? [])].sort((a, b) => a.name.localeCompare(b.name)), + [templates] + ); + + const fetchTemplateOptions = useCallback( + async (query: string) => { + if (!query) return sortedTemplates; + const lower = query.toLowerCase(); + return sortedTemplates.filter( + (tpl) => + tpl.name.toLowerCase().includes(lower) || + tpl.category.toLowerCase().includes(lower) || + tpl.framework.toLowerCase().includes(lower) || + tpl.language.toLowerCase().includes(lower) + ); + }, + [sortedTemplates] + ); const handleDefaultChange = (value: string) => { setSelectedDefaultId(value === "none" ? null : parseInt(value)); @@ -144,10 +176,6 @@ export function ExportTemplateAssignmentSection({ const isLoading = templatesLoading || assignmentsLoading; - const assignedTemplates = (templates ?? []).filter((tpl) => - selectedIds.has(tpl.id) - ); - return ( @@ -166,45 +194,40 @@ export function ExportTemplateAssignmentSection({ ) : ( <>
- {templates.map((template) => { - const isChecked = selectedIds.has(template.id); - const isDefault = template.id === selectedDefaultId; - return ( -
- - handleCheckboxChange(template.id, !!checked) - } - /> - -
- ); - })} + + + )} + placeholder={t("exportTemplates.selectPlaceholder")} + />
{/* Default template selector */} @@ -213,9 +236,11 @@ export function ExportTemplateAssignmentSection({ {t("exportTemplates.defaultLabel")}