-
Notifications
You must be signed in to change notification settings - Fork 0
Stored Data
Here is all the data structure of our database, with explanations on how and where we got the information in the first place. For every field, there is also a justification for why we store it.
The contact object refers to anyone that your organization had an interaction with. This means that if anyone in your organization used their business email and interacted either by email or in a meeting with an individual, this or these individuals will be stored in our database.
Using the Outlook API, we acquired all emails and events that the members of your organizations were a part of, and we then synchronize every email address (and name if it was available at the time) that were a part of those interactions. A second possible synchronization is the one from the Outlook contacts API (any contacts created by a user in Outlook). Contacts can also be created by users.
In addition to showing the interactions of the contacts, our goal is also to provide intelligence on a per-contact basis. In order to provide this intelligence, we need as much information as possible on the different sources of interactions.
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the contact | Yes |
ownerId |
string | 8-4-4-4-12 | The global unique identifier of the user that created said contact | Yes |
lastEditorId |
string | 8-4-4-4-12 | The global unique identifier of the user that last edited said contact | Yes |
firstname |
string | 64 characters max | The firstname of said contact | No |
lastname |
string | 64 characters max | The lastname of said contact | No |
domain |
string | 64 characters max | The domain to which organization this contact belongs to | Yes |
emailAddress_business |
string | 64 characters max | The business email of said contact | Yes |
emailAddress_personnal |
string | 64 characters max | The personnal email of said contact | No |
phone_business |
string | 32 characters max | The business phone of the contact | No |
phone_personnal |
string | 32 characters max | The mobile phone of the contact | No |
extension_business |
string | 32 characters max | the extension of the business phone provided | No |
address_number |
string | 32 characters max | The number of the address of the contact | No |
address_street |
string | 32 characters max | The street of the address of the contact | No |
address_city |
string | 32 characters max | The city of the address of the contact | No |
address_state |
string | 32 characters max | The state of the address of the contact | No |
address_country |
string | 32 characters max | The country of the address of the contact | No |
timestamp_creation |
number | Amount of miliseconds since 1970 until the last edition of said contact | Yes | |
timestamp_edition |
number | Amount of miliseconds since 1970 until the creation of said contact | Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "ownerId": "234e4567-e89b-12d3-a456-426652340000", "lastEditorId": "567e4567-e89b-12d3-a456-426652340000", "domain": "my.organization.com", "firstname": "Jean", "lastname": "Attoyan", "position": "CEO", "company": "Some Client Company", "emailAddress_business": "jean.attoyan@some.client.company.com", "emailAddress_personnal": "jean.attoyan@some.client.company.com", "phone_business": "(555) 555-5555", "phone_mobile": "(444) 444-4444", "extension_business": "1234", "address_number": "123", "address_street": "Saint-Laurent", "address_city": "Montréal", "address_state": "Québec", "address_country": "Canada", "timestamp_creation": 800596800000, "timestamp_edition": 800596800000, }
Groups are a representation of a group of contacts, users, or both. There are several different types defined either by the user or by the type of acquisition.
There are two different ways to generate them, either by acquiring the organization's groups and synchronizing them or by user creations.
Some emails that are sent to a group of contacts are sent to a group, which is by itself an email. We need to retrieve all those emails related to a group email in order to understand which individuals in a network was targeted by a group email. Furthermore, our users have told us several times that seeing interactions between an individual and a group of contacts (whoever it may be in that group) would be extremely valuable.
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the contact | Yes |
ownerId |
string | 8-4-4-4-12 | The global unique identifier of the user that created said group | Yes |
lastEditorId |
string | 8-4-4-4-12 | The global unique identifier of the user that last edited said group | Yes |
domain |
string | 64 characters max | The domain to which organization this contact belongs to | Yes |
displayName |
string | 64 characters max | The name of the group | Yes |
type |
string | 64 characters max - either project , list , team or outlook
|
The type of the group | Yes |
mail |
string | 64 characters max | An email address associated with the group, if the group was synchronize from Outlook | No |
member_contact |
string[] | A list of contacts' id that refers to the contacts contained |
No | |
member_user |
string[] | A list of users' id that refers to the users contained |
No | |
timestamp_creation |
number | Amount of miliseconds since 1970 until the last edition of said contact | Yes | |
timestamp_edition |
number | Amount of miliseconds since 1970 until the creation of said contact | Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "domain": "your.company.domain.com" "ownerId": "234e4567-e89b-12d3-a456-426652340000", "lastEditorId": "567e4567-e89b-12d3-a456-426652340000", "domain": "my.organization.com", "displayName": "Super Group", "type": "project", "mail": "super.group@my.organization.com", "member_contact": [ "123e4567-e89b-12d3-a456-426652340000", "456e4567-e89b-12d3-a456-426652340000", "789e4567-e89b-12d3-a456-426652340000" ], "member_user": [ "123e1234-e89b-12d3-a456-426652340000", "456e5678-e89b-12d3-a456-426652340000", "789e9012-e89b-12d3-a456-426652340000" ], "timestamp_creation": 800596800000, "timestamp_edition": 800596800000, }
This data is used to track the different times of synchronization (earliest and latest item sync) to ensure that we always have all the required event data of our users.
Builtin Bliinx via our own synchronization method, and using the calendars names/id given by the user's environment.
We get it to synchronize any new events, or past events if the company decides to increase the time frame in which it whiches to have their interactions.
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the calendar in Bliinx | Yes |
domain |
string | 64 char | The domain to which the mailbox belongs | Yes |
outlookId |
string | Outlook Id | The global unique identifier for the calendar in Outlook | Yes |
isSyncRequired |
boolean | Tracked variable for scheduled synchronization | Yes | |
calendarNextPageURL |
string | URL format | The URL of the next calendar items we're trying to obtain | Yes |
earliestEventSync |
number | Amount of milliseconds since 1970 until the first event sync in the calendar | Yes | |
latestEventSync |
number | Amount of milliseconds since 1970 until the last event sync in the targeted mailbox | Yes | |
usersSubscribed |
string[] | Size or array > 0 |
id of users that have access to said calendar for the synchronization. |
Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "domain": "your.company.domain.com" "outlookId": "AAMkAGYzMjUxMDVhLWZiN2UtNDFhZS1hNGIzLTgxNWM1NWRhOTg5ZQBGAAAAAAAb8huMcDF0TLbNxRV5gbzsBwDfcktLeq_1SrToW8CxgT52AAAAAAEGAADfcktLeq_1SrToW8CxgT52AAAAABHkAAA=", "isSyncRequired": false, "calendarNextPageURL": "https://graph.microsoft.com/v1.0/me/calendars/AAMkAGYzMjUxMDVhLWZiN2UtNDFhZS1hNGIzLTgxNWM1NWRhOTg5ZQBGAAAAAAAb8huMcDF0TLbNxRV5gbzsBwDfcktLeq_1SrToW8CxgT52AAAAAAEGAADfcktLeq_1SrToW8CxgT52AAAAABHkAAA=/events?$top=20&$skip=20", "earliestEventSync": 800596800000, "latestEventSync": 800596800000, "usersSubscribed": [ "456e4567-e89b-12d3-a456-426652340000", "789e4567-e89b-12d3-a456-426652340000" ] }
This data is used to track the different times of synchronization (earliest and latest item sync) to ensure that we always have all the required email data of our users.
Builtin Bliinx via our own synchronization method, and using the mailbox names/id given by the user's environment.
We get it to synchronize any new emails, or past emails if the company decides to increase the time frame in which it whiches to have their interactions.
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the mailbox in Bliinx | Yes |
domain |
string | 64 char | The domain to which the mailbox belongs | Yes |
name |
string |
inbox , sent or archived
|
One of the three different possible mailbox | Yes |
isSyncRequired |
boolean | Tracked variable for scheduled synchronization | Yes | |
earliestEmailSync |
number | Amount of milliseconds since 1970 until the first email sync in the targeted mailbox | Yes | |
latestEmailSync |
number | Amount of milliseconds since 1970 until the last email sync in the targeted mailbox | Yes | |
usersSubscribed |
string[] | Size or array > 0 |
id of users that have access to said mailbox for the synchronization |
Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "domain": "your.company.domain.com", "name": "inbox", "isSyncRequired": true, "earliestEmailSync": 800596800000, "latestEmailSync": 800596800000, "usersSubscribed": [ "456e4567-e89b-12d3-a456-426652340000", "789e4567-e89b-12d3-a456-426652340000" ] }
The users are the member of an organization that used a Bliinx subscription.
There are two ways of acquisition. The first would be through login, where a user would sync his Outlook account to our Bliinx application. The second way would be by scanning a user's inbox and finding a recipient that would have the same domain (thus making this recipient an unactivated user until he logs in).
It was acquired in order to acquire all the information needed for the app to show interactions, to track the users' behavior, and understand where they get the value from Bliinx and to show them as colleagues in their organization's environment.
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the contact | Yes |
domain |
string | 64 characters max | The domain to which organization this contact belongs to | Yes |
firstname |
string | 32 characters max | The firstname of said contact | No |
lastname |
string | 32 characters max | The lastname of said contact | No |
fullname_readonly |
string | 64 characters max | The fullname of the user, should not be modified by the user and should only be used for display and for backend search queries | No |
emailAddress |
string | 64 characters max | The business email of said contact | Yes |
jobTitle |
string | 64 characters max | The position of the user in the organization | No |
isActivated |
boolean | If the user has logged in or not (true if he has, false if he didn't) |
Yes | |
timestamp_creation |
number | Amount of miliseconds since 1970 until the creation of said contact | Yes | |
timestamp_edition |
number | Amount of miliseconds since 1970 until the last edition of said contact | Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "domain": "my.company.domain.com", "firstname": "Jean", "lastname": "Attoyan", "fullname_readonly": "Jean Attoyan", "emailAddress": "jean.attoyan@my.company.domain.com" "jobTitle": "CEO", "isActivated": true, "timestamp_creation": 800596800000, "timestamp_edition": 800596800000 }
The email object contains all the required information to provide the user with the interaction information without providing too much information.
From the organization Outlook Exchange of the users that logged in at least once.
It was acquired to show the users interactions and provide business intelligence for the company
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the email | Yes |
domain |
string | 64 char | The domain to which the conversation belongs | Yes |
outlookId |
string | Outlook Id | The id of the email in outlook | Yes |
subject |
string | 128 char maximum | The text subject of the email | Yes |
from |
string | Sender of the email | Yes | |
to |
string[] | Array of recipient who are considered to in the email | No | |
cc |
string[] | Array of recipient who are considered cc in the email | No | |
bcc |
string[] | Array of recipient who are considered bcc in the email | No | |
members |
string[] | Array of all emails contained in the email, thus the from, to, cc and bcc in the email for reasearch purposes | Yes | |
conversationId |
string | Outlook Id | The Id of the conversation provided by Outlook to group emails by their conversation | Yes |
hasAttachements |
boolean | If the email has attachments or not | Yes | |
importance |
string |
low , normal or high
|
The email importance | Yes |
sendDateTime |
number | Time since 1970 until the email was sent in milliseconds | Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "domain": "my.company.domain.com", "outlookId": "AAMkAGYzMjUxMDVhLWZiN2UtNDFhZS1hNGIzLTgxNWM1NWRhOTg5ZQBGAAAAAAAb8huMcDF0TLbNxRV5gbzsBwDfcktLeq_1SrToW8CxgT52AAAAAAEGAADfcktLeq_1SrToW8CxgT52AAAAABHkAAA=", "subject": "Super email from your colleague", "from": "your.first.colleague@your.company.domain.com", "to": [ "your.second.colleague@your.company.domain.com" ], "cc": [ "your.boss@your.company.domain.com" ], "bcc": [ "your.first.client@client.company.domain.com", "your.second.client@client.company.domain.com" ], "members": [ "your.first.colleague@your.company.domain.com", "your.second.colleague@your.company.domain.com", "your.first.client@client.company.domain.com", "your.second.client@client.company.domain.com" ], "conversationId": "BBMkAGYzMjUxMDVhLWZiN2UtNDFhZS1hNGIzLTgxNWM1NWRhOTg5ZQBGAAAAAAAb8huMcDF0TLbNxRV5gbzsBwDfcktLeq_1SrToW8CxgT52AAAAAAEGAADfcktLeq_1SrToW8CxgT52AAAAABHkAAA=", "hasAttachements": true, "importance": "high", "sendDateTime": 800596800000 }
The email object contains all the required information to provide the user with the interaction information without providing too much information.
From the organization Outlook Exchange of the users that logged in at least once.
It was acquired to show the users interactions and provide business intelligence for the company
Field name | Type | Limitation | Description | Is required |
---|---|---|---|---|
id |
string | 8-4-4-4-12 | The global unique identifier for the email | Yes |
domain |
string | 64 char | The domain to which the conversation belongs | Yes |
outlookId |
string | Outlook Id | The id of the email in outlook | Yes |
organizer |
string[] | size > 0 | The list of email in the given meeting | Yes |
attendees |
string[] | size > 0 | The list of email in the given meeting | Yes |
members |
string[] | size > 0 | The list of email in the given meeting | Yes |
hasAttachments |
boolean | Tells if the event contains an attachment | Yes | |
isAllDay |
boolean | If the event lasts all day | Yes | |
isCancelled |
boolean | If the event was cancelled | Yes | |
isOnlineMeeting |
boolean | If the event is an online meeting | Yes | |
importance |
string |
low , normal or high
|
The event importance | Yes |
recurrenceType |
string |
daily , weekly , absoluteMonthly , relativeMonthly , absoluteYearly , relativeYearly
|
The type of recurrence of the event. The difference between absolute and relative, is if the event happens on a given date every recurrence (15th day of every month for an absolute exemple) or on a possibly changing date (second friday of every month for exemple) | Yes |
recurrenceRangeType |
string |
numbered , endDate or noEnd
|
The type of range of the recurrence | Yes |
recurrenceRangeStart |
number | The starting of the recurrence range since 1970 in milliseconds | Yes | |
recurrenceRangeEnd |
number | The ending of the recurrence range since 1970 in milliseconds. Depends on the recurrenceRangeType . |
No | |
recurrenceRangeNumber |
number | The amount of recurrence of the event. Depends on the recurrenceRangeType . |
No | |
locationName |
string | 64 char | Name of the location where the event will take place | Yes |
startDateTime |
number | Time since 1970 until the start of the meeting in milliseconds | Yes | |
endDateTime |
number | Time since 1970 until the start of the meeting in milliseconds | Yes |
{ "id": "123e4567-e89b-12d3-a456-426652340000", "domain": "my.company.domain.com", "outlookId": "AAMkAGYzMjUxMDVhLWZiN2UtNDFhZS1hNGIzLTgxNWM1NWRhOTg5ZQBGAAAAAAAb8huMcDF0TLbNxRV5gbzsBwDfcktLeq_1SrToW8CxgT52AAAAAAEGAADfcktLeq_1SrToW8CxgT52AAAAABHkAAA=", }