> 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/contacts.md).

# Contacts

## All Contacts

> This endpoint is used to fetch all contacts in the current organization

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/":{"get":{"operationId":"contact_list","description":"This endpoint is used to fetch all contacts in the current organization","summary":"All Contacts","parameters":[{"in":"query","name":"items_per_page","schema":{"type":"integer"},"description":"Items Per Page","required":true},{"in":"query","name":"page","schema":{"type":"integer"},"description":"Page Number","required":true},{"in":"query","name":"reverse","schema":{"type":"boolean"},"description":"Sorting Order"},{"in":"query","name":"sort","schema":{"type":"string"},"description":"Sorting Key"}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContactList"}}}},"description":""}}}}}}
```

## Creates a new contact

> This endpoint is used to save a new contact for the current organization

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/":{"post":{"operationId":"contact_create","description":"This endpoint is used to save a new contact for the current organization","summary":"Creates a new contact","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## Gets a contact with the given id

> This endpoint is used to fetch a contact details for the current organization

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/{id}/":{"get":{"operationId":"contact_retrieve","description":"This endpoint is used to fetch a contact details for the current organization","summary":"Gets a contact with the given id","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Edits the contact with the given id

> This endpoint is used to edit a contact for the current organization

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/{id}/":{"put":{"operationId":"contact_update","description":"This endpoint is used to edit a contact for the current organization","summary":"Edits the contact with the given id","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## Deletes the contact with the given id

> This endpoint is used to delete a contact for the current organization

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/{id}/":{"delete":{"operationId":"contact_destroy","description":"This endpoint is used to delete a contact for the current organization","summary":"Deletes the contact with the given id","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"tags":["Contacts"],"responses":{"204":{"description":"No response body"}}}}}}
```

## Get completed meetings for a contact

> Returns completed meetings (start <= now) a contact is part of, paginated by start time descending.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/{id}/completed-meetings/":{"get":{"operationId":"contact_completed_meetings_retrieve","description":"Returns completed meetings (start <= now) a contact is part of, paginated by start time descending.","summary":"Get completed meetings for a contact","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Get deals for a contact

> This endpoint returns deals for a given contact based on their visibility.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/{id}/deals/":{"get":{"operationId":"contact_deals_retrieve","description":"This endpoint returns deals for a given contact based on their visibility.","summary":"Get deals for a contact","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true},{"in":"query","name":"next_cursor","schema":{"type":"string"},"description":"Cursor for next page"},{"in":"query","name":"page_size","schema":{"type":"integer"},"description":"Items Per Page"}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Get projects for a contact

> This endpoint returns projects for a given contact based on their visibility.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/{id}/projects/":{"get":{"operationId":"contact_projects_retrieve","description":"This endpoint returns projects for a given contact based on their visibility.","summary":"Get projects for a contact","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true},{"in":"query","name":"next_cursor","schema":{"type":"string"},"description":"Cursor for next page"},{"in":"query","name":"page_size","schema":{"type":"integer"},"description":"Items Per Page"}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Get tasks for a contact

> This endpoint returns tasks assigned to or owned by a given contact.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/{id}/tasks/":{"get":{"operationId":"contact_tasks_retrieve","description":"This endpoint returns tasks assigned to or owned by a given contact.","summary":"Get tasks for a contact","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true},{"in":"query","name":"page_size","schema":{"type":"integer"},"description":"Items Per Page"}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Get upcoming meetings for a contact

> Returns upcoming meetings (start > now) a contact is part of, paginated by start time ascending.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/{id}/upcoming-meetings/":{"get":{"operationId":"contact_upcoming_meetings_retrieve","description":"Returns upcoming meetings (start > now) a contact is part of, paginated by start time ascending.","summary":"Get upcoming meetings for a contact","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"tags":["Contacts"],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Activities for a Contact

> Returns all activities for the contact id given

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/activities/":{"get":{"operationId":"contact_activities_retrieve","description":"Returns all activities for the contact id given","summary":"Activities for a Contact","tags":["Contacts"],"responses":{"200":{"description":"No response body"}}}}}}
```

## Bulk delete contacts

> Bulk delete contacts by their IDs

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/bulk-delete/":{"post":{"operationId":"contact_bulk_delete_create","description":"Bulk delete contacts by their IDs","summary":"Bulk delete contacts","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## Bulk publish contacts

> Publish multiple contacts by setting is\_draft=False

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/bulk-publish/":{"post":{"operationId":"contact_bulk_publish_create","description":"Publish multiple contacts by setting is_draft=False","summary":"Bulk publish contacts","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## POST /api/contact/del\_department/

> API endpoint that allows contacts to be created, viewed, deleted or edited.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/del_department/":{"post":{"operationId":"contact_del_department_create","description":"API endpoint that allows contacts to be created, viewed, deleted or edited.","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ContactList"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## POST /api/contact/del\_seniority\_level/

> API endpoint that allows contacts to be created, viewed, deleted or edited.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/del_seniority_level/":{"post":{"operationId":"contact_del_seniority_level_create","description":"API endpoint that allows contacts to be created, viewed, deleted or edited.","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ContactList"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## POST /api/contact/department/

> API endpoint that allows contacts to be created, viewed, deleted or edited.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/department/":{"post":{"operationId":"contact_department_create","description":"API endpoint that allows contacts to be created, viewed, deleted or edited.","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ContactList"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## POST /api/contact/dropdown/

> API endpoint that allows contacts to be created, viewed, deleted or edited.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/dropdown/":{"post":{"operationId":"contact_dropdown_create","description":"API endpoint that allows contacts to be created, viewed, deleted or edited.","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ContactList"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```

## Contact field config

> Get or save custom field definitions for contacts

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/field-config/":{"get":{"operationId":"contact_field_config_retrieve","description":"Get or save custom field definitions for contacts","summary":"Contact field config","tags":["Contacts"],"responses":{"200":{"description":"No response body"}}}}}}
```

## Contact field config

> Get or save custom field definitions for contacts

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/field-config/":{"put":{"operationId":"contact_field_config_update","description":"Get or save custom field definitions for contacts","summary":"Contact field config","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## Import contacts from CSV

> Bulk import contacts from a parsed + mapped CSV array

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/import/":{"post":{"operationId":"contact_import_create","description":"Bulk import contacts from a parsed + mapped CSV array","summary":"Import contacts from CSV","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## Contact form options

> Returns all dropdown options for the contact form

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}}},"paths":{"/api/contact/options/":{"get":{"operationId":"contact_options_retrieve","description":"Returns all dropdown options for the contact form","summary":"Contact form options","tags":["Contacts"],"responses":{"200":{"description":"No response body"}}}}}}
```

## POST /api/contact/seniority-level/

> API endpoint that allows contacts to be created, viewed, deleted or edited.

```json
{"openapi":"3.0.3","info":{"title":"Projetly API","version":"1.0.0"},"servers":[{"url":"https://api.app.projetly.io"}],"security":[{"bearerAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from /api/login/. Pass as: Authorization: Bearer <token>"}},"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"]}}},"paths":{"/api/contact/seniority-level/":{"post":{"operationId":"contact_seniority_level_create","description":"API endpoint that allows contacts to be created, viewed, deleted or edited.","tags":["Contacts"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ContactList"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactList"}}},"description":""}}}}}}
```
