Skip to main content
Each record in the log contains several fields that are added by default by the Google Logging API and are not useful for Glean usage analysis. The relevant fields are:
type GleanCustomerEvent struct {
    // Timestamp of the activity.
    Timestamp timestamp

    // A unique ID for the record.
    insertId string

    // All data for the record are contained in this struct field.
    jsonPayload *GleanCustomerEventPayload
}
This is an omnibus log that contains many different kinds of events. Each record contains this as its outermost struct field:
type GleanCustomerEventPayload struct {
    // The type of the record. Will be one of: SEARCH, AUTOCOMPLETE, CHAT, CHAT_CITATIONS, AI_SUMMARY, AI_ANSWER, SHORTCUT, SEARCH_CLICK, CHAT_CITATION_CLICK,
    // CHAT_FEEDBACK, CLIENT_EVENT, SEARCH_FEEDBACK, AI_ANSWER_VOTE, AI_SUMMARY_VOTE, WORKFLOW_RUN, WORKFLOW, GLEAN_BOT_ACTIVITY, PRODUCT_SNAPSHOT,
    // LLM_CALL, WORKFLOW_CONVERSATION
    Type string

    // Whether the record was written in scrubbed mode and contains no PII.
    IsScrubbed bool

    // Identifies the user taking the action.
    User *GleanCustomerEventUserIdentity

    // At most one of the following struct fields will be populated
    // corresponding to the type indicated in `Type`.
    Search *GleanCustomerEventSearch
    Autocomplete *GleanCustomerEventAutocomplete
    Chat *GleanCustomerEventChat
    ChatCitations *GleanCustomerEventChatCitations
    AiSummary *GleanCustomerEventAiSummary
    AiAnswer *GleanCustomerEventAiAnswer
    Shortcut *GleanCustomerEventShortcut
    SearchClick *GleanCustomerEventSearchClick
    ChatFeedback *GleanCustomerEventChatFeedback
    ClientEvent *GleanCustomerEventClientEvent
    SearchFeedback *GleanCustomerEventSearchFeedback
    AiAnswerVote *GleanCustomerEventAiAnswerVote
    AiSummaryVote *GleanCustomerEventAiSummaryVote
    ChatCitationClick *GleanCustomerEventChatCitationClick
    WorkflowRun *GleanCustomerEventWorkflowRun
    Workflow *GleanCustomerWorkflow
    GleanBotActivity *GleanCustomerGleanBotActivity
    ProductSnapshot *GleanCustomerEventProductSnapshot
    LlmCall *GleanCustomerEventLlmCall
    WorkflowConversation *GleanCustomerEventWorkflowConversation
}
// Identifies the user taking the action.
type GleanCustomerEventUserIdentity struct {
    // Internal unique ID for the user.
    UserId string

    // Email address of the user. omitted if scrubbed
    UserEmail string

    // Current department of the user. omitted if scrubbed
    Department string

    // ID of the user's department
    DepartmentId string
}

Event Type Schemas

Documents an Autocomplete action, i.e. autocomplete request.
// Documents an AUTOCOMPLETE action, i.e. autocomplete request.
// Definitions are similar to SEARCH events above.
type GleanCustomerEventAutocomplete struct {
    TrackingToken string
    SessionTrackingToken string
    HostDomain string
    Query string // omitted if scrubbed
    QueryLength int
    BackendMillis int64
    IsRestClientApi bool
    Results []*autocomplete_logging.RawAutocompleteResultLogEntry // omitted if scrubbed
}
Documents a CHAT action, i.e. message sent to the Glean Assistant.
// Documents a CHAT action, i.e. message sent to the Glean Assistant.
type GleanCustomerEventChat struct {
    // Unique identifier for a "turn" in the conversation, i.e. a user
    // query and agent response pair.
    Qtt string

    // Unique identifier for the response message sent by the agent.
    ResponseMessageId string

    // ID for the app session during which the chat took place (same as
    // for SEARCH actions.)
    SessionTrackingToken string

    // ID for the chat session during which the chat took place (recreated
    // each time the user visits the chat UI, or clicks "New Chat").
    ChatSessionId string

    /*
    Surface from which the chat message was sent:
    - WEB: Glean Assistant web UI
    - SLACK: Slackbot
    - REST_API: API request by an external developer or integration
    - SERVER: Backend or server-side system, such as for scheduled jobs,
      auto-digests, or background agents.
    - MICROSOFT_TEAMS: Glean's Microsoft Teams integration
    */
    Platform string

    /* Manner by which the initial chat message was sent:
    - USER: a user sent the message
    - EVAL: Internal evaluation
    - RECOMMENDATION: An information-seeking intent is detected from the
      user's activity and a chat request is issued proactively
    - PRODUCTION_PROBE:
    - PROMPT_TEMPLATE:The user triggered a predefined prompt template
    - UNKNOWN: Unknown initiator
    - ONBOARDING: Part of user onboarding flow, such as a welcome message
    - GLEAN: sent during response generation for a Glean search
    - AUTOMATION: Initiated from the summarize API
    */
    Initiator string

    // If populated, it identifies the AI App for this chat message.
    ApplicationId string

    // Details about the AI agent that responded to the chat.
    AgentConfig *GleanCustomerEventAgentConfig

    // Query string. omitted if scrubbed
    UserQuery string

    // Full response message from the agent. omitted if scrubbed
    Response string

    // Datasource to which the chat result belongs.
    Datasource string

    // Total latency (in milliseconds) for generating the chat response.
    TotalResponseMillis int64

    // Domain of the host from which the chat was initiated.
    HostDomain string

    // Token(s) used to track any linked searches during this chat turn.
    SearchTrackingTokens []string

    // Ordered list of document IDs from search results page. omitted if scrubbed
    SerpOrderedDocIds []string

    // Follow-up question suggestions generated by the AI. omitted if scrubbed
    FollowupQuestions []string

    // Feature flag or product area associated with this chat event.
    Feature string

    // Time taken (in milliseconds) to generate the first response token.
    FirstResponseTokenMillis int64

    // Serialized UI tree metadata for the frontend view context.
    UiTree []string

    // Indicates whether a file was uploaded with the chat.
    HasFileUpload bool

    // Indicates whether the chat was triggered via REST client API.
    IsRestClientApi bool

    // Unique identifier for the workflow run associated with the chat, if any.
    WorkflowRunId string
}

