Pulzen Data Schemas

Pulzen collects, processes, and stores structured data from various development platforms to provide advanced analytics, metrics, and insights for engineering teams. Our platform integrates with Version Control Systems (GitHub, GitLab, Bitbucket, Azure DevOps), Project Management Tools (Jira, Azure DevOps), Collaboration Platforms (Microsoft Teams), and AI Development Tools (GitHub Copilot) to create a comprehensive view of your development ecosystem.

The following schemas represent the core entities and data models that power our platform's dashboards, reports, and AI-driven features. Each section contains normalized and unified data structures that enable cross-platform analytics, historical analysis, and team productivity insights regardless of the source platform or tool.


VCS Schemas (Version Control Systems)

The following schemas represent the main entities that Pulzen fetches from different Version Control Systems (VCS) such as GitHub, GitLab, Bitbucket, and Azure DevOps. For each entity, we extract and normalize the relevant data from the provider's API and store it in our database. This data forms the foundation for all analytics, metrics, and visualizations in Pulzen. The schemas below show exactly what information is persisted for each type of objectcommits, pull requests, workflows, reviews, deploys, releases, repositories, users, and teams. By unifying and structuring this data, Pulzen enables cross-platform insights, historical analysis, and a single source of truth for your software development activity.

Commits

{
  "_id": "string",
  "url": "string",
  "message": "string",
  "createdAt": {
    "$date": "datetime"
  },
  "stats": {
    "additions": "number",
    "deletions": "number"
  },
  "repositoryId": "string",
  "repositoryName": "string",
  "provider": "string",
  "pullRequests": ["string"],
  "authorUser": {
    "$ref": "string",
    "$id": "string"
  },
  "branches": ["string"],
  "teams": ["string"],
  "authorUsername": "string",
  "authorEmail": "string",
  "pullRequestId": "string"
}
Field descriptions
  • _id: Unique commit ID
  • url: Commit URL in the provider (GitHub, etc.)
  • message: Commit message
  • createdAt: Creation date
  • stats.additions: Lines added
  • stats.deletions: Lines deleted
  • repositoryId: Repository ID
  • repositoryName: Repository name
  • provider: Provider (e.g., GITHUB)
  • pullRequests: Related pull request IDs
  • authorUser: Reference to the author user
  • branches: Affected branches
  • teams: Related teams
  • authorUsername: Author username
  • authorEmail: Author email
  • pullRequestId: Associated pull request ID

Pull Requests

{
  "_id": "string",
  "number": "number",
  "url": "string",
  "state": "string",
  "title": "string",
  "user": {
    "$ref": "string",
    "$id": "string"
  },
  "createdAt": { "$date": "datetime" },
  "updatedAt": { "$date": "datetime" },
  "closedAt": { "$date": "datetime" },
  "mergedAt": { "$date": "datetime" },
  "additions": "number",
  "deletions": "number",
  "changedFiles": "number",
  "repositoryId": "string",
  "repositoryName": "string",
  "approverUser": "string",
  "mergedBy": "string",
  "provider": "string",
  "fromBranch": "string",
  "toBranch": "string",
  "teams": ["string"],
  "username": "string",
  "userEmail": "string"
}
Field descriptions
  • _id: Unique pull request ID
  • number: Pull request number
  • url: Pull request URL
  • state: State (e.g., MERGED)
  • title: Pull request title
  • user: Reference to the author user
  • createdAt, updatedAt, closedAt, mergedAt: Relevant dates
  • additions: Lines added
  • deletions: Lines deleted
  • changedFiles: Changed files
  • repositoryId: Repository ID
  • repositoryName: Repository name
  • approverUser: Approver user
  • mergedBy: User who merged
  • provider: Provider (e.g., GITHUB)
  • fromBranch, toBranch: Source and target branches
  • teams: Related teams
  • username: Author username
  • userEmail: Author email

Workflows

