> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corbado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search subflows by filter criteria

> Finds subflows using exactly one selector: `userIDs`, `flowIDs`, `sessionIDs` or `filters`.
The `filters` selector searches a time window with optional error, environment and subflow filters.

ID-based results are ordered by start time, oldest first. Filter-based results are newest first
and include `totalCount` (uncapped matches) and `flowIDs` (distinct parent flows).
All results are capped at `limit`.

Required API key permission: `observe:subFlows:read`.



## OpenAPI

````yaml /api-reference/openapi/observe.yaml post /observe/subFlowSearch
openapi: 3.1.1
info:
  version: 1.0.0
  title: Corbado API
  description: >
    # Introduction

    This documentation gives an overview of all Corbado API calls to implement
    authentication observe.
  contact:
    name: Corbado team
    email: support@corbado.com
    url: https://www.corbado.com
servers:
  - url: https://api.cloud.corbado.io/v1
security:
  - bearerAuth: []
tags:
  - name: ObserveFlow
    description: Flow search and related APIs
    x-group: Journeys and users
  - name: ObserveSubFlow
    description: Subflow search and related APIs
    x-group: Journeys and users
  - name: ObserveUser
    description: User search and related APIs
    x-group: Journeys and users
  - name: ObserveClientEnv
    description: Client environment search APIs
    x-group: Journeys and users
  - name: ObserveTimeSeries
    description: Time series query APIs
    x-group: Metrics and funnels
  - name: ObserveFunnel
    description: Historical funnel metrics, dictionaries and coverage.
    x-group: Metrics and funnels
  - name: ObserveEvent
    description: Event ingestion and event feed APIs
    x-group: Events
  - name: ObserveError
    description: Named authentication errors and recommendations.
    x-group: Error management
  - name: ObserveErrorFlavour
    description: Error variants and their impact on authentication outcomes.
    x-group: Error management
  - name: ObserveAlert
    description: Authentication alert rules, instances and history.
    x-group: Alert management
  - name: ObserveAnnotation
    description: Annotation APIs (dated notes for analytics context)
    x-group: Annotations
  - name: ObserveTableExport
    description: Table export file listing and download APIs
    x-group: Data exports
  - name: ObserveTimeSeriesExport
    description: Time-series export generation and downloads.
    x-group: Data exports
  - name: ObserveDataExport
    description: Data export APIs
    x-group: User data
  - name: ObserveDataDeletionJob
    description: Data deletion job APIs
    x-group: User data
  - name: ObserveFlowTypeDefinition
    description: Flow type definitions used in authentication journeys.
    x-group: Catalogs and labels
  - name: ObserveCatalog
    description: Catalog APIs
    x-group: Catalogs and labels
  - name: OpenAPI
    description: Downloadable API specification
  - name: ProjectOperationExecution
    description: Project-scoped operation history and pipeline health
  - name: ObserveClassification
    description: Flow and subflow classification APIs
  - name: ObserveIntegrationStats
    description: Integration stats APIs
  - name: ObserveTimeSeriesPrecalculation
    description: Time series precalculation APIs
  - name: ObserveIDList
    x-group: Saved ID lists
    description: Stored ID-list selection APIs
  - name: ObserveDataContext
    description: Schema-loose data context APIs for agent and debugging tooling
  - name: ObserveData
    description: Observe data administration APIs
  - name: ObserveTrackingStats
    description: Tracking ingestion stats APIs
  - name: ObserveExperiment
    x-group: Experiments
    description: Experiment catalog and run APIs
  - name: ObserveDataPolicy
    description: >-
      Project data policy catalogue (retention selected by the SDK's
      meta.dataPolicy code)
  - name: ObserveMetadata
    x-group: Metadata
    description: Authenticator metadata APIs (FIDO MDS + passkey AAGUID)
  - name: ObservePasskey
    x-group: Passkey analysis
    description: Observed passkey search and cohort analysis.