// Details about the AI agent that responded to the chat.
type GleanCustomerEventAgentConfig struct {
    // The type of agent that responded to the request. Values:
    // - DEFAULT: the default Glean RAG agent.
    // - GPT: communicates directly with the underlying LLM.
    Agent string

    // Execution mode for the agent. Values:
    // - DEFAULT: default execution mode.
    // - QUICK: Trades accuracy and precision for speed.
    Mode string
}
Documents the citations that were used to generate a chat response.
// Documents the citations that were used to generate a chat response.
type GleanCustomerEventChatCitations struct {
    // The query to which these citations pertain. Allows joins to CHAT events.
    Qtt string

    // The chat session to which these citations pertain.
    ChatSessionId string

    // List of citations.
    Citations *[]GleanCustomerEventChatCitation

    // Workflow ID for the AI agent's processing session.
    WorkflowRunId string
}

// Details the citation used to generate a chat response.
type GleanCustomerEventChatCitation struct {
    // TrackingToken. Some may start with SEARCH_, indicating that the citations shown
    // in the chat response were retrieved via a SEARCH query under the hood.
    TrackingToken string

    // Populated when the citation refers to a document-like asset
    SourceDocument *GleanCustomerEventChatCitationSourceDocument

    // Populated when the citation refers to a refers to a raw file (e.g. PDF)
    SourceFile *GleanCustomerEventChatCitationSourceFile

    // Populated when the citation refers to a refers to a person
    SourcePerson *GleanCustomerEventChatCitationSourcePerson
}

type GleanCustomerEventChatCitationSourceDocument struct {
    Datasource string
    DocType string
    Id string // obfuscated if scrubbed
    Title string // omitted if scrubbed
    Url string // omitted if scrubbed
}

type GleanCustomerEventChatCitationSourceFile struct {
    Id string // obfuscated if scrubbed
    Name string // omitted if scrubbed
}

