80c0fc7ff108d61c0e8d89fd334da64bd224f7aa
8 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| 80c0fc7ff1 |
Activity as standard object (#6219)
In this PR I layout the first steps to migrate Activity to a traditional Standard objects Since this is a big transition, I'd rather split it into several deployments / PRs <img width="1512" alt="image" src="https://github.com/user-attachments/assets/012e2bbf-9d1b-4723-aaf6-269ef588b050"> --------- Co-authored-by: Charles Bochet <charles@twenty.com> Co-authored-by: bosiraphael <71827178+bosiraphael@users.noreply.github.com> Co-authored-by: Weiko <corentin@twenty.com> Co-authored-by: Faisal-imtiyaz123 <142205282+Faisal-imtiyaz123@users.noreply.github.com> Co-authored-by: Prateek Jain <prateekj1171998@gmail.com> |
|||
| 364caf0fdf |
fix: remove usage of probability field (#5877)
- fixes #5735 --------- Co-authored-by: Marie Stoppa <marie.stoppa@essec.edu> |
|||
| de51e653fc |
Authorize 0 depth (#6171)
Authorize depth 0   ## Edit ### Depth = 0 ``` { "data": { "people": [ { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } }, ... ]} ``` ### Depth = 1 ``` { "data": { "people": [ { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" }, "activityTargets": [], "favorites": [], "attachments": [], "timelineActivities": [], "company": { "id": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": "Linkedin", "domainName": "linkedin.com", "address": "", "employees": null, "idealCustomerProfile": false, "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "accountOwnerId": null, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" }, "annualRecurringRevenue": { "amountMicros": null, "currencyCode": "" } }, "messageParticipants": [ { "id": "20202020-0f2a-49d8-8aa2-ec8786153a0b", "role": "from", "handle": "outgoing", "displayName": "Christoph", "createdAt": "2024-07-08T16:08:50.028Z", "updatedAt": "2024-07-08T16:08:50.028Z", "messageId": "20202020-2b8a-405d-8f42-e820ca921421", "personId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "workspaceMemberId": "20202020-0687-4c41-b707-ed1bfca972a7" }, { "id": "20202020-fc7d-4ad8-9aea-b78bcbf79cdd", "role": "from", "handle": "outgoing", "displayName": "Christoph", "createdAt": "2024-07-08T16:08:50.028Z", "updatedAt": "2024-07-08T16:08:50.028Z", "messageId": "20202020-04c8-4f24-93f2-764948e95014", "personId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "workspaceMemberId": "20202020-0687-4c41-b707-ed1bfca972a7" } ], "calendarEventParticipants": [ { "id": "da8f47c3-8055-49ad-b7e4-9c9d5bbc1ecc", "handle": "christoph.calisto@linkedin.com", "displayName": "Christoph Calisto", "isOrganizer": true, "responseStatus": "ACCEPTED", "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "calendarEventId": "86083141-1c0e-494c-a1b6-85b1c6fefaa5", "personId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "workspaceMemberId": null } ], "pointOfContactForOpportunities": [ { "id": "20202020-be10-412b-a663-16bd3c2228e1", "name": "Opportunity 1", "closeDate": "2024-07-08T16:08:50.018Z", "probability": "0.5", "stage": "NEW", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "pointOfContactId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "amount": { "amountMicros": 100000, "currencyCode": "USD" } } ] }, ... ]} ``` ### Depth = 2 ``` { "data": { "people": [ { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" }, "activityTargets": [], "favorites": [], "attachments": [], "timelineActivities": [], "company": { "id": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": "Linkedin", "domainName": "linkedin.com", "address": "", "employees": null, "idealCustomerProfile": false, "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "accountOwnerId": null, "accountOwner": null, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" }, "annualRecurringRevenue": { "amountMicros": null, "currencyCode": "" }, "activityTargets": [], "favorites": [], "attachments": [], "timelineActivities": [], "people": [ { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } }, { "id": "20202020-ac73-4797-824e-87a1f5aea9e0", "email": "sylvie.palmer@linkedin.com", "jobTitle": "", "phone": "+33780123456", "city": "Los Angeles", "avatarUrl": "", "position": 2, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Sylvie", "lastName": "Palmer" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } } ], "opportunities": [ { "id": "20202020-be10-412b-a663-16bd3c2228e1", "name": "Opportunity 1", "closeDate": "2024-07-08T16:08:50.018Z", "probability": "0.5", "stage": "NEW", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "pointOfContactId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "amount": { "amountMicros": 100000, "currencyCode": "USD" } } ] }, "pointOfContactForOpportunities": [ { "id": "20202020-be10-412b-a663-16bd3c2228e1", "name": "Opportunity 1", "closeDate": "2024-07-08T16:08:50.018Z", "probability": "0.5", "stage": "NEW", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "pointOfContactId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "amount": { "amountMicros": 100000, "currencyCode": "USD" }, "favorites": [], "activityTargets": [], "attachments": [], "timelineActivities": [], "pointOfContact": { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } }, "company": { "id": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": "Linkedin", "domainName": "linkedin.com", "address": "", "employees": null, "idealCustomerProfile": false, "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "accountOwnerId": null, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" }, "annualRecurringRevenue": { "amountMicros": null, "currencyCode": "" } } } ], "messageParticipants": [ { "id": "20202020-0f2a-49d8-8aa2-ec8786153a0b", "role": "from", "handle": "outgoing", "displayName": "Christoph", "createdAt": "2024-07-08T16:08:50.028Z", "updatedAt": "2024-07-08T16:08:50.028Z", "messageId": "20202020-2b8a-405d-8f42-e820ca921421", "personId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "workspaceMemberId": "20202020-0687-4c41-b707-ed1bfca972a7", "message": { "id": "20202020-2b8a-405d-8f42-e820ca921421", "headerMessageId": "99ef24a8-2b8a-405d-8f42-e820ca921421", "direction": "outgoing", "subject": "Meeting Request", "text": "Hello, \n I hope this email finds you well. I am writing to request a meeting. I believe it would be beneficial for both parties to collaborate and explore potential opportunities. Would you be available for a meeting sometime next week? Please let me know your availability, and I will arrange a suitable time. \n Looking forward to your response.\n Best regards", "receivedAt": "2024-07-08T16:08:50.022Z", "createdAt": "2024-07-08T16:08:50.022Z", "updatedAt": "2024-07-08T16:08:50.022Z", "messageThreadId": "20202020-8bfa-453b-b99b-bc435a7d4da8" }, "person": { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } }, "workspaceMember": { "id": "20202020-0687-4c41-b707-ed1bfca972a7", "colorScheme": "Light", "locale": "en", "avatarUrl": "", "userEmail": "tim@apple.dev", "userId": "20202020-9e3b-46d4-a556-88b9ddc2b034", "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "name": { "firstName": "Tim", "lastName": "Apple" } } }, { "id": "20202020-fc7d-4ad8-9aea-b78bcbf79cdd", "role": "from", "handle": "outgoing", "displayName": "Christoph", "createdAt": "2024-07-08T16:08:50.028Z", "updatedAt": "2024-07-08T16:08:50.028Z", "messageId": "20202020-04c8-4f24-93f2-764948e95014", "personId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "workspaceMemberId": "20202020-0687-4c41-b707-ed1bfca972a7", "message": { "id": "20202020-04c8-4f24-93f2-764948e95014", "headerMessageId": "8f804a9a-04c8-4f24-93f2-764948e95014", "direction": "outgoing", "subject": "Inquiry Regarding Topic", "text": "Good Morning,\n I am writing to inquire about information. Could you please provide me with details regarding this topic? \n Your assistance in this matter would be greatly appreciated. Thank you in advance for your prompt response. \n Best regards,Tim", "receivedAt": "2024-07-08T16:08:50.022Z", "createdAt": "2024-07-08T16:08:50.022Z", "updatedAt": "2024-07-08T16:08:50.022Z", "messageThreadId": "20202020-634a-4fde-aa7c-28a0eaf203ca" }, "person": { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } }, "workspaceMember": { "id": "20202020-0687-4c41-b707-ed1bfca972a7", "colorScheme": "Light", "locale": "en", "avatarUrl": "", "userEmail": "tim@apple.dev", "userId": "20202020-9e3b-46d4-a556-88b9ddc2b034", "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "name": { "firstName": "Tim", "lastName": "Apple" } } } ], "calendarEventParticipants": [ { "id": "da8f47c3-8055-49ad-b7e4-9c9d5bbc1ecc", "handle": "christoph.calisto@linkedin.com", "displayName": "Christoph Calisto", "isOrganizer": true, "responseStatus": "ACCEPTED", "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "calendarEventId": "86083141-1c0e-494c-a1b6-85b1c6fefaa5", "personId": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "workspaceMemberId": null, "workspaceMember": null, "calendarEvent": { "id": "86083141-1c0e-494c-a1b6-85b1c6fefaa5", "title": "Meeting with Christoph", "isCanceled": false, "isFullDay": false, "startsAt": "2024-07-08T08:00:50.030Z", "endsAt": "2024-07-08T09:00:50.030Z", "externalCreatedAt": "2024-07-08T16:08:50.030Z", "externalUpdatedAt": "2024-07-08T16:08:50.030Z", "description": "Discuss project progress", "location": "Seattle", "iCalUID": "event1@calendar.com", "conferenceSolution": "Zoom", "recurringEventExternalId": "recurring1", "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "conferenceLink": { "label": "https://zoom.us/j/1234567890", "url": "https://zoom.us/j/1234567890" } }, "person": { "id": "20202020-1c0e-494c-a1b6-85b1c6fefaa5", "email": "christoph.calisto@linkedin.com", "jobTitle": "", "phone": "+33789012345", "city": "Seattle", "avatarUrl": "", "position": 1, "createdAt": "2024-07-08T16:08:50.011Z", "updatedAt": "2024-07-08T16:08:50.011Z", "companyId": "20202020-3ec3-4fe3-8997-b76aa0bfa408", "name": { "firstName": "Christoph", "lastName": "Callisto" }, "linkedinLink": { "label": "", "url": "" }, "xLink": { "label": "", "url": "" } } } ] }, ... ]} ``` |
|||
| 5c15fcd249 |
5805 typing issue in rest api (#5818)
Fixed types for: - uuid - email - datetime - date - number - currency.amountMicros - select - multiSelect ## Before  ## After  |
|||
| 01991fe717 |
4902 bug fix fix api filter for enum (#4909)
- Handle NUMERIC, SELECT, PROBABILITY, RATING FieldMetadataTypes Those filters now works: - http://localhost:3000/rest/opportunities?filter=stage[eq]:MEETING - http://localhost:3000/rest/opportunities?filter=stage[in]:[MEETING,NEW] When providing wrong enum values, the following error messages are returned: - http://localhost:3000/rest/opportunities?filter=stage[eq]:MEETINGG > BadRequestException: 'filter' enum value 'MEETINGG' not available in 'stage' enum. Available enum values are ['NEW', 'SCREENING', 'MEETING', 'PROPOSAL', 'CUSTOMER'] - http://localhost:3000/rest/opportunities?filter=stage[in]:[MEETING,NEWW] > BadRequestException: 'filter' enum value 'NEWW' not available in 'stage' enum. Available enum values are ['NEW', 'SCREENING', 'MEETING', 'PROPOSAL', 'CUSTOMER'] |
|||
| 5019b5febc |
feat: drop target column map (#4670)
This PR is dropping the column `targetColumnMap` of fieldMetadata entities. The goal of this column was to properly map field to their respecting column in the table. We decide to drop it and instead compute the column name on the fly when we need it, as it's more easier to support. Some parts of the code has been refactored to try making implementation of composite type more easier to understand and maintain. Fix #3760 --------- Co-authored-by: Charles Bochet <charles@twenty.com> |
|||
| e5c1309e8c |
feat: wip server folder structure (#4573)
* feat: wip server folder structure * fix: merge * fix: wrong merge * fix: remove unused file * fix: comment * fix: lint * fix: merge * fix: remove console.log * fix: metadata graphql arguments broken |
|||
| 2c09096edd |
Refactor backend folder structure (#4505)
* Refactor backend folder structure Co-authored-by: Charles Bochet <charles@twenty.com> * fix tests * fix * move yoga hooks --------- Co-authored-by: Charles Bochet <charles@twenty.com> |