Commit Graph

124 Commits

Author SHA1 Message Date
Nikhil
eef03e671e [WEB-4238] feat: event stream implementation (#3684)
* Pgtrigger and Outbox prototype

* feat: add event stream app with models and migrations

- Introduced the event_stream app with initial models: Outbox and IssueProxy.
- Implemented a PostgreSQL trigger for logging updates to issues.
- Added necessary migrations and updated settings to include the new app.

* refactor: migrate event publisher to event stream

- Updated imports in test files to reflect the new event_stream app structure.
- Removed the event_publisher app, including its models, migrations, and tests.
- Introduced MemorySafeOutboxEventListener and related service for handling outbox events.
- Added management command for starting the outbox event listener with memory safety.
- Implemented PostgreSQL triggers for outbox notifications in the new event_stream app.

* refactor: enhance issue serializer and event stream models

- Updated IssueSerializer and IssueCreateSerializer to manage assignees and labels more efficiently by calculating additions and removals instead of deleting all and re-adding.
- Introduced new proxy models for CycleIssue and ModuleIssue with corresponding PostgreSQL triggers for event handling.
- Refactored Outbox model to include entity type and ID for better event tracking.
- Removed outdated IssueProxy model and its associated triggers, streamlining the event stream architecture.

* chore: update base requirements for OpenSearch and add pika for RabbitMQ

- Retained django-opensearch-dsl version 0.7.0 in requirements.
- Added pika version 1.3.2 for RabbitMQ integration.

* refactor: update import paths for event stream listener

- Changed import statements in test_competitive_listeners.py, service.py, and listen_outbox_events.py to reflect the new module structure by removing the 'apiserver' prefix.

* feat: implement PostgreSQL LISTEN/NOTIFY listener for outbox events

- Added DatabaseConnection class to manage psycopg3 connections for LISTEN/NOTIFY.
- Introduced NotificationListener class to handle PostgreSQL NOTIFY messages and dispatch them to registered handlers.
- Updated Command class to utilize NotificationListener for listening to outbox events, replacing the previous restartable listener implementation.
- Improved error handling and logging throughout the listener process.

* feat: enhance event processing with advisory locks

- Implemented advisory lock mechanism to prevent concurrent processing of events.
- Added methods to acquire and release advisory locks in the DatabaseConnection class.
- Updated root_handler to fetch complete outbox data and mark events as processed only if all handlers succeed.
- Improved error handling and logging for event processing.

* fix: improve event logging and error handling in NotificationListener

- Updated event logging to include event ID for better traceability.
- Enhanced error handling in the command's handle method to log exceptions and maintain robustness during event listening.

* feat: add memory monitoring and auto-restart functionality to event listener

- Introduced MemoryMonitor class to track memory usage and event processing counts.
- Implemented automatic restarts for the NotificationListener based on memory and event limits.
- Enhanced command line options to configure memory limits, event limits, and memory check intervals.
- Improved logging for memory stats and event processing to aid in monitoring and debugging.

* feat: update local and production settings for event logging

- Introduced logging configuration for 'plane.event_stream' in both local and production settings to enhance event logging capabilities.

* chore: Implement async outbox polling mechanism with memory monitoring and event handling. Add management command for outbox poller and create necessary database migrations for outbox triggers and indexes.

* docs: Add comprehensive README for Event Stream system detailing architecture, components, configuration, usage, and performance tuning.

* feat: Enhance MongoDB integration with a singleton connection manager and implement outbox cleanup task for migrating records from PostgreSQL to MongoDB

* feat: Add asyncio support for tests and new test files for outbox polling

* Merge branch 'event-stream' of github.com:makeplane/plane-ee into event-stream

* refactor: Update event types in outbox triggers for cycle, issue, and module models; add IssueComment, IssueLink, and IssueRelation proxies with corresponding triggers

* refactor: Update import paths for JsonFormatter and consolidate OpenFeature imports; add unit tests for OutboxPoller and related classes

* refactor: Replace all_objects with objects in Outbox queries and update test fixtures for outbox records

* feat: Add daily outbox cleaner task to Celery and update type hint for MongoDB collection

* refactor: Enhance memory monitoring and outbox polling logic with improved logging and delay handling

* feat: Implement outbox triggers for issue, issue attachment, issue link, and issue relation models with dynamic event type determination

* chore: Remove obsolete files related to multiple listeners and competitive processing tests

* Delete service.py

* feat: Add outbox poller script to manage database migrations and process events with configurable parameters

* refactor: Optimize EpicCreateSerializer to handle initiative, assignee, and label updates with conflict management and improved logic for adding/removing related entities

* feat: Update issue proxy triggers for outbox events

- Removed the existing 'issue_outbox_update' trigger from the IssueProxy model.
- Added a new 'issue_outbox_update' trigger with enhanced logic to handle conversion events when the issue type changes.
- The new trigger captures updates and soft deletes, inserting appropriate events into the outbox.

* feat: Refactor issue proxy triggers and add new outbox event handling

- Removed and replaced existing triggers for IssueProxy, IssueAssigneeProxy, IssueLabelProxy, CycleIssueProxy, and ModuleIssueProxy.
- Introduced new triggers to handle outbox events for various issue-related actions, including creation, updates, and deletions.
- Enhanced logic for event type determination based on issue type, ensuring accurate event handling in the outbox.

* refactor: Update serializers to use ID fields for assignees and labels

- Changed the handling of assignees and labels in IssueCreateSerializer and EpicCreateSerializer to use ID fields instead of object references.
- Improved logic for determining assignees and labels to add or remove by using lists of IDs.
- Enhanced code readability with comments explaining the changes.

* feat: Enhance issue event handling in outbox triggers

- Updated triggers for IssueProxy, IssueAssigneeProxy, and IssueLabelProxy to determine event types based on issue type, including handling for epics.
- Introduced filtered data for outbox events to exclude description fields, improving data integrity and reducing unnecessary payload size.
- Enhanced logic for detecting changes during updates, ensuring only relevant changes are captured and processed.

* feat: implement connection pooling for outbox poller

- Introduced DatabaseConnectionPool class to manage async connection pooling using psycopg_pool.
- Enhanced outbox polling logic to utilize connection pooling for improved performance and resource management.
- Added health check and statistics retrieval methods for the connection pool.
- Updated outbox model and migration to include claimed_at field for better event tracking.
- Refactored tests to validate new connection pooling functionality.

* refactor: move MongoConnection to a new settings module and update imports

- Created a new mongo.py file to define the MongoConnection class for managing MongoDB connections.
- Updated the import path in outbox_cleaner.py to reference the new MongoConnection location.

* refactor: update import path for MongoConnection in outbox_cleaner.py

* chore: remove scout_apm from production settings and requirements

- Deleted scout_apm from the installed apps in production.py.
- Removed scout-apm dependency from base.txt requirements.

* feat: add claimed_at field to outbox events and update requirements

- Added claimed_at field to the outbox event model for enhanced event tracking.
- Updated outbox poller to handle claimed_at in event processing.
- Included django-pgtrigger in base.txt requirements for database trigger management.

* feat: enhance memory monitoring in outbox poller

- Updated MemoryMonitor to signal for restarts instead of exiting on memory limit exceedance.
- Added methods to check for restart requests and wait for restart signals.
- Improved outbox poller logic to handle memory monitoring more gracefully during processing.
- Ensured all claimed rows are processed before initiating a restart.

* feat: implement graceful shutdown handling in outbox poller

- Added GracefulShutdownHandler class to manage shutdown signals (SIGTERM, SIGINT, SIGQUIT).
- Integrated shutdown handling into the outbox poller to allow for graceful exits during processing.
- Updated polling logic to check for shutdown requests and clean up resources accordingly.
- Enhanced command help text to reflect new signal handling capabilities.

* Enhance outbox event handling by adding workspace and project IDs

- Updated the outbox cleaner to include `workspace_id` and `project_id` in the deletion process.
- Modified the outbox poller to handle new fields in event processing.
- Adjusted models and migrations to support the new fields in the outbox table.
- Updated tests to ensure proper handling of workspace and project IDs in outbox records.

* Merge branch 'preview' of github.com:makeplane/plane-ee into event-stream

* feat: add initiator_id field to Outbox model and update migration dependencies

* feat: add initiator_id to Outbox insertions across event stream models

- Updated Outbox insert statements in various models to include initiator_id.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure proper tracking of the user initiating changes.
- Enhanced event handling for soft deletes and regular updates to maintain consistency in data tracking.

* feat: include initiator_id in OutboxEvent model and database interactions

- Added initiator_id field to the OutboxEvent model for enhanced tracking.
- Updated database queries in outbox_poller.py to include initiator_id in insertions.
- Ensured consistency in data handling across event stream components.

* refactor: update handle_row function to use OutboxEvent model

- Changed the parameter type of handle_row from Dict to OutboxEvent for better type safety.
- Updated logging to utilize the to_dict method of OutboxEvent for consistent event data representation.

* feat: enhance Outbox model with initiator type and update related logic

- Added initiator_type field to the Outbox model to track the type of event initiator.
- Introduced InitiatorTypes enum for better clarity and management of initiator types.
- Updated OutboxEvent model and related methods to include initiator_type for consistent event data representation.
- Adjusted database interactions across event stream models to accommodate the new initiator_type field.

* feat: add initiator_type to Outbox insertions across event stream models

- Updated Outbox insert statements in various models to include initiator_type for better tracking of event initiators.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure consistent handling of initiator_type during event processing.
- Enhanced event handling for both soft deletes and regular updates to maintain data integrity and tracking.

* feat: update event stream triggers to use After timing for improved consistency

- Changed trigger timing from Before to After for various event stream models including CycleIssueProxy, IssueProxy, and IssueAssigneeProxy to ensure that outbox updates reflect the final state of the entities.
- Enhanced logic in triggers to include previous attributes for better tracking of changes during updates.
- Adjusted related logic in IssueLabelProxy and IssueCommentProxy to maintain consistency across event handling.

* feat: enhance bulk update task with transaction management and initiator type

- Wrapped bulk creation of issue relations and parent ID updates in a transaction to ensure atomicity.
- Set the initiator type to 'SYSTEM.IMPORT' for both bulk creation and updates to improve tracking of operations.
- Improved database interaction by using a connection cursor for executing SQL commands.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-08-08 17:33:05 +05:30
Bavisetti Narayan
5b65d15436 [WEB-4393] feat: recurring work item (#3668)
* chore: crud operations for recurring work item

* chore: added perodic task for recurring work item

* chore: removed the error statement

* fix: bg task for labels

* chore: added recurring work item model

* chore: added null field for recurring work item log

* feat: recurring work items UI

* chore: added activities for recurring task

* feat: add interval type to recurring work item form

* chore: updated the cront expression

* chore: minor updates for recurring work item serializer and interval type

* chore: removed the seconds calculation

* chore: added task fk to activity table

* improvement: interval dropdown width

* fix: start date validation

* chore: added created at for activity

* feat: add recurring work item activity logic

* chore: updated the migration file

* chore: update the activity for recursive task

* chore: deleteing the recurring task permanantely

* improvement: recurring work item activity helpers

* fix: recurring work item custom properties data preloading

* improvement: minor UI enhancements

* improvement: recurring work item activity helpers

* fix: init loader logic

* Use the right field namewhile creating activity

* chore: add hourly and minutly interval types for testing

* Added test intervals for debugging

* chore: update the periodic task to set null

* chore: added activity for recurring work item properties

* chore: updated the description activity

* chore: removed the fields

* chore: updated the type activity

* chore: added property in the model

* remove temporary minutly and hourly interval types from recurring work items

---------

Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-08-08 16:21:22 +05:30
guru_sainath
fd9fbb426d [MOBIL-1094] dev: Handle intake work item detail retrieval using work item ID #3838 2025-08-08 00:50:40 +05:30
guru_sainath
c7c66fec2d [MOBIL-1096] dev: Implement intake search functionality #3837 2025-08-08 00:50:19 +05:30
guru_sainath
95b791ed93 [MOBIL-1095] fix: Resolve intake filters by updating relation key #3836 2025-08-08 00:49:56 +05:30
Surya Prashanth
cf543807ac [SILO-437] chore: fix types for external apis (#3839) 2025-08-08 00:49:36 +05:30
Vamsi Krishna
53aa2feec0 [WEB-4609]fix: email template logo width #3860 2025-08-07 17:43:16 +05:30
Anmol Singh Bhatia
491b4ea9bb fix: sync merge conflict 2025-08-07 00:38:25 +05:30
Anmol Singh Bhatia
51e146f8ca [WEB-4488] feat: brand revamp (#7544)
* chore: empty state asset and theme improvement (#7542)

* chore: empty state asset and theme improvement

* chore: upgrade modal improvement and code refactor

* feat: onboarding revamp and theme changes (#7541)

* refactor: consolidate password strength indicator into shared UI package

* chore: remove old password strength meter implementations

* chore: update package dependencies for password strength refactor

* chore: code refactor

* chore: brand logo added

* chore:  terms and conditions refactor

* chore: auth form refactor

* chore: oauth enhancements and refactor

* chore: plane new logos added

* chore: auth input form field added to ui package

* chore: password input component added

* chore: web auth refactor

* chore: update brand colors and remove onboarding-specific styles

* chore: clean up unused assets

* chore: profile menu text overflow

* chore: theme related changes

* chore: logo spinner updated

* chore: onboarding constant and types updated

* chore: theme changes and code refactor

* feat: onboarding flow revamp

* fix:  build error and code refactoring

* chore: code refactor

* fix: build error

* chore: consent option added to onboarding and code refactor

* fix: build fix

* chore: code refactor

* chore: auth screen revamp and code refactor

* chore: onboarding enhancements

* chore: code refactor

* chore: onboarding logic improvement

* chore: code refactor

* fix: onboarding pre release improvements

* chore: color token updated

* chore: color token updated

* chore: auth screen line height and size improvements

* chore: input height updated

* chore: n-progress theme updated

* chore: theme and logo enhancements

* chore: space auth and code refactor

* chore: update new brand empty states (#7543)

* [WEB-4585]chore: branding updates (#7540)

* chore: updated logo, og image, and loaders

* chore: updated branding colors

* chore: tour modal logo

* chore: updated logo spinner size

* chore: updated email templates logos and colors

* chore: code refactor

* fix: removed conditional hook render

* fix: space app loader

---------

Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
2025-08-06 22:24:47 +05:30
Bavisetti Narayan
b5ebf625ee [WEB-4393] chore: added recurring work item activity model (#3847)
* chore: added recurring work item activity model

* chore: added a better description
2025-08-06 19:52:17 +05:30
sriram veeraghanta
4ddb2ddb88 [PRIME-16] fix: update register instance command to use app version from ENV #3848 2025-08-06 00:39:57 +05:30
Nikhil
fc25ed6012 [WEB-4638]feat: add management command to fix duplicate issue sequences in a project #3843 2025-08-06 00:00:50 +05:30
Aaryan Khandelwal
a22d26bf1e [WIKI-537] chore: use description json to render content (#3822)
* chore: use description json to render content

* chore: update base page instance
2025-08-04 15:34:05 +05:30
pushya22
018f45a16e Sync: Community Changes #3824 2025-08-04 15:31:16 +05:30
Bavisetti Narayan
7cec92113f [WEB-4628] chore: return 200 response for work item comment #7532 2025-08-04 15:27:05 +05:30
Vamsi Krishna
04e91cbaff [WEB-4617] fix: empty states (#3819)
* fix: exports empty states

* fix: read replica fix
2025-08-01 20:57:54 +05:30
Vamsi Krishna
14297cef00 [WEB-4609] chore: updated logo and colours for email templates #3800 2025-07-31 21:09:34 +05:30
Saurabh Kumar
a9c3595c2c [SILO-430] Bug: Fix name max length issue in data import task #3795 2025-07-31 17:04:52 +05:30
Dheeraj Kumar Ketireddy
4441ec79a2 [WEB-4606] chore: remove duplicates from workitem type project_ids list #3789 2025-07-31 13:40:13 +05:30
Dheeraj Kumar Ketireddy
3d23ea516a [WEB-4607] fix: update parameter usage in IssuePropertyOptionDetailAPIEndpoint #3791 2025-07-31 13:35:17 +05:30
pushya22
cb105995ea Sync: Community Changes #3788 2025-07-31 13:14:04 +05:30
sriram veeraghanta
99f9337f35 fix: enable email notification by default for new users (#7521) 2025-07-31 13:02:41 +05:30
Sangeetha
27fa439c8d [WEB-4602] fix: 500 error on draft wi labels update #7515 2025-07-30 20:18:48 +05:30
Prateek Shourya
459e37c0c0 [WEB-4606] improvement: optimize work item types and epic types endpoints (#3786)
* improvement: remove `issues_exists` property from work item types.

* Optimizations for issue type and epic type endpoints

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-30 19:54:19 +05:30
sriram veeraghanta
98a6ff254e fix: work item external api endpoint fix (#3785) 2025-07-30 18:55:57 +05:30
sriramveeraghanta
4afdc6124c fix: merge conflicts 2025-07-30 17:35:12 +05:30
Nikhil
a67dba45f8 [WEB-4599] feat: add marketing email consent field to Profile model and timezone migration #7510 2025-07-30 17:17:16 +05:30
sriramveeraghanta
c4d2c5b1bb sync: canary changes to preview 2025-07-30 15:44:41 +05:30
Bavisetti Narayan
d4705e1649 [WEB-4544] chore: added field validations in serializer (#7460)
* chore: added field validations in serializer

* chore: added enum for roles
2025-07-30 15:41:44 +05:30
Bavisetti Narayan
69d5cd183f chore: added validation for description (#7507)
* added PageBinaryUpdateSerializer for binary data validation and update

* chore: added validation for description

* chore: removed the duplicated file

* Fixed coderabbit comments

- Improve content validation by consolidating patterns and enhancing recursion checks

- Updated `PageBinaryUpdateSerializer` to simplify assignment of validated data.
- Enhanced `content_validator.py` with consolidated dangerous patterns and added recursion depth checks to prevent stack overflow during validation.
- Improved readability and maintainability of validation functions by using constants for patterns.

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-30 14:19:49 +05:30
Bavisetti Narayan
52ccc99067 [WEB-4557] fix: remove intake work item from work item search (#3733) 2025-07-29 19:15:06 +05:30
Vamsi Krishna
1e6640cb4b [WEB-4583]feat: enhanced search comments (#3764)
* chore: added comment

* feat: enhance IssueCommentDocument and search functionality

- Added new fields: issue_title, issue_sequence_id, and issue_type_id to IssueCommentDocument.
- Updated IssueCommentSearchSerializer to include the new fields and changed comment to a SerializerMethodField for better handling of highlighted comments.
- Modified EnhancedGlobalSearchEndpoint to retrieve the new fields and implement highlighting for comments in search results.

* Update IssueCommentDocument and serializers for improved search functionality

- Enhanced IssueCommentDocument by adding an analyzer to the comment field and renaming issue_title to issue_name.
- Updated multiple serializers to make fields like type_id and logo_props optional.
- Improved IssueCommentSearchSerializer to handle highlights more effectively and renamed issue_title to issue_name.
- Adjusted EnhancedGlobalSearchEndpoint to reflect the changes in field names and modified comment highlighting settings.

* feat: integrated apis for wroksapce-search

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-29 19:06:56 +05:30
Bavisetti Narayan
3f7a6b21f0 [WEB-4593] chore: added assignee to work item from project template (#3767) 2025-07-29 17:13:37 +05:30
sriramveeraghanta
690621009a fix: merge conflicts 2025-07-29 12:22:11 +05:30
Sangeetha
84879ee3bd [WEB-4533] feat: read replica functionality (#7453)
* feat: read replica functionality

* fix: set use_read_replica to false

* chore: add use_read_replica to external APIs

* chore: remove use_read_replica on read endpoints

* chore: remove md files

* Updated all the necessary endpoints to use read replica

---------

Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
2025-07-28 17:41:02 +05:30
sriram veeraghanta
7b52f739f7 Sync: Community Changes #3763 2025-07-28 12:58:40 +05:30
Sriram Veeraghanta
b1162395ed sync: canary into preview 2025-07-28 12:53:16 +05:30
Sriram Veeraghanta
b93883fc14 chore: version upgrade 2025-07-28 12:51:19 +05:30
sriram veeraghanta
ebf08d9b20 Sync: Community Changes #3762 2025-07-28 12:42:42 +05:30
Nikhil
4913c116d1 chore: correct migration file 0098 (#7486)
* feat: restore background color and goals fields in Profile and Workspace models in migration 0099

* chore: update migration dependency to reflect recent changes in profile model migrations
2025-07-28 12:32:47 +05:30
Nikhil
2e0ca9deec Merge branch 'preview' into sync/ce-ee 2025-07-27 21:13:31 +05:30
Nikhil
4044ce25ce [WEB-4566] feat: add background color and goals field to Profile and Workspace models #7485 2025-07-27 21:10:31 +05:30
Nikhil
0703778ae0 [WEB-4562] feat: enhance workitem template endpoints (#3742)
* feat: enhance workitem template endpoints with feature flag and detailed retrieval

- Added feature flag check for the SubWorkitemTemplateEndpoint.
- Updated WorkitemProjectTemplateEndpoint to support fetching a specific template by primary key (pk) with prefetching of related workitem templates.

* feat: add 404 error handling for missing templates in WorkitemProjectTemplateEndpoint
2025-07-25 18:24:02 +05:30
Sangeetha
c4568ca2c8 [WEB-4564] refactor: initiative analytics issues count (#3744)
* refactor: issues_count function

* fix: print statement
2025-07-25 18:23:38 +05:30
Sangeetha
a1d558623c [WEB-4483] fix: wi type icon in gantt view (#3755)
* fix: type_id in issue-detail endpoint

* fix: unused annotations

* fix: comments

* chore: remove prefetch_related

* chore: remove if condition
2025-07-25 17:04:18 +05:30
sriramveeraghanta
41d20f808d fix: merge conflicts 2025-07-25 17:00:48 +05:30
Bavisetti Narayan
63d025cbf4 [WEB-4544] chore: added field validations in serializer (#7460)
* chore: added field validations in serializer

* chore: added enum for roles
2025-07-25 16:50:35 +05:30
Saurabh Kumar
e14b4e0aad [SILO-396] Modify OAuth flow to move app installation out of token generate (#3694)
* refactor: oauth flow to move app installation out of create token + get installation from token

* added tests for app installation flow and webhook fix

* replace app_installation_id with id as query param
2025-07-25 16:47:49 +05:30
Dheeraj Kumar Ketireddy
f9894e095f [WEB-4560] fix: enhance OpenSearchHelper with custom filter support and fix page access in search #3743
- Added support for custom Q objects in OpenSearchHelper to allow complex filtering logic.
- Updated the EnhancedGlobalSearchEndpoint to utilize the new custom filter for page access control.
- Improved filter handling in the execute_multi_search method for better result organization.
2025-07-25 16:42:50 +05:30
Dheeraj Kumar Ketireddy
25bf6d9b60 Merge branch 'preview' into sync/ce-ee
Fixed merge conflicts

 Conflicts:
	apps/api/plane/api/serializers/__init__.py
	apps/api/plane/api/serializers/module.py
	apps/api/plane/api/urls/__init__.py
	apps/api/plane/api/urls/issue.py
	apps/api/plane/api/urls/member.py
	apps/api/plane/api/urls/module.py
	apps/api/plane/api/views/__init__.py
	apps/api/plane/api/views/asset.py
	apps/api/plane/api/views/base.py
	apps/api/plane/api/views/cycle.py
	apps/api/plane/api/views/intake.py
	apps/api/plane/api/views/issue.py
	apps/api/plane/api/views/member.py
	apps/api/plane/api/views/module.py
	apps/api/plane/api/views/project.py
	apps/api/plane/api/views/state.py
	apps/api/plane/db/models/workspace.py
	apps/api/plane/settings/common.py
	apps/api/plane/settings/openapi.py
	apps/api/plane/urls.py
	apps/api/plane/utils/openapi/__init__.py
	apps/api/plane/utils/openapi/auth.py
	apps/api/plane/utils/openapi/decorators.py
	apps/api/plane/utils/openapi/hooks.py
	apps/api/plane/utils/openapi/parameters.py
	apps/api/requirements/base.txt
2025-07-25 00:56:38 +05:30