{
  "_id": "string",
  "name": "string",
  "headBranch": "string",
  "path": "string",
  "displayTitle": "string",
  "runNumber": "number",
  "event": "string",
  "status": "string",
  "conclusion": "string",
  "workflowId": "string",
  "htmlUrl": "string",
  "createdAt": { "$date": "datetime" },
  "updatedAt": { "$date": "datetime" },
  "pullRequests": [
    { "number": "number" }
  ],
  "actor": {
    "login": "string",
    "email": "string"
  },
  "triggeringActor": {
    "login": "string",
    "email": "string"
  },
  "runAttempt": "number",
  "repositoryName": "string",
  "repositoryId": "string",
  "mergeBy": "string",
  "provider": "string",
  "pullrequestIds": ["string"],
  "teams": ["string"]
}
Field descriptions
  • _id: Unique workflow ID
  • name: Workflow name
  • headBranch: Main branch
  • path: Workflow file path
  • displayTitle: Displayed title
  • runNumber: Run number
  • event: Triggering event
  • status: Status (e.g., COMPLETED)
  • conclusion: Result (e.g., SUCCESS)
  • workflowId: Workflow ID
  • htmlUrl: Workflow URL in GitHub
  • createdAt, updatedAt: Relevant dates
  • pullRequests: Related pull requests (number)
  • actor: User who runs the workflow
  • triggeringActor: User who triggers the workflow
  • runAttempt: Run attempt
  • repositoryName: Repository name
  • repositoryId: Repository ID
  • mergeBy: User who merged
  • provider: Provider (e.g., GITHUB)
  • pullrequestIds: Related pull request IDs
  • teams: Related teams

Reviews

{
  "_id": "string",
  "user": {
    "$ref": "string",
    "$id": "string"
  },
  "body": "string",
  "submittedAt": { "$date": "datetime" },
  "createdAt": { "$date": "datetime" },
  "closedAt": { "$date": "datetime" },
  "state": "string",
  "pullRequestId": "string",
  "provider": "string",
  "prOwnerUsername": "string",
  "prOwnerEmail": "string",
  "teams": ["string"],
  "repositoryId": "string",
  "repositoryName": "string"
}
Field descriptions
  • _id: Unique review ID
  • user: Reference to the user who made the review
  • body: Review body (comment, markdown, etc.)
  • submittedAt: Review submission date
  • createdAt: Creation date
  • closedAt: Closing date
  • state: Review state (e.g., COMMENTED)
  • pullRequestId: Reviewed pull request ID
  • provider: Provider (e.g., GITHUB)
  • prOwnerUsername: Pull request owner username
  • prOwnerEmail: Pull request owner email
  • teams: Related teams
  • repositoryId: Repository ID
  • repositoryName: Repository name

Deploys

{
  "_id": "string",
  "url": "string",
  "sha": "string",
  "originalEnvironment": "string",
  "environment": "string",
  "creator": {
    "$ref": "string",
    "$id": "string"
  },
  "createdAt": { "$date": "datetime" },
  "updatedAt": { "$date": "datetime" },
  "repositoryId": "string",
  "repositoryName": "string",
  "provider": "string",
  "username": "string",
  "userEmail": "string",
  "teams": ["string"]
}
Field descriptions
  • _id: Unique deploy ID
  • url: Deploy URL in the provider
  • sha: SHA of the deployed commit
  • originalEnvironment: Original environment
  • environment: Deployment environment
  • creator: Reference to the user who performed the deploy
  • createdAt: Creation date
  • updatedAt: Update date
  • repositoryId: Repository ID
  • repositoryName: Repository name
  • provider: Provider (e.g., GITHUB)
  • username: User who performed the deploy
  • userEmail: User email
  • teams: Related teams

Releases

{
  "_id": "string",
  "name": "string",
  "createdAt": { "$date": "datetime" },
  "updatedAt": { "$date": "datetime" },
  "publishedAt": { "$date": "datetime" },
  "databaseId": { "$numberLong": "string" },
  "isDraft": "boolean",
  "isLatest": "boolean",
  "isPrerelease": "boolean",
  "tagName": "string",
  "url": "string",
  "author": "string",
  "tagPrefix": "string",
  "tagCommit": "string",
  "commits": ["string"],
  "repositoryId": "string",
  "repositoryName": "string",
  "provider": "string",
  "teams": ["string"],
  "authorEmail": "string"
}
Field descriptions
  • _id: Unique release ID
  • name: Release name (e.g., v1.7.7)
  • createdAt, updatedAt, publishedAt: Relevant dates
  • databaseId: Database ID
  • isDraft: If it is a draft
  • isLatest: If it is the latest release
  • isPrerelease: If it is a prerelease
  • tagName: Tag name
  • url: Release URL in the provider
  • author: Release author
  • tagPrefix: Tag prefix
  • tagCommit: Main commit of the release
  • commits: List of included commits
  • repositoryId: Repository ID
  • repositoryName: Repository name
  • provider: Provider (e.g., GITHUB)
  • teams: Related teams
  • authorEmail: Author email

Repositories

