Work Items

Work Items and Events Data

Filename

items/organizationName_ANONYMIZED_ITEMS_YYYYMMDDZ00000000000N.extension

Variables:

  • default prefix: items/

  • organizationName: the slugified name of the organization

  • YYYYMMDD, week this file contains data from. Week is in ISO format, being Monday first day of the week.

  • due to size file might be split into N consecutive chunks using the suffix 0000000000N.

  • extension, depending on the format and compression, see below:

Available formats

FormatCompressionExtension

NONE,GZIP

.json[.gz]

NONE,SNAPPY,DEFLATE

.avro

NONE,SNAPPY,GZIP,ZSTD

.parquet[.gz]

Note: CSV is not supported for this file because is not able to represent nested objects.

Glossary

  • Source: the tools the organization has connected through Worklytics. Examples:

    • GDrive, Slack, Zoom, GCalendar, GMail, Google Directory, MSFT Office...

  • Objects: model pieces of work. Examples of objects:

    • Document or a file in GDrive

    • Slack channel

    • Zoom meeting

    • Calendar event

  • Event: actions that happened to an object, performed by employees. Examples of events:

    • Comment, upload or edit a document

    • Message sent in a Slack channel

    • Zoom meeting occurrence (the actual action of attend a meeting)

    • Calendar event attendance

  • Work Item: either an object or an event

  • Time Spent:Worklytics' estimation of the amount of time a person worked on the event

File contents

This file shows a combination of items and events associated to them for a given week. Each row is a Json object with nested objects. The structure is intended to hold heterogeneous work sources so contents of certain fields may vary depending on the item type. Properties and metrics fields are a good example of this, for example Calendar meetings may have location, Slack message's' may have a message length or Zoom meetings may encode whether they are recurring or not. An entry may be an object and/or an event. Events have the boolean field "event" value set to true.

Items export schema

FieldTypeDescription and examples

week

DATE

The ISOWEEK this work item happened

id

STRING

The id of the work item

type

STRING

Type of work item: file, meeting, slack channel...

relatedItems

RECORD

Other work items related to this one, if any

├─ itemId

RECORD

Structure that holds the related item identifier

├─── orgId

STRING

Organization this item belongs to

├─── integrationId

STRING

DEPRECATED

├─── sourceKindId

STRING

Source

├─── itemId

STRING

Id

├─ type

STRING

Type of relation (parent, in-reply-to emails...)

metrics

RECORD

Metrics for work item. Can be collected from source or derived. Value can either be numeric or a date

├─ name

STRING

Metric name

├─ value

FLOAT

Numeric value (examples: meeting duration, file size)

├─ dateValue

TIMESTAMP

Timestamp (example: meeting start)

url

STRING

The url associated with the work item if any

contentType

STRING

Content type. Usually present in items related to files (ex: application/vnd.google-apps.spreadsheet)

creationTime

TIMESTAMP

When the item was created

lastActiveTime

TIMESTAMP

When the item was last actioned (created and active are same in events)

firstSyncTime

TIMESTAMP

DEPRECATED.

lastSyncTime

TIMESTAMP

DEPRECATED.

lastUpdateTime

TIMESTAMP

When the item was seen by Worklytics

integrationId

STRING

DEPRECATED

sourceKindId

STRING

Source of item

orgId

STRING

Organization this item belongs to

sourceConnectionId

INTEGER

Worklytics identifier for customer connector

detailVisibilitySetting

STRING

DEPRECATED.

event

BOOLEAN

True if the work item is an event

parentId

RECORD

Parent id of the work item if any

├─ orgId

STRING

Organization this item belongs to

├─ integrationId

STRING

DEPRECATED

├─ sourceKindId

STRING

Source

├─ itemId

STRING

Id

title

STRING

Title of the item if available (email subject, file name, pull request name...)

relations

RECORD

People related to this item

├─ type

STRING

Type of relation (attendee, creator, organizer, editor...)

├─ employeeId

STRING

Employee ID, if action taken by employee in Worklytics records, or,

├─ externalId

STRING

Anonymized external identifier of the person that did the action

├─ properties

RECORD

Properties associated with the action (example: RSVP status on meeting, lenght of comment,...)

├─── name

STRING

Name

├─── value

STRING

Value

├─ directTimeSpent

INTEGER