type GleanCustomerEventChatCitationSourcePerson struct {
    Id string // obfuscated if scrubbed
    Name string // omitted if scrubbed
}
Documents usages of the AI Summary feature.
// Documents usages of the AI Summary feature.
type GleanCustomerEventAiSummary struct {
    // Document IDs for which summary was requested. obfuscated if scrubbed
    DocIds []string

    // Full text of the AI-generated summary. omitted if scrubbed
    SummaryText string

    TrackingToken string
}
Documents invocations of AI-generated answers to user searches.
// Documents invocations of AI-generated answers to user searches.
type GleanCustomerEventAiAnswer struct {
    // ID of the search that resulted in the AI-generated answer.
    TrackingToken string

    // Full text of the AI-generated answer. omitted if scrubbed
    Response string

    // Unique identifier for the AI-generated answer.
    Qtt string

    // Follow-up question suggestions generated by the AI. omitted if scrubbed
    FollowupQuestions []string
}
Documents usage of the Glean Shortcuts API.
// Documents usage of the Glean Shortcuts API.
type GleanCustomerEventShortcut struct {
    // Which shortcut operation was performed.
    // Type: ShortcutEnumType (enum with values: CREATE, DELETE, GET, REDIRECT, UPDATE)
    Event ShortcutEnumType

    // Unique identifier for the shortcut.
    Id int32

    // Canonical link text following go/ prefix. omitted if scrubbed
    Alias string

    // Link text following go/ prefix as input by user. omitted if scrubbed
    InputAlias string

    // Destination URL for the shortcut. omitted if scrubbed
    DestinationUrl string

    // Glean Document ID for the URL, if known. omitted if scrubbed
    DocumentIdForUrl string
}
Documents a click on a search result.
// Documents a click on a search result.
type GleanCustomerEventSearchClick struct {
    // Identifies the search to which this result click belongs. Allows joins
    // joins to SEARCH events.
    TrackingToken string

    // The index of the result on the search results page.
    Position int

    // Unique identifier for the search result. omitted if scrubbed
    DocId string

    // URL of the search result. omitted if scrubbed
    DocUrl string

    // Datasource to which the search result belongs.
    Datasource string

    // Title of the document that was clicked. omitted if scrubbed
    DocTitle string

    // Type of the document that was clicked.
    DocType string
}
Feedback left on chat messages.
// Feedback left on chat messages.
type GleanCustomerEventChatFeedback struct {
    // Identifier for the chat message this feedback was left on.
    MessageId string

    // Feedback action that was taken by the user. Values: UPVOTE, DOWNVOTE, MANUAL_FEEDBACK.
    Event string

    // If populated, identifies the AI App for this chat feedback.
    ApplicationId string

    // Feedback comments provided by the user. Only populated for MANUAL_FEEDBACK. omitted if scrubbed
    Comments string

    // Vote cast by the user at the time of giving manual feedback
    // Values: UPVOTE, DOWNVOTE
    Vote string

    // ID for the chat session during which the feedback event occurred
    ChatSessionId string

    Rating int64 // Always NULL. Not advised to use.
    RatingKey string // Always undefined. Not advised to use.

    // Ties together all steps in a multi-step flow.
    RunId string

    // Identifier for the workflow associated with this feedback.
    WorkflowId string

    AgentId string
}
Events taken by users in the Glean application. Captures a wide variety of actions.
// Events taken by users in the Glean application. Captures a wide variety of actions.
type GleanCustomerEventClientEvent struct {
    // Event type. A wide variety of actions are included here; see sample queries for examples on useful values.
    Event string

    // The feature or product area to which the event belongs.
    Category string

    // The path in the Glean application on which the event took place.
    PagePath string

    // An identifying label for the event used to further differentiate actions.
    Label string

    // ID for the app session during which the action took place.
    SessionTrackingToken string

    /*
    Surface from which the Client Event was initiated. Common values:
    - New Tab Page: Glean homepage in browser
    - Full Page: Fullscreen Glean web app
    - Extension Sidebar: from the Glean sidebar
    - Extension Overlay: Embedded overlay from browser extension
    - NSR: Native Search Replacement embedded in 3rd-party tools
    - Desktop App: Glean desktop application
    - PWA: Progressive Web App
    - Mobile: Glean mobile application
    */
    Modality string

    // The specific UI component involved in the interaction
    UIElement string

    // The domain/website where the event occurred.
    // Note: Called "Domain" in Java implementation, "HostDomain" in Go implementation.
    // Eg: company.glean.com
    HostDomain string

    // URL of the document being interacted with (currently only for support widget events). omitted if scrubbed
    DocUrl string
}
Feedback left on search results.
// Feedback left on search results.
type GleanCustomerEventSearchFeedback struct {
    // Identifier for the search request this feedback was left on.
    TrackingToken string

    // Numerical rating left by the user.
    Rating int

    // Label on the rating left by the user.
    // Values include "downvoted", "upvoted", "very_satisfied", "satisfied"
    RatingKey string

    // Query text for the search request this feedback was left on. omitted if scrubbed
    Query string

    // Feedback comments left by the user, if any. omitted if scrubbed
    Comments string
}
Upvotes and downvotes left on AI-generated answers.
// Upvotes and downvotes left on AI-generated answers.
type GleanCustomerEventAiAnswerVote struct {
    // Identifier for the search request this vote was left on.
    TrackingToken string

    // Vote cast by the user for this answer. One of UPVOTE, DOWNVOTE
    Vote string
}
Upvotes and downvotes left on AI-generated summaries.
// Upvotes and downvotes left on AI-generated summaries.
type GleanCustomerEventAiSummaryVote struct {
    // Identifier for the search request this vote was left on, if applicable.
    TrackingToken string

    // Vote cast by the user for this answer. One of UPVOTE, DOWNVOTE
    Vote string
}
A single top-level invocation of a Glean Workflow request. Includes details for all associated and nested workflow executions.
// A single top-level invocation of a Glean Workflow request.
// Includes details for all associated and nested workflow executions.
type GleanCustomerEventWorkflowRun struct {
    // If populated, identifies the AI App for this workflow run.
    ApplicationId string

    // Globally unique identifier for the invocation.
    RunId string

    // Root workflow identifier for the top-level workflow in nested executions.
    RootWorkflowId string

    // Identifier for the chat session.
    ChatSessionId string

    // Identifier for the Glean session.
    SessionTrackingToken string

    // Source tracking token that initiated this workflow.
    SourceTrackingToken string

    /* Name of the Glean feature associated with this workflow.
    - AI_ANSWER: Generates AI-powered answers
    - THREAD_SUMMARIZER: Summarizes long message threads into concise takeaways.
    - SUPPORT_NEXT_STEPS: Suggests follow-up actions after support-related interactions.
    - DAILY_DIGESTS: Creates daily summaries of updates, messages, or documents.
    - AI_FEED: Surfaces recommended or trending content.
    - AGENT: Executes multi-step autonomous workflows across tools.
    - KNOWLEDGE_GRAPH: Explores relationships in Glean's knowledge graph.
    - DEEP_RESEARCH: Performs multi-hop research to synthesize deeper answers.
    - INLINE_MENU: Displays contextual actions inline (e.g., summarize, refine).
    - REFINE_ANSWER: Refines or clarifies AI responses through follow-up.
    - GITHUB_PR_DESCRIPTION_GENERATOR: Creates PR summaries from code changes.
    */
    Feature string

    /* The initiator of the workflow execution.
    - USER: a user sent the message
    - EVAL: Internal evaluation
    - RECOMMENDATION: An information-seeking intent is detected from the user's activity and a chat request is issued proactively
    - PRODUCTION_PROBE: Synthetic probes to validate production readiness
    - PROMPT_TEMPLATE:The user triggered a predefined prompt template
    - UNKNOWN: Unknown initiator
    - ONBOARDING: Part of user onboarding flow, such as a welcome message
    - GLEAN: sent during response generation for a Glean search
    - AUTOMATION: Initiated from background agents(Schedule/Content Trigger agent runs)
    - SUMMARIZE: Initiated to summarize a document, thread, tickets, etc
    */
    Initiator string

    /* The platform or surface from which the workflow was triggered.
    - WEB: Glean Assistant web UI
    - SLACK: Slackbot
    - REST_API: API request by an external developer or integration
    - SERVER: Backend or server-side system, such as for scheduled jobs,
      auto-digests, or background agents.
    - MICROSOFT_TEAMS: Glean's Microsoft Teams integration
    */
    Platform string

    // Knowledge mode used for this workflow execution (e.g., "DEEP", "QUICK").
    KnowledgeMode string

    // All workflows associated with this top-level request.
    WorkflowExecutions []*GleanCustomerEventWorkflowExecution

    // All workflow steps associated with this top-level request.
    StepExecutions []*GleanCustomerEventStepExecution

    // All action executions associated with this top-level request.
    ActionExecutions []*GleanCustomerEventActionExecution
}

