Skip to content

Stored Data

Nathan Larue edited this page May 22, 2020 · 33 revisions


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.

Contact Object

Description

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.

Where was it acquired

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.

Why was it acquired

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.

Data structure

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

Exemple

{
  "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,
}

Group Object

Description

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.

Where was it acquired

There are two different ways to generate them, either by acquiring the organization's groups and synchronizing them or by user creations.

Why was it acquired

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.

Data structure

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

Exemple

{
  "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,
}

Calendar Object

Description

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.

Where was it acquired

Builtin Bliinx via our own synchronization method, and using the calendars names/id given by the user's environment.

Why was it acquired

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.

Data structure

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

Exemple

{
  "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"
  ]
}

Mailbox Object

Description

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.

Where was it acquired

Builtin Bliinx via our own synchronization method, and using the mailbox names/id given by the user's environment.

Why was it acquired

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.

Data structure

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

Exemple

{
  "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"
  ]
}

User Object

Description

The users are the member of an organization that used a Bliinx subscription.

Where was it acquired

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).

Why was it acquired

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.

Data structure

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

Exemple

{
  "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
}

Email Object

Description

The email object contains all the required information to provide the user with the interaction information without providing too much information.

Where was it acquired

From the organization Outlook Exchange of the users that logged in at least once.

Why was it acquired

It was acquired to show the users interactions and provide business intelligence for the company

Data structure

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

Exemple

{
  "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
}

Event Object

Description

The email object contains all the required information to provide the user with the interaction information without providing too much information.

Where was it acquired

From the organization Outlook Exchange of the users that logged in at least once.

Why was it acquired

It was acquired to show the users interactions and provide business intelligence for the company

Data structure

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

Exemple

{
  "id": "123e4567-e89b-12d3-a456-426652340000",
  "domain": "my.company.domain.com",
  "outlookId": "AAMkAGYzMjUxMDVhLWZiN2UtNDFhZS1hNGIzLTgxNWM1NWRhOTg5ZQBGAAAAAAAb8huMcDF0TLbNxRV5gbzsBwDfcktLeq_1SrToW8CxgT52AAAAAAEGAADfcktLeq_1SrToW8CxgT52AAAAABHkAAA=",
}