paths:
  /observe/subFlowSearch:
    post:
      tags:
        - ObserveSubFlow
      summary: Search subflows by filter criteria
      description: >-
        Finds subflows using exactly one selector: `userIDs`, `flowIDs`,
        `sessionIDs` or `filters`.

        The `filters` selector searches a time window with optional error,
        environment and subflow filters.


        ID-based results are ordered by start time, oldest first. Filter-based
        results are newest first

        and include `totalCount` (uncapped matches) and `flowIDs` (distinct
        parent flows).

        All results are capped at `limit`.


        Required API key permission: `observe:subFlows:read`.
      operationId: ObserveSubFlowSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/observeSubFlowSearchReq'
      responses:
        '200':
          description: Matching subflows.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/observeSubFlowSearchRsp'
        default:
          $ref: '#/components/responses/error'
      security:
        - bearerAuth:
            - observe:subFlows:read
components:
  schemas:
    observeSubFlowSearchReq:
      type: object
      properties:
        includeDetails:
          type: boolean
          description: >-
            Include batched environment, error and tag details for userIDs,
            flowIDs or sessionIDs selectors. Filters retain their output
            setting.
        userIDs:
          type: array
          description: >-
            User IDs to fetch subflows for (format `tus-<number>`). Mutually
            exclusive with other selectors.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=500,dive,id=tus
        flowIDs:
          type: array
          description: >-
            Flow IDs to fetch subflows for (format `flw-<number>`). Mutually
            exclusive with other selectors.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=500,dive,id=flw
        sessionIDs:
          type: array
          description: >-
            Public session UUIDs to fetch subflows for. Mutually exclusive with
            other selectors.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=500,dive,uuid
        filters:
          $ref: '#/components/schemas/observeSubFlowSearchFilters'
        subFlowTypes:
          type: array
          description: Optional subflow types to include.
          items:
            $ref: '#/components/schemas/observeSubFlowType'
          x-oapi-codegen-extra-tags:
            validate: >-
              omitempty,min=1,dive,oneof=passkeyLogin passwordLogin socialLogin
              provideIdentifier decision passkeyEnrollment emailOTP emailLink
              setPassword provideData reset passkeyDeletion smsOTP totp
              appConfirmation systemCredential trustedDeviceCheck
              trustedDeviceEnrollment keySigning keyRegistration
        limit:
          type: integer
          description: >-
            Maximum number of subflows to return in total across all subflow
            types. Defaults to 100, maximum 10000.
          default: 100
          minimum: 1
          maximum: 10000
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=10000
    observeSubFlowSearchRsp:
      type: object
      required:
        - subFlows
      properties:
        subFlows:
          type: array
          description: >-
            Matching subflows, capped at `limit`. ID-based selectors order
            oldest first; the `filters` selector orders newest first.
          items:
            $ref: '#/components/schemas/observeSubFlowSearchEntry'
        totalCount:
          type: integer
          format: int64
          description: >-
            Total number of matching subflows before the `limit` cap. Only set
            for the `filters` selector — compare against the returned count to
            detect truncation (analytics over a truncated result cover the most
            recent totalCount-of-limit slice, not the whole window).
        flowIDs:
          type: array
          description: >-
            Deduplicated parent flow IDs (format `flw-<number>`) of the returned
            subflows, in result order. Only set

            for the `filters` selector. Store via POST /observe/idLists to hand
            the cohort to user-search or a

            funnel.
          items:
            type: string
        aggregates:
          type: array
          description: >-
            Per-group counts of the matching subflows — only set for
            `output=aggregate`. Ordered by count descending and capped at 5000
            cells (`aggregateTruncated` reports the cap firing; `totalCount`
            stays exact regardless). A value of "" means the dimension is not
            set on the subflow.
          items:
            $ref: '#/components/schemas/observeSubFlowSearchAggregateCell'
        aggregateTruncated:
          type: boolean
          description: True when the aggregate cell cap dropped long-tail groups.
    observeSubFlowSearchFilters:
      type: object
      description: >-
        Time-window selector with optional narrowing filters. All narrowing
        filters are AND-combined; values within one filter are OR-combined.
        Filters targeting a column a subflow type does not have (e.g.
        cdaLikelihoods on anything but passkey-login) simply exclude that type
        from the result.
      required:
        - fromDate
        - toDate
      properties:
        fromDate:
          type: string
          description: Start of the subflow-start window (yyyy-MM-dd), interpreted in UTC.
          x-oapi-codegen-extra-tags:
            validate: required,datetime=2006-01-02
        toDate:
          type: string
          description: >-
            End of the subflow-start window (yyyy-MM-dd, exclusive), interpreted
            in UTC. At most 366 days after `fromDate`.
          x-oapi-codegen-extra-tags:
            validate: required,datetime=2006-01-02
        flavourIDs:
          type: array
          description: >-
            Restrict to subflows that carry an error occurrence of one of these
            error flavours (format

            `erf-<number>`).
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=500,dive,id=erf
        osName:
          type: array
          description: Filter by OS name.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,dive,min=1,max=100
        browserName:
          type: array
          description: Filter by browser name (web) / app name (native).
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,dive,min=1,max=100
        applicationID:
          type: array
          description: Filter by application ID.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,dive,min=1,max=25
        specTypes:
          type: array
          description: >-
            Filter by subflow spec type. Excludes subflow types without a spec
            type.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,dive,min=1,max=255
        configVariantIDs:
          type: array
          description: >-
            Filter by challenge/config variant (format `chv-<number>`). Only
            passkey-login, passkey-enrollment and

            provide-identifier subflows carry one.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=500,dive,id=chv
        cdaLikelihoods:
          type: array
          description: >-
            Filter by CDA-likelihood bucket. Only passkey-login subflows carry
            one.
          items:
            type: string
            enum:
              - 'no'
              - 25-50
              - 50-75
              - 75-95
              - 95-plus
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,dive,oneof=no 25-50 50-75 75-95 95-plus
        completed:
          type: boolean
          description: >-
            Filter by completion. Omit to match both completed and non-completed
            subflows.
        output:
          type: string
          enum:
            - full
            - flowIDs
            - aggregate
          description: >-
            Response shape. `full` (default) returns hydrated subflow entries
            enriched with environment values, error occurrences and the parent
            flow's custom tags. `flowIDs` returns an empty `subFlows` array and
            only `totalCount` plus the deduplicated parent `flowIDs` — the cheap
            shape for user-search / funnel handoffs. `aggregate` returns
            per-group counts of the matching subflows along the `groupBy`
            dimensions instead of rows — the exact-denominator shape for
            correlation analysis (no row cap bias).
          x-oapi-codegen-extra-tags:
            validate: omitempty,oneof=full flowIDs aggregate
        groupBy:
          type: array
          description: >-
            Dimensions to aggregate over — required with (and only valid with)
            `output=aggregate`. Static tokens: clientEnvType (web/app), osName,
            browserName (browser / app name), osVersion, browserVersion (browser
            version maj.min.pat / app version), deviceModel, deviceBrand,
            deviceOwnerAuth, playServicesVersion (the last three native-app only
            — web subflows fold into the "" group), specType, detailedOutcome,
            completed, configVariantID, cdaLikelihood. Custom tags of the parent
            flow via `customTag:<name>`. A dimension a subflow type has no
            column for excludes that type from the aggregation.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=8,dive,min=1,max=270
        detailedOutcomes:
          type: array
          description: Filter by detailed outcome values.
          items:
            type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,dive,min=1,max=255
    observeSubFlowType:
      type: string
      description: Observe subflow type.
      enum:
        - passkeyLogin
        - passwordLogin
        - socialLogin
        - provideIdentifier
        - decision
        - passkeyEnrollment
        - emailOTP
        - emailLink
        - setPassword
        - provideData
        - reset
        - passkeyDeletion
        - smsOTP
        - totp
        - appConfirmation
        - systemCredential
        - trustedDeviceCheck
        - trustedDeviceEnrollment
        - keySigning
        - keyRegistration
    observeSubFlowSearchEntry:
      type: object
      required:
        - id
        - flowID
        - sessionID
        - applicationID
        - errorCount
        - completed
        - durationMs
        - startMs
        - data
      properties:
        passkeyID:
          type: string
          description: >-
            Associated passkey (tpk-...). Interpret creation/use using method
            and outcome; association alone does not prove successful
            authentication.
        clientEnvDataID:
          type: string
          description: Exact environment snapshot ID as a decimal string.
        additionalClientEnvDataID:
          type: string
          description: >-
            Exact additional environment snapshot ID as a decimal string, when
            applicable.
        touchpoint:
          type: string
          description: Stored method touchpoint, when available.
        bindingID:
          type: string
          description: Trusted-device binding ID as a decimal string, when available.
        previouslySeenBucket:
          type: string
          description: Stored trusted-device history bucket.
        id:
          type: string
          description: Subflow ID (format `sfl-<number>`).
        flowID:
          type:
            - string
            - 'null'
          description: >-
            Parent flow ID (format `flw-<number>`). Null when the subflow has no
            parent flow.
        sessionID:
          type:
            - string
            - 'null'
          description: >-
            Public session UUID. Null when the subflow has no parent
            flow/session.
        applicationID:
          type: string
          description: Application ID.
        userID:
          type: string
          description: User ID (format `tus-<number>`). Absent for anonymous subflows.
        clientEnvID:
          type: string
          description: >-
            Client environment ID (format `tce-<number>`). Absent when no client
            environment was resolved.
        errorCount:
          type: integer
          description: Number of errors during the subflow.
        completed:
          type: boolean
          description: Whether the subflow completed successfully.
        durationMs:
          type: integer
          format: int64
          description: Duration of the subflow in milliseconds.
        startMs:
          type: integer
          format: int64
          description: Start time in milliseconds since epoch.
        firstInteractionDurationMs:
          type: integer
          format: int64
          description: >-
            Duration from implicit decision start to first user interaction in
            milliseconds.
        detailedOutcome:
          type: string
          description: Detailed subflow outcome when available.
        connectedDecisionID:
          type: string
          description: >-
            Decision subflow ID that triggered this subflow (format
            `sfl-<number>`), when available.
        environment:
          $ref: '#/components/schemas/observeSubFlowSearchEnvironment'
        errors:
          type: array
          description: >-
            Error occurrences detected on this subflow during classification,
            oldest first. Only set for `filters` with `output=full` or ID
            selectors with `includeDetails=true`. Resolve signature details and
            the mapped error via the error flavour list.
          items:
            $ref: '#/components/schemas/observeSubFlowSearchErrorOccurrence'
        customTags:
          type: array
          description: >-
            Custom tags of the parent flow, name-sorted. Only set for the
            `filters` selector with `output=full`.
          items:
            $ref: '#/components/schemas/observeSubFlowSearchCustomTag'
        data:
          $ref: '#/components/schemas/observeSubFlowData'
    observeSubFlowSearchAggregateCell:
      type: object
      required:
        - values
        - count
      properties:
        values:
          type: object
          description: The group's dimension values, keyed by the requested groupBy tokens.
          additionalProperties:
            type: string
        count:
          type: integer
          format: int64
          description: Number of matching subflows in this group.
    errorRspV2:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
          properties:
            message:
              description: Error message
              type: string
              example: Validation failed
            details:
              description: Validation error details per field
              type: array
              items:
                type: object
                required:
                  - field
                  - message
                properties:
                  field:
                    description: Field name that failed validation
                    type: string
                    example: projectID
                  message:
                    description: Validation error message
                    type: string
                    example: required
    observeSubFlowSearchEnvironment:
      type: object
      description: >-
        Resolved client-environment values of a subflow. Only set for the
        `filters` selector with `output=full`; ID-based selectors keep returning
        the clientEnvID reference only.
      properties:
        osName:
          type: string
          description: OS name, when recorded.
        browserName:
          type: string
          description: Browser name (web) / app name (native), when recorded.
        osVersion:
          type: string
          description: OS version as maj.min.pat; absent when unrecorded.
        clientEnvType:
          $ref: '#/components/schemas/observeClientEnvType'
        browserVersion:
          type: string
          description: >-
            Browser version as maj.min.pat (web) / app version (native), when
            recorded.
        deviceModel:
          type: string
          description: >-
            Device model (web via Sec-CH-UA-Model, native from the app), when
            recorded.
        deviceBrand:
          type: string
          description: Device brand (native only), when recorded.
        deviceOwnerAuth:
          type: string
          description: >-
            Screen-lock / device-owner authentication class (native only), when
            recorded.
        playServicesVersion:
          type: string
          description: Google Play Services version (Android only), when recorded.
    observeSubFlowSearchErrorOccurrence:
      type: object
      required:
        - flavourID
        - createdMs
      properties:
        flavourID:
          type: string
          description: Raw-signature flavour of the occurrence (format `erf-<number>`).
        durationMs:
          type: integer
          format: int64
          description: Subflow-start-to-error latency in milliseconds, when recorded.
        createdMs:
          type: integer
          format: int64
          description: Occurrence time in milliseconds since epoch.
    observeSubFlowSearchCustomTag:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
        value:
          type: string
    observeSubFlowData:
      oneOf:
        - $ref: '#/components/schemas/observeSubFlowPasskeyLoginData'
        - $ref: '#/components/schemas/observeSubFlowPasswordLoginData'
        - $ref: '#/components/schemas/observeSubFlowSocialLoginData'
        - $ref: '#/components/schemas/observeSubFlowProvideIdentifierData'
        - $ref: '#/components/schemas/observeSubFlowDecisionData'
        - $ref: '#/components/schemas/observeSubFlowPasskeyEnrollmentData'
        - $ref: '#/components/schemas/observeSubFlowEmailOTPData'
        - $ref: '#/components/schemas/observeSubFlowEmailLinkData'
        - $ref: '#/components/schemas/observeSubFlowSetPasswordData'
        - $ref: '#/components/schemas/observeSubFlowProvideDataData'
        - $ref: '#/components/schemas/observeSubFlowResetData'
        - $ref: '#/components/schemas/observeSubFlowPasskeyDeletionData'
        - $ref: '#/components/schemas/observeSubFlowSmsOTPData'
        - $ref: '#/components/schemas/observeSubFlowTotpData'
        - $ref: '#/components/schemas/observeSubFlowAppConfirmationData'
        - $ref: '#/components/schemas/observeSubFlowSystemCredentialData'
        - $ref: '#/components/schemas/observeSubFlowKeySigningData'
        - $ref: '#/components/schemas/observeSubFlowKeyRegistrationData'
        - $ref: '#/components/schemas/observeSubFlowTrustedDeviceCheckData'
        - $ref: '#/components/schemas/observeSubFlowTrustedDeviceEnrollmentData'
      discriminator:
        propertyName: type
        mapping:
          passkeyLogin:
            $ref: '#/components/schemas/observeSubFlowPasskeyLoginData'
          passwordLogin:
            $ref: '#/components/schemas/observeSubFlowPasswordLoginData'
          socialLogin:
            $ref: '#/components/schemas/observeSubFlowSocialLoginData'
          provideIdentifier:
            $ref: '#/components/schemas/observeSubFlowProvideIdentifierData'
          decision:
            $ref: '#/components/schemas/observeSubFlowDecisionData'
          passkeyEnrollment:
            $ref: '#/components/schemas/observeSubFlowPasskeyEnrollmentData'
          emailOTP:
            $ref: '#/components/schemas/observeSubFlowEmailOTPData'
          emailLink:
            $ref: '#/components/schemas/observeSubFlowEmailLinkData'
          setPassword:
            $ref: '#/components/schemas/observeSubFlowSetPasswordData'
          provideData:
            $ref: '#/components/schemas/observeSubFlowProvideDataData'
          reset:
            $ref: '#/components/schemas/observeSubFlowResetData'
          passkeyDeletion:
            $ref: '#/components/schemas/observeSubFlowPasskeyDeletionData'
          smsOTP:
            $ref: '#/components/schemas/observeSubFlowSmsOTPData'
          totp:
            $ref: '#/components/schemas/observeSubFlowTotpData'
          appConfirmation:
            $ref: '#/components/schemas/observeSubFlowAppConfirmationData'
          systemCredential:
            $ref: '#/components/schemas/observeSubFlowSystemCredentialData'
          keySigning:
            $ref: '#/components/schemas/observeSubFlowKeySigningData'
          keyRegistration:
            $ref: '#/components/schemas/observeSubFlowKeyRegistrationData'
          trustedDeviceCheck:
            $ref: '#/components/schemas/observeSubFlowTrustedDeviceCheckData'
          trustedDeviceEnrollment:
            $ref: '#/components/schemas/observeSubFlowTrustedDeviceEnrollmentData'
    observeClientEnvType:
      type: string
      description: Client environment type.
      enum:
        - web
        - app
    observeSubFlowPasskeyLoginData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - passkeyLogin
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Passkey login spec type, when available.
        configVariantID:
          type: string
          description: Challenge/config variant ID (format `chv-<number>`), when available.
        cdaLikelihood:
          type: string
          enum:
            - 'no'
            - 25-50
            - 50-75
            - 75-95
            - 95-plus
          description: >-
            Bucketed likelihood that this login could only proceed via
            cross-device authentication, when a statement could be made (see the
            CDA-likelihood classification). Absent for discoverable/CUI logins
            and unknown environments.
    observeSubFlowPasswordLoginData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - passwordLogin
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Password login spec type, when available.
        overlayAutofillCount:
          type: integer
          description: Number of autofill patterns interpreted for the subflow.
        overlayUnclearCount:
          type: integer
          description: Number of unclear overlay patterns interpreted for the subflow.
        autofillType:
          type: string
          description: Derived autofill type, when available.
    observeSubFlowSocialLoginData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - socialLogin
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Social login spec type, when available.
        providerName:
          type: string
          description: Social provider name, when available.
    observeSubFlowProvideIdentifierData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - provideIdentifier
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Provide-identifier spec type, when available.
        configVariantID:
          type: string
          description: Challenge/config variant ID (format `chv-<number>`), when available.
        overlayCUICount:
          type: integer
          description: Number of CUI overlay patterns interpreted for the subflow.
        overlayAutofillCount:
          type: integer
          description: Number of autofill patterns interpreted for the subflow.
        overlayUnclearCount:
          type: integer
          description: Number of unclear overlay patterns interpreted for the subflow.
        cuiType:
          type: string
          description: Derived CUI type, when available.
        autofillType:
          type: string
          description: Derived autofill type, when available.
    observeSubFlowDecisionData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - decision
          description: Subflow detail type discriminator.
        decisionID:
          type: string
          description: Decision ID for decision subflows (format `dec-<number>`).
        inputVariantID:
          type: string
          description: >-
            Decision input variant ID for decision subflows (format
            `dva-<number>`).
        outcomeVariantID:
          type: string
          description: >-
            Decision outcome variant ID for decision subflows (format
            `dva-<number>`), when available.
        occurrence:
          type: integer
          description: 0-based occurrence of this decision within the flow, when available.
        firstStartMs:
          type: integer
          format: int64
          description: >-
            Original first start time of the decision in milliseconds since
            epoch.
    observeSubFlowPasskeyEnrollmentData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - passkeyEnrollment
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Passkey enrollment spec type, when available.
        configVariantID:
          type: string
          description: Challenge/config variant ID (format `chv-<number>`), when available.
    observeSubFlowEmailOTPData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - emailOTP
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Email OTP spec type, when available.
        emailDomainID:
          type: string
          description: >-
            Project-scoped email domain reference (`emd-<number>`), omitted when
            not reported.
        resentCount:
          type: integer
          description: Number of OTP resends, when available.
    observeSubFlowEmailLinkData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - emailLink
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Email link spec type, when available.
        additionalClientEnvID:
          type: string
          description: >-
            Additional completion-side client environment ID (format
            `tce-<number>`), when available.
    observeSubFlowSetPasswordData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - setPassword
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Set-password spec type, when available.
        overlayAutofillCount:
          type: integer
          description: Number of autofill patterns interpreted for the subflow.
        overlayUnclearCount:
          type: integer
          description: Number of unclear overlay patterns interpreted for the subflow.
        autofillType:
          type: string
          description: Derived autofill type, when available.
    observeSubFlowProvideDataData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - provideData
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: Provide-data spec type, when available.
        fieldName:
          type: string
          description: >-
            Name of the collected data field as reported by the SDK (sanitized),
            when available.
    observeSubFlowResetData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - reset
          description: Subflow detail type discriminator.
    observeSubFlowPasskeyDeletionData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - passkeyDeletion
          description: Subflow detail type discriminator.
    observeSubFlowSmsOTPData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - smsOTP
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: SMS OTP spec type, when available.
        resentCount:
          type: integer
          description: Number of OTP resends, when available.
    observeSubFlowTotpData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - totp
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: TOTP spec type, when available.
    observeSubFlowAppConfirmationData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - appConfirmation
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: App confirmation spec type (e.g. qr-code), when available.
        retryCount:
          type: integer
          description: Number of retry steps within the confirmation, when available.
        ceremonyErrorCode:
          type: string
          description: >-
            Terminal ceremony error code (declined/expired) when the
            confirmation failed; empty otherwise.
    observeSubFlowSystemCredentialData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - systemCredential
          description: Subflow detail type discriminator.
        specType:
          type: string
          description: >-
            Requested credential option set (e.g. passkey-password, with the
            -auto suffix for sheets fired without a user gesture), when
            available.
        outcome:
          type: string
          description: >-
            System-credential outcome (complete-passkey / complete-password /
            complete-federated / fill-password / incomplete), when available.
    observeSubFlowKeySigningData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - keySigning
          description: >-
            Direct key signing. Completion includes preparing a usable signed
            artifact.
    observeSubFlowKeyRegistrationData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - keyRegistration
          description: >-
            Key registration. Completion means the authority is accepted and
            usable.
    observeSubFlowTrustedDeviceCheckData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - trustedDeviceCheck
        specType:
          type: string
          description: Reported mechanism (key or token).
        outcome:
          type: string
          description: Classified trust check or enrollment result.
        purpose:
          type: string
          description: Reported check purpose (additional-verification or mfa-exemption).
        storage:
          type: string
        trustName:
          type: string
        bindingReference:
          type: string
          description: Optional pseudonymous reference to an identified binding.
    observeSubFlowTrustedDeviceEnrollmentData:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - trustedDeviceEnrollment
        specType:
          type: string
          description: Reported mechanism (key or token).
        outcome:
          type: string
          description: Classified trust check or enrollment result.
        purpose:
          type: string
          description: Reported check purpose (additional-verification or mfa-exemption).
        storage:
          type: string
        trustName:
          type: string
        bindingReference:
          type: string
          description: Optional pseudonymous reference to an identified binding.
  responses:
    error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorRspV2'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Use an Observe API key from the management console. The key selects the
        project and must grant the permission listed on the operation. Keep this
        key on your server.

````