type GleanCustomerEventWorkflowExecution struct {
    // Identifier for the type of Workflow run.
    WorkflowId string

    // Creator of this Workflow. Either `GLEAN` for Glean-created workflows or `USER` for user-created workflows.
    CreationSource string

    /* The namespace of the workflow that was run.
    - STATIC_WORKFLOW: statically defined workflow
    - AGENT: workflow associated with Agents
    */
    Namespace string

    // Overall execution status for this Workflow: `SUCCESS`, `ERROR`, `CANCELLED`.
    Status string

    // Error classification.
    ErrorType string

    // True if the workflow, or any imported workflow, contains a replication config.
    // Examples: Workflow A (parent) -> Workflow B (child)
    // Case 1: A and B do not contain loops -> HasLoop is false for both.
    // Case 2: A contains a loop, but B does not -> HasLoop is true for A.
    // Case 3: A does not contain a loop, but B does -> HasLoop is true for both.
    HasLoop bool
}

type GleanCustomerEventStepExecution struct {
    // Identifier for the type of Workflow Step.
    StepId string

    // Identifier for the type of Workflow run.
    WorkflowId string

    // Overall execution status for this step: `EXECUTED`, `SKIPPED`, `ERROR`.
    Status string

    // Error classification.
    ErrorType string

    // Name of the Tool associated with this step.
    ActionInstanceId string

    // Search citations associated with this step, if any. obfuscated if scrubbed
    Citations []*GleanCustomerEventChatCitation
}