{
  "_id": "string",
  "name": "string",
  "url": "string",
  "owner": "string",
  "language": "string",
  "size": "number",
  "defaultBranch": "string",
  "createdAt": { "$date": "datetime" },
  "updatedAt": { "$date": "datetime" },
  "pushedAt": { "$date": "datetime" },
  "teams": [
    {
      "name": "string",
      "active": "boolean"
    }
  ],
  "provider": "string",
  "users": [
    {
      "$ref": "string",
      "$id": "string"
    }
  ]
}
Field descriptions
  • _id: Unique repository ID
  • name: Repository name
  • url: Repository URL
  • owner: Repository owner
  • language: Main programming language
  • size: Repository size (in KB)
  • defaultBranch: Default branch reference
  • createdAt: Creation date
  • updatedAt: Last update date
  • pushedAt: Last push date
  • teams: List of teams with access to the repository (name, active)
  • provider: Provider (e.g., GITHUB)
  • users: List of user references (object with $ref and $id)

GitHub Copilot

The following schemas represent the main entities that Pulzen fetches from GitHub Copilot to provide AI-powered development analytics and productivity insights. This data enables code completion analysis, chat interaction tracking, and AI-assisted development metrics to understand how teams leverage GitHub Copilot for enhanced productivity.

Copilot Metrics

{
  "_id": "string",
  "date": {
    "$date": "datetime"
  },
  "totalActiveUsers": "number",
  "totalEngagedUsers": "number",
  "copilotIdeCodeCompletions": {
    "totalEngagedUsers": "number",
    "languages": [
      {
        "name": "string",
        "totalEngagedUsers": "number"
      }
    ],
    "editors": [
      {
        "name": "string",
        "totalEngagedUsers": "number",
        "models": [
          {
            "name": "string",
            "isCustomModel": "boolean",
            "totalEngagedUsers": "number",
            "languages": [
              {
                "name": "string",
                "totalEngagedUsers": "number",
                "totalCodeSuggestions": "number",
                "totalCodeAcceptances": "number",
                "totalCodeLinesSuggested": "number",
                "totalCodeLinesAccepted": "number"
              }
            ]
          }
        ]
      }
    ]
  },
  "copilotDotcomChat": {
    "totalEngagedUsers": "number",
    "models": [
      {
        "name": "string",
        "isCustomModel": "boolean",
        "totalEngagedUsers": "number",
        "totalChats": "number"
      }
    ]
  },
  "copilotDotcomPullRequests": {
    "totalEngagedUsers": "number",
    "repositories": [
      {
        "name": "string",
        "totalengagedusers": "number",
        "models": [
          {
            "name": "string",
            "isCustomModel": "boolean",
            "totalPrSummariesCreated": "number",
            "totalEngagedUsers": "number"
          }
        ]
      }
    ]
  },
  "copilotIdeChat": {
    "totalEngagedUsers": "number",
    "editors": [
      {
        "name": "string",
        "totalEngagedUsers": "number",
        "models": [
          {
            "name": "string",
            "isCustomModel": "boolean",
            "totalEngagedUsers": "number",
            "totalChats": "number",
            "totalChatInsertionEvents": "number",
            "totalChatCopyEvents": "number"
          }
        ]
      }
    ]
  },
  "enterprise": "string",
  "_class": "string"
}
Field descriptions
  • _id: Unique metric identifier (date-enterprise format)
  • date: Date of the metrics collection
  • totalActiveUsers: Total number of active users
  • totalEngagedUsers: Total number of engaged users
  • copilotIdeCodeCompletions: Code completion metrics from IDE
    • totalEngagedUsers: Number of users engaged with code completions
    • languages: List of programming languages with engagement metrics
    • editors: List of code editors with detailed metrics
      • name: Editor name (e.g., vscode, JetBrains)
      • totalEngagedUsers: Number of users engaged with this editor
      • models: AI models used for completions
        • name: Model name
        • isCustomModel: Whether it's a custom model
        • totalEngagedUsers: Users engaged with this model
        • languages: Language-specific metrics for this model
          • name: Programming language name
          • totalEngagedUsers: Users engaged with this language
          • totalCodeSuggestions: Total code suggestions provided
          • totalCodeAcceptances: Total code suggestions accepted
          • totalCodeLinesSuggested: Total lines of code suggested
          • totalCodeLinesAccepted: Total lines of code accepted
  • copilotDotcomChat: Chat metrics from GitHub.com
    • totalEngagedUsers: Number of users engaged with chat
    • models: AI models used for chat
      • name: Model name
      • isCustomModel: Whether it's a custom model
      • totalEngagedUsers: Users engaged with this model
      • totalChats: Total number of chat sessions
  • copilotDotcomPullRequests: Pull request metrics from GitHub.com
    • totalEngagedUsers: Number of users engaged with PR features
    • repositories: Repository-specific metrics
      • name: Repository name
      • totalengagedusers: Number of users engaged with this repository
      • models: AI models used for PR features
        • name: Model name
        • isCustomModel: Whether it's a custom model
        • totalPrSummariesCreated: Total PR summaries created
        • totalEngagedUsers: Users engaged with this model
  • copilotIdeChat: Chat metrics from IDE
    • totalEngagedUsers: Number of users engaged with IDE chat
    • editors: Editor-specific chat metrics
      • name: Editor name
      • totalEngagedUsers: Users engaged with chat in this editor
      • models: AI models used for IDE chat
        • name: Model name
        • isCustomModel: Whether it's a custom model
        • totalEngagedUsers: Users engaged with this model
        • totalChats: Total chat sessions
        • totalChatInsertionEvents: Total code insertions from chat
        • totalChatCopyEvents: Total code copy events from chat
  • enterprise: Enterprise organization name
  • _class: Java class name for MongoDB mapping