Time spent working on an event (in milliseconds)

├─ exclusiveTimeSpent

INTEGER

Time spent working exclusively on this event given their concurrent work (in milliseconds)

├─ exclusiveMeetingTimeSpent

INTEGER

Meetings only. Time spent working exclusively on the meeting considering other concurrent meetings (in milliseconds)

properties

RECORD

Properties of the item, vary across sources

├─ name

STRING

Name

├─ value

STRING

Value

Sample rows

NDJSON example (note examples are pretty printed for documentation purposes otherwise will be presented in one row each)

Here is an example of how a meeting looks like:

{
  "week": "2019-07-01",
  "id": "UNIQUE_ID_FOR_ITEM",
  "title": "Worklytics weekly meeting",
  "type": "event",
  "relatedItems": [
    {
      "itemId": {
        "orgId": "orgId",
        "integrationId": "gcal",
        "itemId": "UNIQUE_ID_FOR_RELATED_ITEM"
      },
      "type": "master",
      "relevance": "0" // deprecated, ignore
    }
  ],
  "properties": [
    {
      "name": "location",
      "value": "Meeting Room Z1"
    },
    {
      "name": "status",
      "value": "confirmed"
    },
    {
      "name": "meetingType",
      "value": "RECURRENCE"
    }
  ],
  "metrics": [
    {
      "name": "created",
      "dateValue": "2018-09-13 20:33:16 UTC"
    },
    {
      "name": "start",
      "dateValue": "2019-07-01 21:30:00 UTC"
    },
    {
      "name": "modified",
      "dateValue": "2018-12-16 05:33:21.425 UTC"
    },
    {
      "name": "end",
      "dateValue": "2019-07-01 22:00:00 UTC"
    },
    {
      "name": "durationMillis",
      "value": 1800000
    },
    {
      "name": "attendeesCount",
      "value": 4
    }
  ],
  "url": "https://www.google.com/calendar/event?eid=URL_TO_THE_EVENT",
  "creationTime": "2019-07-01 21:30:00 UTC",
  "lastActiveTime": "2019-07-01 21:30:00 UTC",
  "firstSyncTime": "2019-07-02 04:45:43.386 UTC",
  "lastSyncTime": "2019-07-03 04:50:27.359 UTC",
  "lastUpdateTime": "2019-07-03 04:50:27.537 UTC",
  "integrationId": "gcal",
  "orgId": "worklytics.co",
  "sourceConnectionId": "CONN_ID", // internal, ignore
  "detailVisibilitySetting": "ORG", // internal, ignore
  "parentId": {
    "orgId": "worklytics.co",
    "integrationId": "gcal",
    "itemId": "UNIQUE_ID_FOR_MASTER_ITEM" // may not exist if is a "top level" item
  },
  "relations": [
    {
      "type": "creator",
      "employeeId": "A000001",
      "properties": []
    },
    {
      "type": "organizer",
      "employeeId": "A000001",
      "properties": []
    }
  ]
}

This is what an event attendance looks like:

{
  "week": "2019-07-01",
  "id": "UNIQUE_ID_FOR_PARENT_20190703T090000Z:attendance",
  "title": "Worklytics weekly meeting",
  "type": "attendance",
  "relatedItems": [
    {
      "itemId": {
        "orgId": "worklytics.co",
        "integrationId": "gcal",
        "itemId": "UNIQUE_ID_FOR_PARENT"
      },
      "type": "master",
      "relevance": "100"
    },
    {
      "itemId": {
        "orgId": "worklytics.co",
        "integrationId": "gcal",
        "itemId": "UNIQUE_ID_FOR_PARENT"
      },
      "type": "master",
      "relevance": "0"
    }
  ],
  "properties": [
    {
      "name": "location",
      "value": "Meeting Room Blue"
    },
    {
      "name": "status",
      "value": "confirmed"
    },
    {
      "name": "meetingType",
      "value": "RECURRENCE"
    }
  ],
  "metrics": [
    {
      "name": "created",
      "dateValue": "2018-12-28 10:10:43 UTC"
    },
    {
      "name": "start",
      "dateValue": "2019-07-03 09:00:00 UTC"
    },
    {
      "name": "modified",
      "dateValue": "2019-01-28 06:30:24.34 UTC"
    },
    {
      "name": "end",
      "dateValue": "2019-07-03 09:30:00 UTC"
    },
    {
      "name": "durationMillis",
      "value": 1800000
    },
    {
      "name": "attendeesCount",
      "value": 4
    }
  ],
  "url": "https://www.google.com/calendar/event?eid=ID_FOR_URL",
  "creationTime": "2019-07-03 09:00:00 UTC",
  "lastActiveTime": "2019-07-03 09:30:00 UTC",
  "firstSyncTime": "2019-07-04 04:49:05.49 UTC",
  "lastSyncTime": "2019-07-05 05:44:34.226 UTC",
  "lastUpdateTime": "2019-07-05 07:36:43.54 UTC",
  "integrationId": "gcal",
  "orgId": "worklytics.co",
  "sourceConnectionId": "CONN_ID",
  "detailVisibilitySetting": "ORG",
  "parentId": {
    "orgId": "worklytics.co",
    "integrationId": "gcal",
    "itemId": "UNIQUE_ID_FOR_PARENT"
  },
  "relations": [
    {
      "type": "creator",
      "employeeId": "A000001",
      "properties": []
    },
    {
      "type": "attendee",
      "employeeId": "A000002",
      "properties": [
        {
          "name": "participationStatus",
          "value": "NEEDS_ACTION"
        },
        {
          "name": "responseStatus",
          "value": "needsAction"
        }
      ],
      "directTimeSpent": "1800000",
      "exclusiveTimeSpent": "900000",
      "exclusiveMeetingTimeSpent": "900000"
    },
    {
      "type": "attendee",
      "employeeId": "A000003",
      "properties": [
        {
          "name": "participationStatus",
          "value": "ACCEPTED"
        },
        {
          "name": "responseStatus",
          "value": "accepted"
        }
      ]
    },
    {
      "type": "attendee",
      "employeeId": "A000001",
      "properties": [
        {
          "name": "participationStatus",
          "value": "ACCEPTED"
        },
        {
          "name": "responseStatus",
          "value": "accepted"
        }
      ]
    },
    {
      "type": "attendee",
      "employeeId": "A000005",
      "properties": [
        {
          "name": "participationStatus",
          "value": "ACCEPTED"
        },
        {
          "name": "responseStatus",
          "value": "accepted"
        }
      ]
    },
    {
      "type": "organizer",
      "employeeId": "A000001",
      "properties": []
    },
  ]
}

List of possible values for items and relations. List may grow over time.

Source (integrationId)Item typeRelation type

gapps_groups

manager

gapps_groups

member

gapps_groups

owner

gcal

attendance

attendee

gcal

attendance

creator

gcal

attendance

organizer

gcal

attendance

resource

gcal

event

attendee

gcal

event

creator

gcal

event

organizer

gdrive

file

owner

gdrive

file

reader

gdrive

file

writer

gdrive

revision

author

github

actor

github

commit

author

github

issue

creator

github

issue_comment

author

github

issue_comment_created

subject

github

issue_comment_edited

subject

github

issue_opened

subject

github

pull

contributor

github

pull

reviewer

github

pull_request

contributor

github

pull_request_assigned

subject

github

pull_request_closed

subject

github

pull_request_comment

author

github

pull_request_create

creator

github

pull_request_edited

subject

github

pull_request_labeled

subject

github

pull_request_merge

merger

github

pull_request_opened

subject

github

pull_request_reopened

subject

github

pull_request_review_comment

author

github

pull_request_review_comment_created

subject

github

pull_request_review_comment_deleted

subject

github

pull_request_review_comment_edited

subject

github

pull_request_review_request_removed

subject

github

pull_request_review_requested

subject

github

pull_request_unassigned

subject

github

pull_request_unlabeled

subject

github

push

sender

gmail

chat

From

gmail

chat

To

gmail

chat_sent

From

gmail

message

BCC

gmail

message

CC

gmail

message

From

gmail

message

To

gmail

message_sent

From

jira

comment

author

jira

comment_created

author

jira

issue

assignee

jira

issue

attachmentAuthor

jira

issue

creator

jira

issue_created

actor

jira

issue_deleted

actor

jira

issue_resolved

actor

jira

issue_updated

actor

slack

channel

channel_creator

slack

channel

channel_member

slack

message

author

slack

message

mentioned

slack

message

reactor

Last updated