type GleanCustomerEventActionExecution struct {
    // Identifier for the action instance executed.
    ActionInstanceId string

    // Identifier for the workflow step that executed this action.
    StepId string

    // Search tracking tokens associated with this action execution.
    SearchTrackingTokens []string
}
Logs LLM (Large Language Model) API calls made by Glean.
// Logs LLM (Large Language Model) API calls made by Glean.
type GleanCustomerEventLlmCall struct {
    // HTTP status code returned from the LLM provider API.
    HttpStatusCode int

    // Name of the LLM model used (e.g., "gpt-4", "claude-3-opus").
    Model string

    // Number of input tokens sent to the LLM.
    InputTokens int64

    // Number of output tokens received from the LLM.
    OutputTokens int64

    // Number of tokens used to create cache entries.
    CacheCreationInputTokens int64

    // Number of tokens read from cache.
    CacheReadInputTokens int64

    // LLM provider name (e.g., "openai", "anthropic", "azure").
    Provider string

    // Associated workflow run identifier, if this call was part of a workflow.
    WorkflowRunId string

    // Whether the model is hosted by Glean.
    IsGleanHostedModel bool

    // Sub-categorization of the LLM call for analytics.
    SubType string
}
Captures the full conversation history within a workflow run.
// Captures the full conversation history within a workflow run.
type GleanCustomerEventWorkflowConversation struct {
    // Associated workflow run identifier.
    WorkflowRunId string

    // List of all messages in the conversation.
    Messages []*GleanCustomerEventChatMessage
}

type GleanCustomerEventChatMessage struct {
    // Author of the message (e.g., "user", "agent", "system").
    Author string

    // Text content of the message.
    Text string
}
PLEASE NOTE: The Workflow logs have been deprecated and replaced with WORKFLOW_RUN. The Workflow logs were only present in the data starting April-29 to Jun-13, and contain important Chat data.
type GleanCustomerEventWorkflow struct {
    // ID for the chat session during which the workflow event occurred
    // Useful for linking workflow actions to chat interactions.
    ChatSessionId string

    // List of citations.
    Citations *[]GleanCustomerEventChatCitation

    // Name of the data source where the workflow originated or is acting on.
    Datasource string

    /* Name of the Glean feature associated with this workflow.
    - AI_ANSWER: Generates AI-powered answers
    - THREAD_SUMMARIZER: Summarizes long message threads into concise takeaways.
    - SUPPORT_NEXT_STEPS: Suggests follow-up actions after support-related interactions.
    - DAILY_DIGESTS: Creates daily summaries of updates, messages, or documents.
    - AI_FEED: Surfaces recommended or trending content.
    - AGENT: Executes multi-step autonomous workflows across tools.
    - KNOWLEDGE_GRAPH: Explores relationships in Glean's knowledge graph.
    - DEEP_RESEARCH: Performs multi-hop research to synthesize deeper answers.
    - INLINE_MENU: Displays contextual actions inline (e.g., summarize, refine).
    - REFINE_ANSWER: Refines or clarifies AI responses through follow-up.
    - GITHUB_PR_DESCRIPTION_GENERATOR: Creates PR summaries from code changes.
    */
    Feature string

    /* The initiator of the workflow execution.
    - USER: a user sent the message
    - EVAL: Internal evaluation
    - RECOMMENDATION: An information-seeking intent is detected from the user's activity and a chat request is issued proactively
    - PRODUCTION_PROBE: Synthetic probes to validate production readiness
    - PROMPT_TEMPLATE:The user triggered a predefined prompt template
    - UNKNOWN: Unknown initiator
    - ONBOARDING: Part of user onboarding flow, such as a welcome message
    - GLEAN: sent during response generation for a Glean search
    - AUTOMATION: AUTOMATION: Initiated from background agents(Schedule/Content Trigger agent runs)
    - SUMMARIZE: Initiated to summarize a document, thread, tickets, etc
    */
    Initiator string

    /* The platform or surface from which the workflow was triggered.
    - WEB: Glean Assistant web UI
    - SLACK: Slackbot
    - REST_API: API request by an external developer or integration
    - SERVER: Backend or server-side system, such as for scheduled jobs,
      auto-digests, or background agents.
    - MICROSOFT_TEAMS: Glean's Microsoft Teams integration
    */
    Platform string

    // Unique identifier for the overall workflow run.
    // Ties together all steps in a multi-step flow.
    RunId string

    // Status of the current step execution within the workflow.
    // Example: "UNSPECIFIED", "EXECUTED", "SKIPPED", "ERROR"
    StepExecutionStatus string

    // Identifier for the specific step within the workflow.
    // Example: "REFLECT", "RESPOND", "SEARCH", "PARSE_QUERY_LANGUAGE" etc.
    StepId string

    // Overall status of the full workflow execution.
    // Example: "SUCCESS", "ERROR", "CANCELLED"
    WorkflowExecutionStatus string

    // Identifier for the workflow template or definition.
    // Helps categorize which flow was executed.
    WorkflowId string
}
Documents activities performed by the Glean Bot across various platforms.
type GleanCustomerEventGleanBotActivity struct {
    // Identifier for the AI application associated with this Glean Bot activity.
    ApplicationId string

    // ID of the Slack or chat channel where the interaction occurred.
    ChannelId string

    // Metadata for the event, including context like user, app, or message IDs.
    EventMetadata *[]GleanBotActivityEventMetadata

    // Token used to uniquely track this specific Glean Bot event across logs.
    EventTrackingToken string

    /* Type of activity performed by the Glean Bot.
    Indicates the nature of the event that resulted from bot interaction.
    - NON_TAGGED_MESSAGE: A message sent to Gleanbot without an explicit trigger (e.g., @ mention or command).
    - PROACTIVE_DISCUSSION_SUMMARIZER: Bot proactively summarizes a thread.
    - DAILY_DIGEST_REMINDER: Reminder to view the daily digest.
    - ASSISTANT_THREAD: Thread started with the Glean Assistant.
    - DM_TO_GLEANBOT_MESSAGE: Direct message sent to Gleanbot.
    - VIEW_DIGEST_CLICK: User clicks to view a digest.
    - DIGEST_SETTINGS: User opens or updates digest settings.
    - SHOW_SOURCES: Bot shows sources behind an answer.
    - SHARE_HELPFULNESS: User rates the helpfulness of a message.
    - TAGGED_MESSAGE: Gleanbot was explicitly mentioned or tagged.
    - GENERATE_ANSWER: Bot generates an AI-powered response.
    - COMMAND: Command issued to Gleanbot (e.g., /glean).
    - FEEDBACK_CLICK: User clicks quick feedback options.
    - SHARE_CLICK: User clicks a share button or link.
    - SUBMIT_FEEDBACK: Detailed feedback submitted by user.
    - DISMISS_SUGGESTION: User dismisses a bot suggestion.
    - EXECUTE_ACTION: Bot executes a follow-up action.
    - TEAMS_BOT_INSTALL: Gleanbot installed in Microsoft Teams.
    */
    EventType string

    // Latency measurements for different parts of the bot response pipeline.
    LatenciesMillisMap *[]GleanBotActivityLatenciesMillis

    // Description of what response was sent by the bot.
    // Eg: DAILY_DIGEST_REMINDER_SENT, REACTIVE_ACT_MESSAGE
    ResponseEvents []string

    // Source system or trigger for the bot action.
    Source string

    // Session tracking token used to link this activity with other user actions.
    Stt string

    // Entry point or reason for triggering the workflow
    // e.g. PROACTIVE_WORKFLOW_START, DSE_EVENT_START, PROACTIVE_BOT_DISABLED_FAILURE
    WorkflowExecutionPoints []string

    // Identifier for the workspace where this activity took place.
    WorkspaceId string

    // Agent identifier associated with this Glean Bot activity.
    AgentId string
}

