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
    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
}
// Identifies the user taking the action.
type GleanCustomerEventUserIdentity struct {
    // Internal unique ID for the user.
    UserId string
    
    // Email address of the user.
    UserEmail string // omitted if scrubbed
    
    // Current department of the user
    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
}
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.
    UserQuery string // omitted if scrubbed
    
    // Full response message from the agent.
    Response string // omitted if scrubbed
    
    // Datasource to which the chat result belongs.
    Datasource string
    
    // Total latency (in milliseconds) for generating the chat response.
    TotalResponseMillis int
    
    // 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
    
    // Feature flag or product area associated with this chat event.
    Feature string
    
    // Time taken (in milliseconds) to generate the first response token.
    FirstResponseTokenMillis int
    
    // 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.
    DocIds []string // obfuscated if scrubbed
    
    // Full text of the AI-generated summary.
    SummaryText string // omitted if scrubbed
    
    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.
    Response string // omitted if scrubbed
    
    // Unique identifier for the AI-generated answer.
    Qtt string
}
Documents usage of the Glean Shortcuts API.
// Documents usage of the Glean Shortcuts API.
type GleanCustomerEventShortcut struct {
    // Which shortcut operation was performed. One of: CREATE, DELETE, GET, REDIRECT, UPDATE
    Event string
    
    // Unique identifier for the shortcut.
    Id int32
    
    // Canonical link text following go/ prefix.
    Alias string // omitted if scrubbed
    
    // Link text following go/ prefix as input by user.
    InputAlias string // omitted if scrubbed
    
    // Destination URL for the shortcut.
    DestinationUrl string // omitted if scrubbed
    
    // Glean Document ID for the URL, if known.
    DocumentIdForUrl string // omitted if scrubbed
}
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.
    DocId string // omitted if scrubbed
    
    // URL of the search result.
    DocUrl string // omitted if scrubbed
    
    // Datasource to which the search result belongs.
    Datasource 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.
    Comments string // omitted if scrubbed
    
    // 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
    
    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.
    // Eg: company.glean.com
    HostDomain 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.
    Query string // omitted if scrubbed
    
    // Feedback comments left by the user, if any.
    Comments string // omitted if scrubbed
}
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 {
    // Globally unique identifier for the invocation.
    RunId string
    
    // Identifier for the chat session.
    ChatSessionId string
    
    // Identifier for the Glean session.
    SessionTrackingToken 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
    
    // All workflows associated with this top-level request.
    WorkflowExecutions []*GleanCustomerEventWorkflowExecution
    
    // All workflow steps associated with this top-level request.
    StepExecutions []*GleanCustomerEventStepExecution
}

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
}

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.
    Citations []*GleanCustomerEventChatCitation
}
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
}

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
}
Note that since this is snapshot data, any user, workflow or workflow step that is deleted on a given date will stop showing up in the data from the next day.
type GleanCustomerEventProductSnapshot struct {
    Type string
    User *[]GleanCustomerProductSnapshotUser
    Workflow *[]GleanCustomerProductSnapshotWorkflow
    WorkflowStep *[]GleanCustomerProductSnapshotWorkflowStep
}

type GleanCustomerProductSnapshotUser struct {
    // User's configured timezone, e.g., "Pacific Daylight Time".
    Timezone string
    
    // Internal logging identifier for the user.
    LoggingID string
    
    // List of alternate user identifiers used across systems.
    AliasIDs []string
    
    // The user's role within the product (e.g., "Member").
    PermissionsRole string
    
    // Department name the user belongs to.
    Department string
    
    // Internal ID associated with the user's department.
    DepartmentID string
    
    // Unique identifier for the user.
    ID string
    
    // Canonical ID used for identity resolution across systems.
    CanonicalID string
    
    // Timezone offset in seconds from UTC (e.g., -25200 for PDT).
    TimezoneOffset string
    
    // User's job function (e.g., "Research").
    JobFunction string
    
    // Eligibility string for product features.
    ProductEligibility string
    
    // Timestamp representing when the user account was created.
    StartDate string
    
    // User's employment type, e.g., "FULL_TIME".
    EmployeeType string
    
    // List of user settings as key-value pairs.
    UserSettings *[]UserSetting
    
    // Timestamp when the user signed up.
    SignupTime string
}

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

type GleanCustomerProductSnapshotWorkflow struct {
    // Workflow namespace (e.g., "STATIC_WORKFLOW").
    NamespaceEnum string
    
    // Timestamp of the last update (default may be "0001-01-01T00:00:00Z").
    UpdatedAt string
    
    // Unique identifier for the workflow.
    WorkflowID string
    
    // Workflow provider (if any; may be empty).
    Provider string
    
    // Indicates if the workflow is a routing target.
    IsRoutingTarget string
    
    // Details about what triggers this workflow.
    Trigger WorkflowTrigger
    
    // Number of placeholders used in the workflow definition.
    NumPlaceholders string
    
    // Associated ML model (if any; blank if unused).
    Model string
    
    // ID of the user who last updated the workflow.
    LastUpdateBy string
    
    // ID of the template from which this workflow originated.
    SourceTemplateID string
    
    // ID of the user who created the workflow.
    CreatedBy string
    
    // Indicates if the workflow is hidden from standard listings.
    Unlisted string
    
    // List of access roles for this workflow.
    Roles []WorkflowRole
    
    // Application ID the workflow belongs to.
    ApplicationID string
    
    // Creation timestamp of the workflow.
    CreatedAt string
    
    // Notes or annotations (may be blank).
    Notes []string
}

type WorkflowTrigger struct {
    // Type of trigger, e.g., "INPUT_FORM".
    Type string
    
    // Associated document type (may be blank).
    DocType string
    
    // Template ID if applicable.
    TemplateID string
    
    // Reason for event-based trigger (if any).
    EventReason string
    
    // Data source for the trigger event.
    DataSource string
    
    // Additional dimensions or metadata (if any).
    Facets []string
}

type WorkflowRole struct {
    // Role name, e.g., "VIEWER".
    Role string
    
    // Scope type for the role, e.g., "ALL".
    Type string
    
    // Role scope identifier.
    ID string
}

type GleanCustomerProductSnapshotWorkflowStep 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
}