Copilot Seat

{
  "_id": "string",
  "login": "string",
  "userId": {
    "$numberLong": "string"
  },
  "type": "string",
  "siteAdmin": "boolean",
  "createdAt": "string",
  "updatedAt": "string",
  "activityAt": {
    "$date": "datetime"
  },
  "activityEditor": "string",
  "enterprise": "string",
  "userMail": "string",
  "_class": "string"
}
Field descriptions
  • _id: Unique seat identifier (login-timestamp-enterprise format)
  • login: GitHub username
  • userId: GitHub user ID (stored as numberLong)
  • type: User type (e.g., User)
  • siteAdmin: Whether the user is a site administrator
  • createdAt: User account creation date
  • updatedAt: Last user account update date
  • activityAt: Timestamp of the last Copilot activity
  • activityEditor: Editor used for Copilot activity (e.g., vscode with version and copilot-chat version)
  • enterprise: Enterprise organization name
  • userMail: User email address (may be empty)
  • _class: Java class name for MongoDB mapping

Issue Tracker (Project Management Tools)

The following schemas represent the main entities that Pulzen fetches from different Issue Tracking and Project Management tools such as Jira and Azure DevOps (Beta). For each entity, we extract and normalize the relevant data from the provider's API and store it in our database. This data enables project tracking, issue management analytics, and workflow insights across different project management platforms.

Projects

{
  "_id": "string",
  "name": "string",
  "key": "string",
  "projectTypeKey": "string",
  "provider": "string",
  "teams": ["string"]
}
Field descriptions
  • _id: Unique project ID
  • name: Project name
  • key: Project key (short identifier, e.g., GROOW)
  • projectTypeKey: Type of project (e.g., software)
  • provider: Provider (e.g., JIRA)
  • teams: List of teams associated with the project

Sprints

{
  "_id": "string",
  "name": "string",
  "state": "string",
  "boardId": "string",
  "goal": "string",
  "startDate": { "$date": "datetime" },
  "endDate": { "$date": "datetime" },
  "provider": "string",
  "project": "string"
}
Field descriptions
  • _id: Unique sprint ID
  • name: Sprint name
  • state: Sprint state (e.g., active, closed)
  • boardId: Associated board ID
  • goal: Sprint goal/objective
  • startDate: Sprint start date
  • endDate: Sprint end date
  • provider: Provider (e.g., JIRA)
  • project: Project name

Issues

{
  "_id": "string",
  "name": "string",
  "description": "string",
  "status": "string",
  "assignedUser": {
    "name": "string",
    "email": "string"
  },
  "createdBy": {
    "name": "string",
    "email": "string"
  },
  "createdAt": { "$date": "datetime" },
  "updatedAt": { "$date": "datetime" },
  "project": "string",
  "sprintId": ["string"],
  "priority": "string",
  "commentsCount": "number",
  "type": "string",
  "stateChangedDate": { "$date": "datetime" },
  "reporter": {
    "name": "string",
    "email": "string"
  },
  "watchCount": "number",
  "watchers": [
    {
      "name": "string",
      "email": "string"
    }
  ],
  "provider": "string",
  "key": "string",
  "storyPointsEstimate": "number",
  "timeTracking": {}
}
Field descriptions
  • _id: Unique issue ID
  • name: Issue title/summary
  • description: Detailed issue description
  • status: Current issue status (e.g., Completed)
  • assignedUser: User assigned to the issue (name, email)
  • createdBy: User who created the issue (name, email)
  • createdAt: Issue creation date
  • updatedAt: Last update date
  • project: Project name
  • sprintId: Associated sprint IDs
  • priority: Issue priority (e.g., Medium)
  • commentsCount: Number of comments
  • type: Issue type (e.g., Bug)
  • stateChangedDate: Last state change date
  • reporter: User who reported the issue (name, email)
  • watchCount: Number of watchers
  • watchers: List of users watching the issue
  • provider: Provider (e.g., JIRA)
  • key: Issue key (e.g., PULZEN-167)
  • storyPointsEstimate: Estimated story points
  • timeTracking: Time tracking information