type GleanBotActivityLatenciesMillis struct {
    // Time in milliseconds for various Gleanbot actions during message handling.
    ReactiveActMessage string
    // Time to send the bot's main reactive message.
    ReactiveReaction string
    // Time taken to plan the bot's response message.
    ReactivePlanMessage string
    // Time to delete a planned message.
    ReactivePlanMessageDeleted string
    // Time to share a private response (e.g., converting draft to public message).
    ReactivePrivateResponseShared string
    // Time to send a proactive message. (not in response to user input).
    ProactiveMessage string
    // Time to display a response modal.
    ReactiveGenerationResponseModal string
    // Time to send an error message.
    ReactiveErrorMessage string
}
Documents clicks on citations within chat responses.
type GleanCustomerEventChatCitationClick struct {
    // Name of the datasource where the cited content resides.
    Datasource string

    // Identifier linking the citation click back to the original chat query.
    TrackingToken string

    // Document ID that was clicked. omitted if scrubbed
    DocId string
}
Note that since this is snapshot data, any user, workflow, workflow step, subscription, action pack, action, or action instance that is deleted on a given date will stop showing up in the data from the next day.
type GleanCustomerEventProductSnapshot struct {
    Type string
    User *UserSnapshot
    Workflow *WorkflowSnapshot
    WorkflowStep *WorkflowStepSnapshot
    Subscription *SubscriptionSnapshot
    ActionPack *ActionPackSnapshot
    Action *ActionSnapshot
    ActionInstance *ActionInstanceSnapshot
}

