Highlight (highlight.io) · Arazzo Workflow

Highlight Session Feedback Capture

Version 1.0.0

Open a session, attach searchable session properties, then record end-user feedback against that session.

1 workflow 1 source API 1 provider
View Spec View on GitHub ObservabilitySession ReplayError MonitoringAPMLoggingTracingOpenTelemetryOpen SourceFrontend MonitoringFull Stack MonitoringArazzoWorkflows

Provider

highlight-io

Workflows

session-feedback-capture
Initialize a session, tag it with properties, and record end-user feedback.
Runs initializeSession to obtain a session_secure_id, then addSessionProperties to attach searchable properties, then addSessionFeedback to pin verbatim user feedback to the session replay.
3 steps inputs: clientId, clientVersion, environment, feedbackText, firstloadVersion, organizationVerboseId, propertiesObject, userEmail, userName outputs: feedbackResult, sessionSecureId
1
initializeSession
executePublicGraphMutation
Run the initializeSession GraphQL mutation to open a new session for the project and return its session_secure_id.
2
addProperties
executePublicGraphMutation
Run the addSessionProperties GraphQL mutation to attach searchable key/value properties to the session.
3
addFeedback
executePublicGraphMutation
Run the addSessionFeedback GraphQL mutation to record the end user's verbatim feedback against the session.

Source API Descriptions

Arazzo Workflow Specification

highlight-io-session-feedback-capture-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Highlight Session Feedback Capture
  summary: Open a session, attach searchable session properties, then record end-user feedback against that session.
  description: >-
    Highlight exposes no comments API; the closest real capability on the public
    ingestion endpoint is session feedback, which lets an end user leave a note
    that is pinned to the replay. This workflow captures that flow over the single
    GraphQL ingestion endpoint: it runs initializeSession to mint a
    session_secure_id, runs addSessionProperties to tag the session with
    searchable key/value properties, then runs addSessionFeedback to record the
    user's verbatim feedback against the same session. The feedback and property
    mutations both require the secure id from initialize, so the steps are
    genuinely chained. Every step spells out its GraphQL request inline so the
    flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: sessionIngestionApi
  url: ../openapi/highlight-session-ingestion-api-openapi.yml
  type: openapi
workflows:
- workflowId: session-feedback-capture
  summary: Initialize a session, tag it with properties, and record end-user feedback.
  description: >-
    Runs initializeSession to obtain a session_secure_id, then addSessionProperties
    to attach searchable properties, then addSessionFeedback to pin verbatim user
    feedback to the session replay.
  inputs:
    type: object
    required:
    - organizationVerboseId
    - feedbackText
    properties:
      organizationVerboseId:
        type: string
        description: The Highlight project verbose id that owns the session.
      clientVersion:
        type: string
        description: The highlight.run client SDK version.
        default: "9.0.0"
      firstloadVersion:
        type: string
        description: The firstload script version.
        default: "9.0.0"
      environment:
        type: string
        description: The deployment environment the session was recorded in.
        default: production
      clientId:
        type: string
        description: A stable client identifier for the browser.
        default: ""
      propertiesObject:
        type: object
        description: Key/value session properties to attach for search and filtering.
        default: {}
      feedbackText:
        type: string
        description: The verbatim feedback the end user left on the session.
      userName:
        type: string
        description: The name of the user leaving feedback.
        default: ""
      userEmail:
        type: string
        description: The email of the user leaving feedback.
        default: ""
  steps:
  - stepId: initializeSession
    description: >-
      Run the initializeSession GraphQL mutation to open a new session for the
      project and return its session_secure_id.
    operationId: executePublicGraphMutation
    requestBody:
      contentType: application/json
      payload:
        operationName: initializeSession
        query: >-
          mutation initializeSession($organization_verbose_id: String!,
          $enable_strict_privacy: Boolean!, $client_version: String!,
          $firstload_version: String!, $client_config: String!, $environment:
          String!, $client_id: String!) {
          initializeSession(organization_verbose_id: $organization_verbose_id,
          enable_strict_privacy: $enable_strict_privacy, client_version:
          $client_version, firstload_version: $firstload_version, client_config:
          $client_config, environment: $environment, client_id: $client_id) {
          secure_id project_id } }
        variables:
          organization_verbose_id: $inputs.organizationVerboseId
          enable_strict_privacy: false
          client_version: $inputs.clientVersion
          firstload_version: $inputs.firstloadVersion
          client_config: "{}"
          environment: $inputs.environment
          client_id: $inputs.clientId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.data.initializeSession.secure_id != null
      type: jsonpath
    outputs:
      sessionSecureId: $response.body#/data/initializeSession/secure_id
  - stepId: addProperties
    description: >-
      Run the addSessionProperties GraphQL mutation to attach searchable key/value
      properties to the session.
    operationId: executePublicGraphMutation
    requestBody:
      contentType: application/json
      payload:
        operationName: addSessionProperties
        query: >-
          mutation addSessionProperties($session_secure_id: String!,
          $properties_object: Any) { addSessionProperties(session_secure_id:
          $session_secure_id, properties_object: $properties_object) }
        variables:
          session_secure_id: $steps.initializeSession.outputs.sessionSecureId
          properties_object: $inputs.propertiesObject
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      propertiesResult: $response.body#/data/addSessionProperties
  - stepId: addFeedback
    description: >-
      Run the addSessionFeedback GraphQL mutation to record the end user's
      verbatim feedback against the session.
    operationId: executePublicGraphMutation
    requestBody:
      contentType: application/json
      payload:
        operationName: addSessionFeedback
        query: >-
          mutation addSessionFeedback($session_secure_id: String!, $user_name:
          String, $user_email: String, $verbatim: String!, $timestamp: Timestamp!)
          { addSessionFeedback(session_secure_id: $session_secure_id, user_name:
          $user_name, user_email: $user_email, verbatim: $verbatim, timestamp:
          $timestamp) }
        variables:
          session_secure_id: $steps.initializeSession.outputs.sessionSecureId
          user_name: $inputs.userName
          user_email: $inputs.userEmail
          verbatim: $inputs.feedbackText
          timestamp: "1970-01-01T00:00:00Z"
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      feedbackResult: $response.body#/data/addSessionFeedback
  outputs:
    sessionSecureId: $steps.initializeSession.outputs.sessionSecureId
    feedbackResult: $steps.addFeedback.outputs.feedbackResult