gRPC-Web Proxy API

OpenAPI specification for gRPC-Web proxy endpoints covering health checking, server reflection, and channelz introspection services exposed over HTTP for browser-based and REST clients.

OpenAPI Specification

openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: gRPC-Web Proxy API
  description: >-
    OpenAPI specification for gRPC-Web proxy endpoints. gRPC-Web is a JavaScript
    client library that enables browser-based applications to communicate with
    gRPC services through an intermediary proxy. The proxy translates HTTP/1.1
    and HTTP/2 requests into native gRPC calls, exposing health checking,
    reflection, and channelz services over RESTful HTTP endpoints.
  version: 1.0.0
  contact:
    name: gRPC Authors
    url: https://grpc.io/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
externalDocs:
  description: gRPC Documentation
  url: https://grpc.io/docs/
servers:
  - url: https://localhost:8080
    description: Local gRPC-Web proxy
paths:
  /grpc.health.v1.Health/Check:
    post:
      operationId: healthCheck
      summary: gRPC Check service health
      description: >-
        Performs a health check against a specific gRPC service or the
        overall server. Implements the gRPC Health Checking Protocol
        as defined in the grpc.health.v1 package.
      tags:
        - Health Checking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HealthCheckRequest'
      responses:
        '200':
          description: Health check response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckResponse'
        '404':
          description: Service not found
        '503':
          description: Service unhealthy
  /grpc.health.v1.Health/Watch:
    post:
      operationId: healthWatch
      summary: gRPC Watch service health changes
      description: >-
        Opens a server-streaming connection that sends health status
        updates whenever the health of the requested service changes.
      tags:
        - Health Checking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HealthCheckRequest'
      responses:
        '200':
          description: Stream of health check responses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckResponse'
  /grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo:
    post:
      operationId: serverReflectionInfo
      summary: gRPC Query server reflection information
      description: >-
        Bidirectional streaming endpoint for querying server reflection
        data. Allows clients to discover available services, methods,
        and message types at runtime without prior knowledge of the
        service definitions.
      tags:
        - Reflection
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServerReflectionRequest'
      responses:
        '200':
          description: Reflection response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerReflectionResponse'
  /grpc.channelz.v1.Channelz/GetTopChannels:
    post:
      operationId: getTopChannels
      summary: gRPC Get top-level channels
      description: >-
        Returns information about top-level channels including their
        connectivity state, call statistics, and subchannel references.
        Part of the Channelz service for runtime introspection.
      tags:
        - Channelz
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetTopChannelsRequest'
      responses:
        '200':
          description: Top channels response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTopChannelsResponse'
  /grpc.channelz.v1.Channelz/GetServers:
    post:
      operationId: getServers
      summary: gRPC Get server information
      description: >-
        Returns information about all servers including their listen
        addresses, call counts, and last call timestamps.
      tags:
        - Channelz
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetServersRequest'
      responses:
        '200':
          description: Servers response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetServersResponse'
  /grpc.channelz.v1.Channelz/GetChannel:
    post:
      operationId: getChannel
      summary: gRPC Get channel details
      description: >-
        Returns detailed information about a specific channel
        identified by its channel ID.
      tags:
        - Channelz
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetChannelRequest'
      responses:
        '200':
          description: Channel details response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetChannelResponse'
  /grpc.channelz.v1.Channelz/GetServerSockets:
    post:
      operationId: getServerSockets
      summary: gRPC Get server socket information
      description: >-
        Returns information about sockets associated with a specific
        server, including connection details and data transfer statistics.
      tags:
        - Channelz
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetServerSocketsRequest'
      responses:
        '200':
          description: Server sockets response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetServerSocketsResponse'