type UserSnapshot struct {
    // Internal unique ID for the user. salted and hashed if scrubbed
    Id string

    // Canonical ID used for identity resolution across systems. salted and hashed if scrubbed
    CanonicalId string

    // List of alternate user identifiers used across systems. salted and hashed if scrubbed
    AliasIds []string

    // Internal logging identifier for the user. omitted if scrubbed
    LoggingId string

    // Timestamp when the user signed up.
    SignupTime string

    // The user's role within the product (e.g., "Member").
    PermissionsRole string

    // Secondary roles assigned to the user.
    PermissionsSecondaryRoles []string

    // Department name the user belongs to. salted and hashed if scrubbed
    Department string

    // Internal ID associated with the user's department.
    DepartmentId string

    // User's job function (e.g., "Research").
    JobFunction string

    // User's employment type, e.g., "FULL_TIME".
    EmployeeType string

    // Timestamp representing when the user account was created.
    StartDate string

    // User's configured timezone, e.g., "Pacific Daylight Time".
    Timezone string

    // Timezone offset in seconds from UTC (e.g., -25200 for PDT).
    TimezoneOffset string

    // Eligibility string for product features.
    ProductEligibility string

    // List of user settings as key-value pairs.
    UserSettings *[]UserSetting
}

type UserSetting struct {
    // Key for the user setting (e.g., "general.theme").
    Key string

    // Value associated with the setting key.
    Value string
}

type WorkflowSnapshot struct {
    // Unique identifier for the workflow.
    WorkflowId string

    // Creation timestamp of the workflow.
    CreatedAt string

    // Timestamp of the last update (default may be "0001-01-01T00:00:00Z").
    UpdatedAt string

    // ID of the user who created the workflow. salted and hashed if scrubbed
    CreatedBy string

    // ID of the user who last updated the workflow. salted and hashed if scrubbed
    LastUpdateBy string

    // Workflow namespace (e.g., "STATIC_WORKFLOW").
    NamespaceEnum string

    // Number of placeholders used in the workflow definition.
    NumPlaceholders string

    // Application ID the workflow belongs to.
    ApplicationId string

    // List of access roles for this workflow.
    Roles []WorkflowRole

    // Details about what triggers this workflow.
    Trigger WorkflowTrigger

    // Indicates if the workflow is a routing target.
    IsRoutingTarget string

    // Indicates if the workflow is an autonomous agent.
    IsAutonomousAgent string

    // Notes or annotations (may be blank).
    Notes []Note

    // Indicates if the workflow is hidden from standard listings.
    Unlisted string

    // Associated ML model (if any; blank if unused).
    Model string

    // Workflow provider (if any; may be empty).
    Provider string

    // Indicates if the workflow is only a draft.
    IsDraftOnly string

    // Workflow version number.
    Version string

    // Workflow name. omitted if scrubbed
    Name string

    // Information about workflow creation source.
    CreationSourceInfo CreationSourceInfo
}

type CreationSourceInfo struct {
    // Source of creation (e.g., "TEMPLATE", "SCRATCH").
    Source string

    // Source template ID if created from template.
    SourceId string
}

type WorkflowRole struct {
    // Role name, e.g., "VIEWER".
    Role string

    // Scope type for the role, e.g., "ALL".
    Type string

    // Role scope identifier. salted and hashed if scrubbed
    Id string
}

type Note struct {
    // Background color of the note.
    BackgroundColor string
}

type WorkflowTrigger struct {
    // Type of trigger, e.g., "INPUT_FORM".
    Type string

    // Template ID if applicable.
    TemplateId string

    // Data source for the trigger event.
    Datasource string

    // Associated document type (may be blank).
    DocType string

    // Reason for event-based trigger (if any).
    EventReason string

    // Additional dimensions or metadata (if any).
    Facets []string

    // Whether scheduled triggers are enabled.
    ScheduleEnabled string
}

type WorkflowStepSnapshot struct {
    // Unique action identifier (e.g., "Respond").
    ActionId string

    // Whether the step is a branching step in logic.
    IsBrancher string

    // Enum representing the step type, e.g., "DEFAULT".
    TypeEnum string

    // Associated ML model (if any; blank if unused).
    Model string

    // Unique step identifier within the workflow.
    StepId string

    // IDs of steps that must execute before this one.
    StepDependencies []string

    // Provider responsible for this step (if any).
    Provider string

    // Expected input type, e.g., "STEP_INSTRUCTION".
    InputType string

    // Indicates if this step contains looping logic.
    HasLoop string

    // Sampling temperature for LLM use (blank if unused).
    Temperature string

    // ID of the parent workflow.
    WorkflowId string

    // Defines the scope of memory this step includes.
    MemoryInclusion string
}

