Hypertune Analytics / Events API

Real-time analytics and event logging. SDKs collect flag evaluations, experiment exposures, and analytics events (logged via event-trigger flags that evaluate a "Log event" expression) and flush them to Hypertune Edge in the background; flushLogs can be awaited in serverless environments to guarantee delivery.

OpenAPI Specification

hypertune-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Hypertune Edge API
  description: >-
    HTTP surface of Hypertune Edge, the Cloudflare-CDN-hosted edge service that
    delivers feature-flag logic and serves the GraphQL evaluation API for the
    Hypertune feature-flag, experimentation, analytics, and app-configuration
    platform. Hypertune is primarily consumed through its type-safe TypeScript
    SDK (which fetches flag logic once at initialization and then evaluates flags
    locally, synchronously, in memory) and through this token-authenticated
    GraphQL Edge endpoint for no-SDK access. Flag logic is authored in Hyperlang
    and projected as a per-project GraphQL schema, so concrete query fields and
    arguments differ per project. Analytics events and exposures are flushed back
    to Hypertune Edge by the SDK in the background. This document models the
    documented edge transport; it does not fabricate undocumented management
    endpoints.
  termsOfService: https://www.hypertune.com/terms
  contact:
    name: Hypertune
    url: https://www.hypertune.com
  version: '1.0'
servers:
  - url: https://edge.hypertune.com
    description: Hypertune Edge (Cloudflare CDN)
paths:
  /graphql:
    get:
      operationId: evaluateFlags
      tags:
        - GraphQL
      summary: Evaluate flags, experiments, and config via the GraphQL Edge API.
      description: >-
        Send a GraphQL query to Hypertune Edge to evaluate your feature flags,
        experiments, and app configuration. The query must supply all field
        arguments (the targeting context) so flag logic can be fully reduced into
        a concrete JSON result. The project token is passed as a URL-encoded
        query parameter; the GraphQL query and variables are passed URL-encoded
        on the same GET request. Responses are served from the edge, typically in
        under 25ms.
      parameters:
        - name: token
          in: query
          required: true
          description: URL-encoded Hypertune project token.
          schema:
            type: string
        - name: query
          in: query
          required: true
          description: URL-encoded GraphQL query. Must contain all field arguments.
          schema:
            type: string
        - name: variables
          in: query
          required: false
          description: URL-encoded JSON string of GraphQL variables.
          schema:
            type: string
        - name: operationName
          in: query
          required: false
          description: Name of the operation to execute when the query defines several.
          schema:
            type: string
      responses:
        '200':
          description: GraphQL response envelope with the reduced flag/config result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'
        '400':
          description: Malformed query or missing required field arguments.
        '401':
          description: Missing or invalid project token.
    post:
      operationId: evaluateFlagsPost
      tags:
        - GraphQL
      summary: Evaluate flags via a GraphQL POST request.
      description: >-
        Standard GraphQL POST form of the evaluation endpoint. The project token
        is supplied as a URL query parameter and the GraphQL query and variables
        are sent as a JSON request body. As with the GET form, the query must
        supply all field arguments so flag logic is fully reduced to JSON.
      parameters:
        - name: token
          in: query
          required: true
          description: URL-encoded Hypertune project token.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphQLRequest'
      responses:
        '200':
          description: GraphQL response envelope with the reduced flag/config result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'
        '400':
          description: Malformed query or missing required field arguments.
        '401':
          description: Missing or invalid project token.
components:
  schemas:
    GraphQLRequest:
      type: object
      required:
        - query
      properties:
        query:
          type: string
          description: GraphQL query string. Must contain all field arguments.
        variables:
          type: object
          additionalProperties: true
          description: Optional GraphQL variables.
        operationName:
          type: string
          description: Optional operation name.
    GraphQLResponse:
      type: object
      properties:
        data:
          type: object
          additionalProperties: true
          description: >-
            The reduced flag/config result, rooted at the project's `root` field.
            Concrete fields are generated per project from the Hyperlang flag tree.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLError'
    GraphQLError:
      type: object
      properties:
        message:
          type: string
        path:
          type: array
          items:
            type: string
        locations:
          type: array
          items:
            type: object
            properties:
              line:
                type: integer
              column:
                type: integer
  securitySchemes:
    projectToken:
      type: apiKey
      in: query
      name: token
      description: URL-encoded Hypertune project token passed as a query parameter.
security:
  - projectToken: []