> For the complete documentation index, see [llms.txt](https://docs.projetly.ai/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.projetly.ai/home/api-reference/models.md).

# Models

## The AccessTypeEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"AccessTypeEnum":{"enum":["user","role","team"],"type":"string","description":"* `user` - user\n* `role` - role\n* `team` - team"}}}}
```

## The AccountInfo object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"AccountInfo":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"account_id":{"type":"string","maxLength":25},"account_name":{"type":"string"},"description":{"type":"string"},"account_owner":{"type":"string","readOnly":true},"linked_projects":{"type":"string","readOnly":true},"health_score":{"type":"string","readOnly":true},"total_revenue":{"type":"string","readOnly":true},"total_projects":{"type":"string","readOnly":true},"completed_projects":{"type":"string","readOnly":true},"total_deals":{"type":"string","readOnly":true},"completed_deals":{"type":"string","readOnly":true},"vertical":{"type":"string"},"segment":{"type":"string"},"website_url":{"type":"string"},"region":{"type":"string"},"customer":{"type":"string","readOnly":true},"is_favourite":{"type":"boolean"},"currency_unit":{"type":"string","readOnly":true},"logo_path":{"type":"string","readOnly":true},"logo":{"type":"string","readOnly":true},"insight":{"type":"object","additionalProperties":{}},"total_formatted_revenue":{"type":"string","readOnly":true},"is_internal_account":{"type":"boolean"},"company_id":{"type":"string","nullable":true}},"required":["account_id","account_owner","completed_deals","completed_projects","currency_unit","customer","health_score","linked_projects","logo","logo_path","total_deals","total_formatted_revenue","total_projects","total_revenue"]}}}}
```

## The ActivityLog object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"ActivityLog":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"log_id":{"type":"string","maxLength":25},"title":{"type":"string"},"raw_description":{"type":"object","additionalProperties":{}},"description":{"type":"string"},"html_description":{"type":"string"},"created_by":{"type":"string","readOnly":true},"icon":{"type":"string","readOnly":true},"time_ago":{"type":"string","readOnly":true},"avatar":{"type":"string","readOnly":true}},"required":["avatar","created_by","icon","log_id","time_ago"]}}}}
```

## The Attachment object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Attachment":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"id":{"type":"string","readOnly":true},"attach_id":{"type":"string"},"organization":{"type":"string"},"module_id":{"type":"integer"},"module_name":{"type":"string"},"sub_module":{"type":"string"},"storage_type":{"type":"string"},"reference_id":{"type":"string","nullable":true},"account_id":{"type":"string","nullable":true},"file_name":{"type":"string"},"zip_file_name":{"type":"string"},"file_type":{"type":"string","maxLength":225},"file_size":{"type":"integer"},"file_path":{"type":"string"},"file_icon":{"type":"string"},"version":{"type":"integer","nullable":true},"description":{"type":"string"},"creation_time":{"type":"string","format":"date-time"},"last_update_time":{"type":"string","format":"date-time"},"is_deleted":{"type":"boolean"},"created_by":{"type":"string"},"is_private":{"type":"boolean"},"show_download_icon":{"type":"boolean","default":true},"tags":{"type":"array","items":{}},"private_users":{"type":"array","items":{}},"parent_attach_id":{"type":"string","nullable":true},"show_in_document":{"type":"boolean"},"document_name":{"type":"string"},"latest_version":{"type":"boolean","default":true},"view_count":{"type":"integer"},"download_count":{"type":"integer"},"share_count":{"type":"integer"},"in_line_type":{"type":"integer"},"file_hash":{"type":"string","nullable":true},"public_config":{"type":"object","additionalProperties":{},"nullable":true},"external_file_url":{"type":"string","nullable":true},"menu_type":{"type":"string","nullable":true},"editorjs_content":{"type":"object","additionalProperties":{},"nullable":true},"editor_html_content":{"type":"string","nullable":true},"is_editorjs_document":{"type":"boolean"},"document_status":{"allOf":[{"$ref":"#/components/schemas/DocumentStatusEnum"}],"default":"published"},"published_at":{"type":"string","format":"date-time","nullable":true},"signature_status":{"nullable":true,"default":"none","oneOf":[{"$ref":"#/components/schemas/SignatureStatusEnum"},{"$ref":"#/components/schemas/BlankEnum"},{"$ref":"#/components/schemas/NullEnum"}]},"signatures_required":{"type":"integer","nullable":true},"signatures_completed":{"type":"integer","nullable":true},"signature_enabled":{"type":"boolean"},"external_template_id":{"type":"integer","nullable":true},"external_template_slug":{"type":"string","nullable":true},"external_frozen_template_id":{"type":"integer","nullable":true},"external_frozen_template_slug":{"type":"string","nullable":true},"external_submission_id":{"type":"integer","nullable":true},"signature_recipients":{"type":"array","items":{},"nullable":true},"external_signed_document_url":{"type":"string","nullable":true},"external_audit_log_url":{"type":"string","nullable":true},"signed_at":{"type":"string","format":"date-time","nullable":true},"is_signed_version":{"type":"boolean"},"original_attach_id":{"type":"string","nullable":true},"version_type":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/VersionTypeEnum"},{"$ref":"#/components/schemas/BlankEnum"},{"$ref":"#/components/schemas/NullEnum"}]}},"required":["attach_id","document_name","id","organization"]},"DocumentStatusEnum":{"enum":["draft","published"],"type":"string","description":"* `draft` - draft\n* `published` - published"},"SignatureStatusEnum":{"enum":["none","pending","partial","signed","declined"],"type":"string","description":"* `none` - none\n* `pending` - pending\n* `partial` - partial\n* `signed` - signed\n* `declined` - declined"},"BlankEnum":{"enum":[""]},"NullEnum":{"enum":[null]},"VersionTypeEnum":{"enum":["edit","signature"],"type":"string","description":"* `edit` - edit\n* `signature` - signature"}}}}
```

## The BlankEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"BlankEnum":{"enum":[""]}}}}
```

## The CompanyList object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"CompanyList":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"id":{"type":"string","readOnly":true},"company_id":{"type":"string"},"display_id":{"type":"string","nullable":true,"maxLength":100},"company_name":{"type":"string","maxLength":255},"domain":{"type":"string","nullable":true},"linkedin_url":{"type":"string","readOnly":true},"twitter_url":{"type":"string","readOnly":true},"hq_location":{"type":"string","readOnly":true},"hq_country":{"type":"string","readOnly":true},"industry":{"type":"string","readOnly":true},"employee_range":{"type":"string","nullable":true},"estimated_arr":{"type":"string","readOnly":true},"description":{"type":"string","nullable":true},"logo_url":{"type":"string","readOnly":true},"company_owner":{"type":"string","readOnly":true},"company_type":{"type":"string","nullable":true},"lead_status":{"type":"string","readOnly":true},"icp_fit":{"type":"string","nullable":true},"customer_segment":{"type":"string","readOnly":true},"connection_strength":{"type":"string","nullable":true},"connection_source":{"type":"string","nullable":true},"operating_regions":{"type":"string","readOnly":true},"category":{"type":"string","nullable":true},"vendor_being_replaced":{"type":"string","nullable":true},"replacement_urgency":{"type":"string","nullable":true},"partner_type":{"type":"string","readOnly":true},"parent_company":{"type":"string","nullable":true},"investors":{"type":"string","readOnly":true},"partners":{"type":"string","readOnly":true},"subsidiaries":{"type":"string","readOnly":true},"contacts_count":{"type":"string","readOnly":true},"is_draft":{"type":"boolean"},"creation_time":{"type":"string","format":"date-time"},"last_update_time":{"type":"string","format":"date-time"},"record_source":{"type":"string","readOnly":true},"custom_fields":{"type":"object","additionalProperties":{}},"associated_deal_project":{"type":"string","readOnly":true}},"required":["associated_deal_project","company_id","company_name","company_owner","contacts_count","customer_segment","estimated_arr","hq_country","hq_location","id","industry","investors","lead_status","linkedin_url","logo_url","operating_regions","partner_type","partners","record_source","subsidiaries","twitter_url"]}}}}
```

## The ContactList object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"ContactList":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"id":{"type":"string","readOnly":true},"contact_id":{"type":"string"},"display_id":{"type":"string","nullable":true,"maxLength":100},"full_name":{"type":"string","maxLength":255},"profile_image":{"type":"string","nullable":true},"profile_image_url":{"type":"string","readOnly":true},"primary_email":{"type":"string","readOnly":true},"company":{"type":"string","readOnly":true},"lead_source":{"type":"string","readOnly":true},"contact_owner":{"type":"string","readOnly":true},"associated_deals":{"type":"array","items":{}},"lead_status":{"type":"string","nullable":true},"person_category":{"type":"string","readOnly":true},"custom_fields":{"type":"object","additionalProperties":{}},"contact_stage":{"type":"string","nullable":true},"is_draft":{"type":"boolean"},"job_title":{"type":"string","nullable":true},"department":{"type":"string","nullable":true},"location":{"type":"object","additionalProperties":{},"nullable":true},"language":{"type":"string","nullable":true},"seniority_level":{"type":"string","readOnly":true},"buying_role":{"type":"string","readOnly":true},"influence_level":{"type":"integer","nullable":true},"interest_level":{"type":"integer","nullable":true},"preferred_communication_channel":{"type":"string","nullable":true},"do_not_contact":{"type":"string","nullable":true,"maxLength":10},"phone":{"type":"string","readOnly":true},"whatsapp_number":{"type":"string","readOnly":true},"campaign":{"type":"string","nullable":true},"timezone":{"type":"string","nullable":true},"signoff_authority":{"type":"string","nullable":true},"lead_score":{"type":"number","format":"double","nullable":true},"last_activity_date":{"type":"string","format":"date-time","nullable":true},"linkedin_url":{"type":"string","readOnly":true},"twitter_url":{"type":"string","readOnly":true},"linked_user":{"type":"string","readOnly":true},"creation_time":{"type":"string","format":"date-time"},"last_update_time":{"type":"string","format":"date-time"},"reports_to":{"type":"object","additionalProperties":{},"nullable":true},"reporting_hierarchy_level":{"type":"integer","nullable":true},"reporting_confidence":{"type":"number","format":"double","nullable":true},"reporting_source":{"type":"string","nullable":true},"associated_deal_project":{"type":"string","readOnly":true},"login_info":{"type":"string","readOnly":true}},"required":["associated_deal_project","buying_role","company","contact_id","contact_owner","full_name","id","lead_source","linked_user","linkedin_url","login_info","person_category","phone","primary_email","profile_image_url","seniority_level","twitter_url","whatsapp_number"]}}}}
```

## The Dashboard object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Dashboard":{"type":"object","description":"Main dashboard serializer","properties":{"dashboard_id":{"type":"string","maxLength":25},"dashboard_name":{"type":"string","maxLength":100},"description":{"type":"string"},"dashboard_type":{"allOf":[{"$ref":"#/components/schemas/DashboardTypeEnum"}],"default":"overview"},"is_system_defined":{"type":"boolean","default":true},"is_default":{"type":"boolean"},"visibility":{"allOf":[{"$ref":"#/components/schemas/VisibilityEnum"}],"default":"public"},"widgets":{"type":"array","items":{"$ref":"#/components/schemas/DashboardWidget"}},"access_list":{"type":"array","items":{"$ref":"#/components/schemas/DashboardAccess"}},"access_count":{"type":"integer"},"cache_ttl":{"type":"integer","default":300},"layout_config":{"type":"object","additionalProperties":{}},"theme_config":{"type":"object","additionalProperties":{}},"time_range_default":{"type":"string","default":"30_days","maxLength":20}},"required":["dashboard_id","dashboard_name"]},"DashboardTypeEnum":{"enum":["overview","deals","projects","revenue","activities","custom"],"type":"string","description":"* `overview` - overview\n* `deals` - deals\n* `projects` - projects\n* `revenue` - revenue\n* `activities` - activities\n* `custom` - custom"},"VisibilityEnum":{"enum":["public","private","restricted"],"type":"string","description":"* `public` - public\n* `private` - private\n* `restricted` - restricted"},"DashboardWidget":{"type":"object","description":"Serializer for dashboard widget configuration","properties":{"widget_id":{"type":"string","maxLength":25},"widget_type":{"type":"string","maxLength":50},"position":{"type":"object","additionalProperties":{}},"config":{"type":"object","additionalProperties":{}},"is_visible":{"type":"boolean","default":true},"refresh_interval":{"type":"integer","default":300},"last_refreshed":{"type":"string","format":"date-time"}},"required":["widget_id","widget_type"]},"DashboardAccess":{"type":"object","description":"Serializer for dashboard access control","properties":{"access_type":{"$ref":"#/components/schemas/AccessTypeEnum"},"access_id":{"type":"string","maxLength":25},"permission_level":{"allOf":[{"$ref":"#/components/schemas/PermissionLevelEnum"}],"default":"view"},"granted_by":{"type":"string","maxLength":25},"granted_at":{"type":"string","format":"date-time","default":"2026-07-01T11:44:45.305634Z"}},"required":["access_id","access_type"]},"AccessTypeEnum":{"enum":["user","role","team"],"type":"string","description":"* `user` - user\n* `role` - role\n* `team` - team"},"PermissionLevelEnum":{"enum":["view","edit","admin"],"type":"string","description":"* `view` - view\n* `edit` - edit\n* `admin` - admin"}}}}
```

## The DashboardAccess object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"DashboardAccess":{"type":"object","description":"Serializer for dashboard access control","properties":{"access_type":{"$ref":"#/components/schemas/AccessTypeEnum"},"access_id":{"type":"string","maxLength":25},"permission_level":{"allOf":[{"$ref":"#/components/schemas/PermissionLevelEnum"}],"default":"view"},"granted_by":{"type":"string","maxLength":25},"granted_at":{"type":"string","format":"date-time","default":"2026-07-01T11:44:45.305634Z"}},"required":["access_id","access_type"]},"AccessTypeEnum":{"enum":["user","role","team"],"type":"string","description":"* `user` - user\n* `role` - role\n* `team` - team"},"PermissionLevelEnum":{"enum":["view","edit","admin"],"type":"string","description":"* `view` - view\n* `edit` - edit\n* `admin` - admin"}}}}
```

## The DashboardTypeEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"DashboardTypeEnum":{"enum":["overview","deals","projects","revenue","activities","custom"],"type":"string","description":"* `overview` - overview\n* `deals` - deals\n* `projects` - projects\n* `revenue` - revenue\n* `activities` - activities\n* `custom` - custom"}}}}
```

## The DashboardWidget object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"DashboardWidget":{"type":"object","description":"Serializer for dashboard widget configuration","properties":{"widget_id":{"type":"string","maxLength":25},"widget_type":{"type":"string","maxLength":50},"position":{"type":"object","additionalProperties":{}},"config":{"type":"object","additionalProperties":{}},"is_visible":{"type":"boolean","default":true},"refresh_interval":{"type":"integer","default":300},"last_refreshed":{"type":"string","format":"date-time"}},"required":["widget_id","widget_type"]}}}}
```

## The DocumentStatusEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"DocumentStatusEnum":{"enum":["draft","published"],"type":"string","description":"* `draft` - draft\n* `published` - published"}}}}
```

## The Embedded object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Embedded":{"type":"object","description":"Serializer for EmbeddedDocuments.\n\nSkips id field and uniqueness validation.\nWhen saving, skips calling instance.save","properties":{"name":{"type":"string"},"date":{"type":"string","format":"date"},"is_repeat_annually":{"type":"boolean"}},"required":["date","name"]}}}}
```

## The Holi object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Holi":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"holidays_id":{"type":"string","maxLength":25},"country":{"type":"string"},"state":{"type":"string"},"holidays":{"type":"array","items":{"$ref":"#/components/schemas/Embedded"}}},"required":["holidays_id"]},"Embedded":{"type":"object","description":"Serializer for EmbeddedDocuments.\n\nSkips id field and uniqueness validation.\nWhen saving, skips calling instance.save","properties":{"name":{"type":"string"},"date":{"type":"string","format":"date"},"is_repeat_annually":{"type":"boolean"}},"required":["date","name"]}}}}
```

## The InteractionsList object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"InteractionsList":{"type":"object","description":"Serializer for listing interactions with pagination","properties":{"interaction_id":{"type":"string","maxLength":25},"content":{"type":"string"},"interaction_type":{"type":"string","default":"interaction"},"is_pinned":{"type":"boolean"},"is_resolved":{"type":"boolean"},"is_private":{"type":"boolean"},"visible_to_users":{"type":"array","items":{"type":"string"}},"reply_count":{"type":"integer"},"mentions":{"type":"array","items":{"$ref":"#/components/schemas/Embedded"}},"reactions":{"type":"array","items":{"$ref":"#/components/schemas/Embedded"}},"formatted_creation_time":{"type":"string","readOnly":true},"user_details":{"type":"string","readOnly":true},"is_read":{"type":"string","readOnly":true},"attachment_files":{"type":"string","readOnly":true},"reply_interactions":{"type":"string","readOnly":true},"thread_level":{"type":"integer"},"parent_interaction_id":{"type":"string","nullable":true,"maxLength":25},"reactions_summary":{"type":"string","readOnly":true},"is_system_generated":{"type":"boolean"}},"required":["attachment_files","content","formatted_creation_time","interaction_id","is_read","reactions_summary","reply_interactions","user_details"]},"Embedded":{"type":"object","description":"Serializer for EmbeddedDocuments.\n\nSkips id field and uniqueness validation.\nWhen saving, skips calling instance.save","properties":{"name":{"type":"string"},"date":{"type":"string","format":"date"},"is_repeat_annually":{"type":"boolean"}},"required":["date","name"]}}}}
```

## The ItemTypeEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"ItemTypeEnum":{"enum":["survey","survey_template","form"],"type":"string","description":"* `survey` - survey\n* `survey_template` - survey_template\n* `form` - form"}}}}
```

## The Items object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Items":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"item_id":{"type":"string","maxLength":25},"display_id":{"type":"string","maxLength":10},"title":{"type":"string"},"item_type":{"type":"integer","default":1},"due_date":{"type":"string","format":"date"},"tags":{"type":"array","items":{}},"is_completed":{"type":"boolean"},"priority":{"type":"object","additionalProperties":{}},"status":{"type":"object","additionalProperties":{}},"owner":{"type":"object","additionalProperties":{}},"project_id":{"type":"string","maxLength":25},"milestone_id":{"type":"string","maxLength":25},"is_private":{"type":"boolean"},"visibility":{"type":"string","default":"shared"},"is_starred":{"type":"boolean"},"is_predefined":{"type":"boolean"},"users":{"type":"string","readOnly":true},"is_risk":{"type":"boolean"},"is_blocked":{"type":"boolean"},"attachments":{"type":"string","readOnly":true},"time_track_id":{"type":"string"},"creation_time":{"type":"string","format":"date-time"},"last_update_time":{"type":"string","format":"date-time"},"sub_items":{"type":"string","readOnly":true},"parent_id":{"type":"string","nullable":true,"maxLength":25},"is_timer_running":{"type":"boolean"},"total_elapsed_time":{"type":"string","readOnly":true},"position":{"type":"integer"},"is_recurring":{"type":"boolean"},"parent_recurring_id":{"type":"string","nullable":true,"maxLength":25},"recurrence_pattern":{"type":"string","readOnly":true},"recurrence_status":{"type":"string","default":"active"},"is_recurring_child":{"type":"string","readOnly":true},"custom_fields":{"type":"string","readOnly":true},"form_id":{"type":"string","nullable":true,"maxLength":25},"form_structure":{"type":"object","additionalProperties":{},"nullable":true},"form_responses":{"type":"object","additionalProperties":{},"nullable":true},"meeting_summary_id":{"type":"string","nullable":true,"maxLength":25},"calendar_id":{"type":"string","nullable":true,"maxLength":25},"external_map":{"type":"object","additionalProperties":{},"nullable":true}},"required":["attachments","custom_fields","is_recurring_child","item_id","recurrence_pattern","sub_items","title","total_elapsed_time","users"]}}}}
```

## The MeetingInsights object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"MeetingInsights":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"meeting_insight_id":{"type":"string"},"calendar_id":{"type":"string"},"title":{"type":"string","readOnly":true},"start_time":{"type":"string","readOnly":true},"duration":{"type":"string","readOnly":true},"users":{"type":"string","readOnly":true},"status":{"type":"string","readOnly":true},"is_favorite":{"type":"string","readOnly":true}},"required":["calendar_id","duration","is_favorite","meeting_insight_id","start_time","status","title","users"]}}}}
```

## The NotifyHub object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"NotifyHub":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"notification_id":{"type":"string","maxLength":25},"user_id":{"type":"string"},"notification_type":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"notification_obj":{"type":"object","additionalProperties":{}},"notify_time":{"type":"string","format":"date-time"},"read":{"type":"boolean"},"category":{"type":"string"},"is_system":{"type":"boolean"}},"required":["notification_id","user_id"]}}}}
```

## The NullEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"NullEnum":{"enum":[null]}}}}
```

## The PatchedDashboard object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"PatchedDashboard":{"type":"object","description":"Main dashboard serializer","properties":{"dashboard_id":{"type":"string","maxLength":25},"dashboard_name":{"type":"string","maxLength":100},"description":{"type":"string"},"dashboard_type":{"allOf":[{"$ref":"#/components/schemas/DashboardTypeEnum"}],"default":"overview"},"is_system_defined":{"type":"boolean","default":true},"is_default":{"type":"boolean"},"visibility":{"allOf":[{"$ref":"#/components/schemas/VisibilityEnum"}],"default":"public"},"widgets":{"type":"array","items":{"$ref":"#/components/schemas/DashboardWidget"}},"access_list":{"type":"array","items":{"$ref":"#/components/schemas/DashboardAccess"}},"access_count":{"type":"integer"},"cache_ttl":{"type":"integer","default":300},"layout_config":{"type":"object","additionalProperties":{}},"theme_config":{"type":"object","additionalProperties":{}},"time_range_default":{"type":"string","default":"30_days","maxLength":20}}},"DashboardTypeEnum":{"enum":["overview","deals","projects","revenue","activities","custom"],"type":"string","description":"* `overview` - overview\n* `deals` - deals\n* `projects` - projects\n* `revenue` - revenue\n* `activities` - activities\n* `custom` - custom"},"VisibilityEnum":{"enum":["public","private","restricted"],"type":"string","description":"* `public` - public\n* `private` - private\n* `restricted` - restricted"},"DashboardWidget":{"type":"object","description":"Serializer for dashboard widget configuration","properties":{"widget_id":{"type":"string","maxLength":25},"widget_type":{"type":"string","maxLength":50},"position":{"type":"object","additionalProperties":{}},"config":{"type":"object","additionalProperties":{}},"is_visible":{"type":"boolean","default":true},"refresh_interval":{"type":"integer","default":300},"last_refreshed":{"type":"string","format":"date-time"}},"required":["widget_id","widget_type"]},"DashboardAccess":{"type":"object","description":"Serializer for dashboard access control","properties":{"access_type":{"$ref":"#/components/schemas/AccessTypeEnum"},"access_id":{"type":"string","maxLength":25},"permission_level":{"allOf":[{"$ref":"#/components/schemas/PermissionLevelEnum"}],"default":"view"},"granted_by":{"type":"string","maxLength":25},"granted_at":{"type":"string","format":"date-time","default":"2026-07-01T11:44:45.305634Z"}},"required":["access_id","access_type"]},"AccessTypeEnum":{"enum":["user","role","team"],"type":"string","description":"* `user` - user\n* `role` - role\n* `team` - team"},"PermissionLevelEnum":{"enum":["view","edit","admin"],"type":"string","description":"* `view` - view\n* `edit` - edit\n* `admin` - admin"}}}}
```

## The PatchedRoleOpt object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"PatchedRoleOpt":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"role_id":{"type":"string"},"role_name":{"type":"string","maxLength":100},"is_customer_role":{"type":"boolean"},"is_admin_role":{"type":"boolean"},"is_manager_role":{"type":"boolean"},"is_observer_role":{"type":"boolean"},"is_user_role":{"type":"boolean"},"is_partner_role":{"type":"boolean"},"is_organization_admin_role":{"type":"boolean"},"is_pre_sales_consultant":{"type":"boolean"},"is_system_role":{"type":"boolean"}}}}}}
```

## The PatchedTags object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"PatchedTags":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"tag_id":{"type":"string","maxLength":25},"tag_name":{"type":"string"},"description":{"type":"string"},"tag_type":{"type":"integer"},"is_predefined":{"type":"boolean"}}}}}}
```

## The PermissionLevelEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"PermissionLevelEnum":{"enum":["view","edit","admin"],"type":"string","description":"* `view` - view\n* `edit` - edit\n* `admin` - admin"}}}}
```

## The Projects object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Projects":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"project_id":{"type":"string","maxLength":25},"project_name":{"type":"string"},"description":{"type":"string"},"start_date":{"type":"string","format":"date-time"},"due_date":{"type":"string","format":"date-time"},"project_score":{"type":"string","readOnly":true},"tasks_count":{"type":"integer"},"milestones_count":{"type":"integer"},"phase":{"type":"object","additionalProperties":{}},"tags":{"type":"array","items":{}},"project_manager":{"type":"object","additionalProperties":{}},"is_arr":{"type":"boolean"},"revenue":{"type":"integer"},"show_forecasted_date":{"type":"boolean"},"forecasted_date":{"type":"string","format":"date-time"},"project_fee":{"type":"integer"},"project_owner":{"type":"string","readOnly":true},"status":{"type":"object","additionalProperties":{}},"template_id":{"type":"string"},"currency_unit":{"type":"string","readOnly":true},"stages":{"type":"string","readOnly":true},"project_team":{"type":"string","readOnly":true},"visible_to_all":{"type":"boolean","default":true},"account_id":{"type":"string","maxLength":25},"insights":{"type":"string","readOnly":true},"current_stage":{"type":"string","readOnly":true},"milestone_status":{"type":"string","readOnly":true},"recent_activities":{"type":"string","readOnly":true},"time_left":{"type":"string","readOnly":true},"time_spent":{"type":"string","readOnly":true},"customer_project_owner":{"type":"string","readOnly":true},"partner_orgs":{"type":"string","readOnly":true},"project_type_str":{"type":"string","readOnly":true},"project_type":{"type":"string"},"billing_model":{"type":"string"},"billing_frequency":{"type":"string"},"hourly_rate":{"type":"integer"},"monthly_rate":{"type":"integer"},"expected_onboarding_fee":{"type":"integer"},"project_duration":{"type":"integer"},"external_map":{"type":"object","additionalProperties":{},"nullable":true},"template_name":{"type":"string","readOnly":true},"template_desc":{"type":"string","readOnly":true},"pipeline_id":{"type":"string","nullable":true},"calculated_revenue":{"type":"string","readOnly":true},"object_source":{"type":"string","readOnly":true},"current_milestone_id":{"type":"string","nullable":true},"position":{"type":"integer"},"expected_deal_value":{"type":"integer"},"deal_resources":{"type":"integer"},"contract_duration":{"type":"integer"},"pipeline_stages":{"type":"string","readOnly":true},"current_pipe_stage":{"type":"string","readOnly":true},"formatted_deal_value":{"type":"string","readOnly":true},"formatted_revenue":{"type":"string","readOnly":true},"formatted_other_revenue":{"type":"string","readOnly":true},"other_revenue":{"type":"string","readOnly":true},"custom_fields":{"type":"array","items":{}},"created_by":{"type":"string","nullable":true},"invite_type":{"type":"string","nullable":true}},"required":["calculated_revenue","currency_unit","current_pipe_stage","current_stage","customer_project_owner","formatted_deal_value","formatted_other_revenue","formatted_revenue","insights","milestone_status","object_source","other_revenue","partner_orgs","pipeline_stages","project_id","project_owner","project_score","project_team","project_type_str","recent_activities","stages","template_desc","template_name","time_left","time_spent"]}}}}
```

## The ProjetlyCalendar object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"ProjetlyCalendar":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"calendar_id":{"type":"string","maxLength":25},"title":{"type":"string"},"class_name":{"type":"string"},"location":{"type":"string"},"description":{"type":"string"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"users":{"type":"string","readOnly":true},"optional_users":{"type":"string","readOnly":true},"all_day":{"type":"boolean"},"extended_props":{"type":"object","additionalProperties":{}},"link":{"type":"string"},"repeat":{"type":"object","additionalProperties":{}},"project":{"type":"string"},"milestone_id":{"type":"string","nullable":true,"maxLength":25},"is_video_conference":{"type":"boolean"},"video_conference_type":{"type":"string"},"timezone":{"type":"object","additionalProperties":{}},"is_meeting_cancelled":{"type":"boolean"},"cancel_note":{"type":"string"},"attendees":{"type":"string","readOnly":true},"push_to_google":{"type":"boolean"},"push_to_microsoft":{"type":"boolean"}},"required":["attendees","calendar_id","optional_users","title","users"]}}}}
```

## The RoleOpt object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"RoleOpt":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"role_id":{"type":"string"},"role_name":{"type":"string","maxLength":100},"is_customer_role":{"type":"boolean"},"is_admin_role":{"type":"boolean"},"is_manager_role":{"type":"boolean"},"is_observer_role":{"type":"boolean"},"is_user_role":{"type":"boolean"},"is_partner_role":{"type":"boolean"},"is_organization_admin_role":{"type":"boolean"},"is_pre_sales_consultant":{"type":"boolean"},"is_system_role":{"type":"boolean"}},"required":["role_id","role_name"]}}}}
```

## The SignatureStatusEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"SignatureStatusEnum":{"enum":["none","pending","partial","signed","declined"],"type":"string","description":"* `none` - none\n* `pending` - pending\n* `partial` - partial\n* `signed` - signed\n* `declined` - declined"}}}}
```

## The SurveyDetail object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"SurveyDetail":{"type":"object","description":"Serializer for survey detail view - all fields","properties":{"survey_id":{"type":"string","maxLength":25},"organization":{"type":"string","maxLength":25},"account_id":{"type":"string","nullable":true,"maxLength":25},"item_type":{"allOf":[{"$ref":"#/components/schemas/ItemTypeEnum"}],"default":"survey"},"name":{"type":"string"},"description":{"type":"string"},"form_structure":{"type":"object","additionalProperties":{}},"form_style":{"type":"string","default":"IN_APP"},"form_container_style":{"type":"string","default":"POPUP"},"background_color":{"type":"string","default":"#F6F7F7"},"background_url":{"type":"string"},"field_border":{"type":"string","default":"Rounded"},"action_color":{"type":"string","default":"#0468BF"},"status":{"type":"string","default":"draft"},"is_active":{"type":"boolean","default":true},"end_date":{"type":"string","format":"date-time","nullable":true},"view_count":{"type":"integer"},"response_count":{"type":"integer"},"field_count":{"type":"string","readOnly":true},"creation_time":{"type":"string","readOnly":true},"tags":{"type":"array","items":{}}},"required":["creation_time","field_count","name","organization","survey_id"]},"ItemTypeEnum":{"enum":["survey","survey_template","form"],"type":"string","description":"* `survey` - survey\n* `survey_template` - survey_template\n* `form` - form"}}}}
```

## The Tags object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Tags":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"tag_id":{"type":"string","maxLength":25},"tag_name":{"type":"string"},"description":{"type":"string"},"tag_type":{"type":"integer"},"is_predefined":{"type":"boolean"}},"required":["tag_id"]}}}}
```

## The Template object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Template":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"template_id":{"type":"string","maxLength":25},"template_name":{"type":"string"},"description":{"type":"string"},"template_config":{"type":"object","additionalProperties":{}},"is_predefined":{"type":"boolean"},"options":{"type":"object","additionalProperties":{}}},"required":["template_id"]}}}}
```

## The Users object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"Users":{"type":"object","description":"Serializer for Documents.\n\nRecognized primitve fields:\n\n    * ``StringField``\n    * ``URLField``\n    * ``EmailField``\n    * ``IntField``\n    * ``LongField``\n    * ``FloatField``\n    * ``DecimalField``\n    * ``BooleanField``\n    * ``DateTimeField``\n    * ``ComplexDateTimeField``\n    * ``ObjectIdField``\n    * ``SequenceField`` (assumes it has integer counter)\n    * ``UUIDField``\n    * ``GeoPointField``\n    * ``GeoJsonBaseField`` (all those fields)\n    * ``DateField``\n\nCompound fields: ``ListField`` and ``DictField`` are mapped to corresponding DRF fields, with respect to nested field specification.\n\nThe ``ReferenceField`` is handled like ``ForeignKey`` in DRF: there nested serializer autogenerated if serializer depth greater then 0, otherwise it's handled by it's own (results as ``str(id)``).\n\nFor ``EmbeddedDocumentField`` also nested serializer autogenerated for non-zero depth, otherwise it is skipped. TODO: THIS IS PROBABLY WRONG AND SHOULD BE FIXED.\n\nGeneric fields ``GenericReferenceField`` and ``GenericEmbeddedDocumentField`` are handled by their own with corresponding serializer fields.\n\nNot well supported or untested:\n\n    ``FileField``\n    ``ImageField``\n    ``BinaryField``\n\nAll other fields are mapped to ``DocumentField`` and probably will work wrong.","properties":{"profile_id":{"type":"string","maxLength":25},"user_id":{"type":"string"},"phone_no":{"type":"string","readOnly":true},"designation":{"type":"string","nullable":true},"tags":{"type":"array","items":{},"nullable":true},"email":{"type":"string","readOnly":true},"role_id":{"type":"string","readOnly":true},"is_demo_data":{"type":"boolean"},"invite_token":{"type":"string","nullable":true},"organization":{"type":"string","maxLength":25},"background_image":{"type":"string","readOnly":true},"profile_image":{"type":"string","readOnly":true},"projects":{"type":"string","readOnly":true},"tasks":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"role":{"type":"string","readOnly":true},"cover_image":{"type":"string","readOnly":true},"joining_date":{"type":"string","format":"date","nullable":true},"is_active":{"type":"string","readOnly":true},"is_fir_login":{"type":"string","readOnly":true},"deals":{"type":"string","readOnly":true},"department":{"type":"string","nullable":true},"reports_to":{"type":"object","additionalProperties":{},"nullable":true},"is_team_head":{"type":"boolean"}},"required":["background_image","cover_image","deals","email","full_name","is_active","is_fir_login","organization","phone_no","profile_id","profile_image","projects","role","role_id","tasks"]}}}}
```

## The VersionTypeEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"VersionTypeEnum":{"enum":["edit","signature"],"type":"string","description":"* `edit` - edit\n* `signature` - signature"}}}}
```

## The VisibilityEnum object

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"components":{"schemas":{"VisibilityEnum":{"enum":["public","private","restricted"],"type":"string","description":"* `public` - public\n* `private` - private\n* `restricted` - restricted"}}}}
```