Collaboration & Communication

The following schemas represent the main entities that Pulzen fetches from different Collaboration and Communication platforms such as Microsoft Teams. This data provides insights into user activity, communication patterns, and meeting engagement, helping to understand team dynamics and productivity within these tools.

MS Teams Activities

{
  "_id": "string",
  "email": "string",
  "activityDay": "string",
  "dayOfWeek": "string",
  "day": "number",
  "monthOfYear": "string",
  "month": "number",
  "year": "number",
  "isLicensed": "string",
  "teamChatMessageCount": "number",
  "privateChatMessageCount": "number",
  "postMessages": "number",
  "replyMessages": "number",
  "urgentMessages": "number",
  "callCount": "number",
  "meetingCount": "number",
  "audioDurationInSeconds": "number",
  "videoDurationInSeconds": "number",
  "screenShareDurationInSeconds": "number"
}
Field descriptions
  • _id: Unique identifier for the activity record (email_date)
  • email: User's email address
  • activityDay: The specific date of the activity (YYYY-MM-DD format)
  • dayOfWeek: Day of the week for the activity
  • day: Day of the month for the activity
  • monthOfYear: Month name for the activity
  • month: Month number for the activity
  • year: Year for the activity
  • isLicensed: Indicates if the user is licensed for the service (e.g., "Yes")
  • teamChatMessageCount: Number of messages sent in team chats
  • privateChatMessageCount: Number of messages sent in private chats
  • postMessages: Number of new posts created
  • replyMessages: Number of replies to messages
  • urgentMessages: Number of urgent messages sent
  • callCount: Number of calls made or received
  • meetingCount: Number of meetings attended
  • audioDurationInSeconds: Total duration of audio calls in seconds
  • videoDurationInSeconds: Total duration of video calls in seconds
  • screenShareDurationInSeconds: Total duration of screen sharing in seconds

Cross

The following schemas represent cross-platform entities that are shared across different tools and platforms in Pulzen. These entities provide unified user and team management, enabling consistent identity mapping and cross-tool analytics regardless of the source platform.

Users

{
  "_id": "string",
  "id": "string",
  "name": "string",
  "email": "string",
  "teams": [
    {
      "name": "string",
      "active": "boolean"
    }
  ],
  "provider": "string"
}
Field descriptions
  • _id: Unique user ID
  • id: User ID (may be the same as _id)
  • name: Username
  • email: User email
  • teams: List of teams the user belongs to (name, active)
  • provider: Provider (e.g., GITHUB)

Teams

{
  "_id": "string",
  "name": "string",
  "description": "string",
  "privacy": "string",
  "url": "string",
  "createdAt": { "$date": "datetime" },
  "provider": "string"
}
Field descriptions
  • _id: Unique team ID
  • name: Team name
  • description: Team description
  • privacy: Privacy level (e.g., VISIBLE)
  • url: Team URL in the provider
  • createdAt: Creation date
  • provider: Provider (e.g., GITHUB)

Logs

{
  "_id": {
    "$oid": "string"
  },
  "clientId": "string",
  "provider": "string",
  "internalProcess": "string",
  "level": "string",
  "classAffected": "string",
  "methodAffected": "string",
  "customMessage": "string",
  "variablesAndValues": "string",
  "register": {
    "$date": "datetime"
  },
  "entity": "string",
  "_class": "string"
}
Field descriptions
  • _id: Unique log identifier (ObjectId)
  • clientId: Client identifier (usually empty)
  • provider: Data provider (e.g., GITHUB)
  • internalProcess: Internal process name (e.g., INITIAL_LOAD)
  • level: Log level (e.g., LOW, MEDIUM, HIGH)
  • classAffected: Java class affected by the operation
  • methodAffected: Method name affected by the operation
  • customMessage: Custom log message with context
  • variablesAndValues: Additional variables and their values (usually empty)
  • register: Timestamp when the log was created
  • entity: Entity type being processed (e.g., COMMIT, PULL_REQUEST)
  • _class: Java class name for MongoDB mapping