type SubscriptionSnapshot struct {
    // Unique identifier for the subscription.
    SubscriptionId string

    // Associated workflow identifier.
    WorkflowId string

    // Document type for the subscription.
    DocType string

    // Whether the doc type was filled by the end user.
    EndUserFilledDocType bool

    // Current status of the subscription.
    Status string

    // How often the subscription repeats (e.g., "DAILY", "WEEKLY").
    RepeatFrequency string

    // Timezone for the subscription schedule.
    Timezone string

    // When the subscription starts.
    StartsAt string

    // Reason for the current status.
    StatusReason string

    // User who created the subscription. salted and hashed if scrubbed
    CreatedBy string

    // When the subscription was created.
    CreatedAt string

    // User who last updated the subscription. salted and hashed if scrubbed
    UpdatedBy string

    // When the subscription was last updated.
    UpdatedAt string

    // Type of trigger for this subscription.
    TriggerType string
}

type ActionPackSnapshot struct {
    // Unique identifier for the action pack.
    Id string

    // Name of the action pack.
    Name string

    // Type of action pack (OOTB/CUSTOM).
    Type string

    // Associated data source instance.
    DataSourceInstance string

    // When the action pack was created.
    CreatedAt string

    // When the action pack was last updated.
    UpdatedAt string

    // User who created the action pack. salted and hashed if scrubbed
    CreatedBy string

    // User who last updated the action pack. salted and hashed if scrubbed
    UpdatedBy string

    // Provider for the action pack.
    Provider string

    // Authentication configuration data.
    AuthData AuthConfigs
}

type AuthConfigs struct {
    // List of authentication configurations.
    Configs []AuthConfig
}

type AuthConfig struct {
    // Type of authentication.
    AuthType string

    // Whether central authentication is used.
    UsesCentralAuth bool
}

type ActionSnapshot struct {
    // Unique identifier for the action.
    Id string

    // Name of the action.
    Name string

    // Type of action.
    Type string

    // Source of the action.
    Source string

    // Target surfaces where action is available.
    TargetSurfaces string

    // Assistant configuration for the action.
    AssistantConfig string

    // Creator configuration for the action.
    CreatorConfig string

    // When the action was created.
    CreatedAt string

    // When the action was last updated.
    UpdatedAt string

    // User who created the action. salted and hashed if scrubbed
    CreatedBy string

    // User who last updated the action. salted and hashed if scrubbed
    UpdatedBy string

    // Background execution policy for the action.
    BackgroundExecutionPolicy string

    // Associated action pack ID.
    ActionPackId string

    // Name of the associated action pack.
    ActionPackName string

    // Type of the associated action pack.
    ActionPackType string

    // Data source instance of the associated action pack.
    ActionPackDataSourceInstance string

    // When the associated action pack was created.
    ActionPackCreatedAt string

    // When the associated action pack was last updated.
    ActionPackUpdatedAt string

    // User who created the associated action pack. salted and hashed if scrubbed
    ActionPackCreatedBy string

    // User who last updated the associated action pack. salted and hashed if scrubbed
    ActionPackUpdatedBy string

    // Provider of the associated action pack.
    ActionPackProvider string
}

type ActionInstanceSnapshot struct {
    // Unique identifier for the action instance.
    Id string

    // Deployment surface where the action instance is deployed.
    DeploymentSurface string

    // Specific surface ID.
    SurfaceId string

    // Current status of the action instance.
    Status string

    // User who created the action instance. salted and hashed if scrubbed
    CreatedBy string

    // User who last updated the action instance. salted and hashed if scrubbed
    UpdatedBy string

    // When the action instance was created.
    CreatedAt string

    // When the action instance was last updated.
    UpdatedAt string

    // Associated action ID.
    ActionId string

    // Name of the associated action.
    ActionName string

    // Type of the associated action.
    ActionType string

    // Source of the associated action.
    ActionSource string

    // Target surfaces of the associated action.
    ActionTargetSurfaces []string

    // Assistant configuration of the associated action.
    ActionAssistantConfig string

    // Creator configuration of the associated action.
    ActionCreatorConfig string

    // When the associated action was created.
    ActionCreatedAt string

    // When the associated action was last updated.
    ActionUpdatedAt string

    // User who created the associated action. salted and hashed if scrubbed
    ActionCreatedBy string

    // User who last updated the associated action. salted and hashed if scrubbed
    ActionUpdatedBy string

    // Associated action pack ID.
    ActionPackId string

    // Name of the associated action pack.
    ActionPackName string

    // Type of the associated action pack.
    ActionPackType string

    // Data source instance of the associated action pack.
    ActionPackDataSourceInstance string

    // When the associated action pack was created.
    ActionPackCreatedAt string

    // When the associated action pack was last updated.
    ActionPackUpdatedAt string

    // User who created the associated action pack. salted and hashed if scrubbed
    ActionPackCreatedBy string

    // User who last updated the associated action pack. salted and hashed if scrubbed
    ActionPackUpdatedBy string

    // Provider of the associated action pack.
    ActionPackProvider string
}