components:
  schemas:
    HealthCheckRequest:
      type: object
      properties:
        service:
          type: string
          description: >-
            The fully-qualified service name to check. An empty string
            or omitted value checks the overall server health.
    HealthCheckResponse:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - UNKNOWN
            - SERVING
            - NOT_SERVING
            - SERVICE_UNKNOWN
          description: The health status of the requested service.
    ServerReflectionRequest:
      type: object
      properties:
        host:
          type: string
          description: The host name for which reflection info is requested.
        list_services:
          type: string
          description: >-
            Set to empty string to list all services. When set, returns
            the list of all registered services.
        file_by_filename:
          type: string
          description: >-
            Find a proto file by the file name.
        file_containing_symbol:
          type: string
          description: >-
            Find the proto file that declares the given fully-qualified symbol name.
        file_containing_extension:
          type: object
          properties:
            containing_type:
              type: string
            extension_number:
              type: integer
          description: Find the proto file which defines an extension of the given type and number.
        all_extension_numbers_of_type:
          type: string
          description: >-
            Find all extension numbers for a given type.
    ServerReflectionResponse:
      type: object
      properties:
        valid_host:
          type: string
        original_request:
          $ref: '#/components/schemas/ServerReflectionRequest'
        list_services_response:
          type: object
          properties:
            service:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
        error_response:
          type: object
          properties:
            error_code:
              type: integer
            error_message:
              type: string
    GetTopChannelsRequest:
      type: object
      properties:
        start_channel_id:
          type: string
          format: int64
          description: >-
            The channel ID from which to start listing. Set to 0 to
            list from the beginning.
        max_results:
          type: string
          format: int64
          description: Maximum number of results to return.
    GetTopChannelsResponse:
      type: object
      properties:
        channel:
          type: array
          items:
            $ref: '#/components/schemas/Channel'
        end:
          type: boolean
          description: Whether the server has returned all available channels.
    GetServersRequest:
      type: object
      properties:
        start_server_id:
          type: string
          format: int64
          description: The server ID from which to start listing.
        max_results:
          type: string
          format: int64
    GetServersResponse:
      type: object
      properties:
        server:
          type: array
          items:
            $ref: '#/components/schemas/Server'
        end:
          type: boolean
    GetChannelRequest:
      type: object
      required:
        - channel_id
      properties:
        channel_id:
          type: string
          format: int64
    GetChannelResponse:
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/Channel'
    GetServerSocketsRequest:
      type: object
      required:
        - server_id
      properties:
        server_id:
          type: string
          format: int64
        start_socket_id:
          type: string
          format: int64
        max_results:
          type: string
          format: int64
    GetServerSocketsResponse:
      type: object
      properties:
        socket_ref:
          type: array
          items:
            $ref: '#/components/schemas/SocketRef'
        end:
          type: boolean
    Channel:
      type: object
      properties:
        ref:
          $ref: '#/components/schemas/ChannelRef'
        data:
          $ref: '#/components/schemas/ChannelData'
        channel_ref:
          type: array
          items:
            $ref: '#/components/schemas/ChannelRef'
        subchannel_ref:
          type: array
          items:
            $ref: '#/components/schemas/SubchannelRef'
        socket_ref:
          type: array
          items:
            $ref: '#/components/schemas/SocketRef'
    ChannelRef:
      type: object
      properties:
        channel_id:
          type: string
          format: int64
        name:
          type: string
    SubchannelRef:
      type: object
      properties:
        subchannel_id:
          type: string
          format: int64
        name:
          type: string
    SocketRef:
      type: object
      properties:
        socket_id:
          type: string
          format: int64
        name:
          type: string
    ChannelData:
      type: object
      properties:
        state:
          type: object
          properties:
            state:
              type: string
              enum:
                - UNKNOWN
                - IDLE
                - CONNECTING
                - READY
                - TRANSIENT_FAILURE
                - SHUTDOWN
        target:
          type: string
          description: The target URI this channel is connecting to.
        trace:
          type: object
          properties:
            num_events_logged:
              type: string
              format: int64
            events:
              type: array
              items:
                type: object
                properties:
                  description:
                    type: string
                  severity:
                    type: string
                    enum:
                      - CT_UNKNOWN
                      - CT_INFO
                      - CT_WARNING
                      - CT_ERROR
                  timestamp:
                    type: string
                    format: date-time
        calls_started:
          type: string
          format: int64
        calls_succeeded:
          type: string
          format: int64
        calls_failed:
          type: string
          format: int64
        last_call_started_timestamp:
          type: string
          format: date-time
    Server:
      type: object
      properties:
        ref:
          type: object
          properties:
            server_id:
              type: string
              format: int64
            name:
              type: string
        data:
          type: object
          properties:
            calls_started:
              type: string
              format: int64
            calls_succeeded:
              type: string
              format: int64
            calls_failed:
              type: string
              format: int64
            last_call_started_timestamp:
              type: string
              format: date-time
            trace:
              type: object
              properties:
                num_events_logged:
                  type: string
                  format: int64
        listen_socket:
          type: array
          items:
            $ref: '#/components/schemas/SocketRef'
tags:
  - name: Channelz
    description: >-
      Channelz service for runtime introspection of gRPC channels,
      subchannels, servers, and sockets.
  - name: Health Checking
    description: >-
      gRPC Health Checking Protocol endpoints for monitoring service
      availability and readiness.
  - name: Reflection
    description: >-
      Server Reflection service for runtime discovery of available
      gRPC services and their definitions.