Gitpod gitpod.v1.OnaIntelligenceService API

OnaIntelligenceService manages organization-level LLM configurations for Ona Intelligence. This service is restricted to Ona employees with the OnaIntelligenceAdmin role.

OpenAPI Specification

gitpod-gitpod-v1-onaintelligenceservice-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: gitpod.v1 gitpod.v1.AccountService gitpod.v1.OnaIntelligenceService API
  version: v1.0.0
  description: "OnaIntelligenceService manages organization-level LLM configurations for Ona Intelligence.\n This service is restricted to Ona employees with the OnaIntelligenceAdmin role."
servers:
- url: https://api.gitpod.io
  description: Gitpod API
tags:
- description: "OnaIntelligenceService manages organization-level LLM configurations for Ona Intelligence.\n This service is restricted to Ona employees with the OnaIntelligenceAdmin role."
  name: gitpod.v1.OnaIntelligenceService
  x-displayName: gitpod.v1.OnaIntelligenceService
paths:
  /gitpod.v1.OnaIntelligenceService/CreateOrganizationLLMConfiguration:
    servers: []
    post:
      description: "Creates or updates the Anthropic API key configuration for an organization.\n\n Use this method to:\n - Configure Anthropic API access for an organization\n - Rotate existing API keys\n\n The API key is encrypted before storage using organization-scoped encryption."
      operationId: gitpod.v1.OnaIntelligenceService.CreateOrganizationLLMConfiguration
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gitpod.v1.CreateOrganizationLLMConfigurationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.CreateOrganizationLLMConfigurationResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: CreateOrganizationLLMConfiguration
      tags:
      - gitpod.v1.OnaIntelligenceService
  /gitpod.v1.OnaIntelligenceService/DeleteOrganizationLLMConfiguration:
    servers: []
    post:
      description: "Deletes the organization's LLM API key configuration.\n\n Use this method to:\n - Remove API key access for an organization\n - Clean up unused configurations"
      operationId: gitpod.v1.OnaIntelligenceService.DeleteOrganizationLLMConfiguration
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gitpod.v1.DeleteOrganizationLLMConfigurationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.DeleteOrganizationLLMConfigurationResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: DeleteOrganizationLLMConfiguration
      tags:
      - gitpod.v1.OnaIntelligenceService
  /gitpod.v1.OnaIntelligenceService/GetOrganizationLLMConfiguration:
    servers: []
    post:
      description: "Gets metadata about the organization's LLM configuration.\n\n Use this method to:\n - Check if an organization has an API key configured\n - View when the key was last updated\n\n For security reasons, this method does not return the actual API key,\n only metadata including the last 4 characters for identification."
      operationId: gitpod.v1.OnaIntelligenceService.GetOrganizationLLMConfiguration
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gitpod.v1.GetOrganizationLLMConfigurationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.GetOrganizationLLMConfigurationResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: GetOrganizationLLMConfiguration
      tags:
      - gitpod.v1.OnaIntelligenceService
  /gitpod.v1.OnaIntelligenceService/GetOrganizationLLMUsage:
    servers: []
    post:
      description: "Gets credit usage summary for the caller's organization.\n\n The organization is inferred from the caller's identity.\n\n Use this method to:\n - View Ona credit consumption for your organization\n - Track usage over time\n - Display usage data to organization admins\n\n Returns pre-aggregated summaries for week, month, and year."
      operationId: gitpod.v1.OnaIntelligenceService.GetOrganizationLLMUsage
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gitpod.v1.GetOrganizationLLMUsageRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.GetOrganizationLLMUsageResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: GetOrganizationLLMUsage
      tags:
      - gitpod.v1.OnaIntelligenceService
  /gitpod.v1.OnaIntelligenceService/ListOrganizationLLMConfigurations:
    servers: []
    post:
      description: "Lists all organization LLM configurations.\n\n Use this method to:\n - View all organizations with LLM configurations\n - Audit API key usage"
      operationId: gitpod.v1.OnaIntelligenceService.ListOrganizationLLMConfigurations
      parameters:
      - in: query
        name: pageSize
        schema:
          default: 25
          maximum: 100
          minimum: 0
          type: integer
      - in: query
        name: token
        schema:
          default: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gitpod.v1.ListOrganizationLLMConfigurationsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.ListOrganizationLLMConfigurationsResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: ListOrganizationLLMConfigurations
      tags:
      - gitpod.v1.OnaIntelligenceService
  /gitpod.v1.OnaIntelligenceService/UpdateOrganizationLLMConfiguration:
    servers: []
    post:
      description: "Updates the Anthropic API key configuration for an organization.\n\n Use this method to:\n - Update existing API key\n - Modify configuration settings\n\n Only provided fields will be updated (partial update)."
      operationId: gitpod.v1.OnaIntelligenceService.UpdateOrganizationLLMConfiguration
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gitpod.v1.UpdateOrganizationLLMConfigurationRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.UpdateOrganizationLLMConfigurationResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: UpdateOrganizationLLMConfiguration
      tags:
      - gitpod.v1.OnaIntelligenceService
components:
  schemas:
    connect.error:
      additionalProperties: true
      description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation'
      properties:
        code:
          description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
          enum:
          - canceled
          - unknown
          - invalid_argument
          - deadline_exceeded
          - not_found
          - already_exists
          - permission_denied
          - resource_exhausted
          - failed_precondition
          - aborted
          - out_of_range
          - unimplemented
          - internal
          - unavailable
          - data_loss
          - unauthenticated
          example:
          - not_found
          type: string
        message:
          description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
          type: string
      title: Connect Error
      type: object
    gitpod.v1.GetOrganizationLLMUsageRequest:
      additionalProperties: false
      description: "The organization is inferred from the caller's identity.\n No parameters required."
      properties:
        empty:
          type: boolean
      title: GetOrganizationLLMUsageRequest
      type: object
    gitpod.v1.DeleteOrganizationLLMConfigurationResponse:
      additionalProperties: false
      title: DeleteOrganizationLLMConfigurationResponse
      type: object
    gitpod.v1.LLMUsageSummary:
      additionalProperties: false
      description: LLMUsageSummary contains aggregated LLM usage data for a specific time period
      properties:
        creditsConsumed:
          description: credits_consumed is the total Ona credits consumed in this period
          format: double
          title: credits_consumed
          type: number
        dailyBreakdown:
          description: daily_breakdown contains per-day usage data for charting
          items:
            $ref: '#/components/schemas/gitpod.v1.DailyUsage'
          title: daily_breakdown
          type: array
      title: LLMUsageSummary
      type: object
    gitpod.v1.DeleteOrganizationLLMConfigurationRequest:
      additionalProperties: false
      properties:
        organizationId:
          description: organization_id is the ID of the organization to delete configuration for
          format: uuid
          title: organization_id
          type: string
      title: DeleteOrganizationLLMConfigurationRequest
      type: object
    gitpod.v1.ListOrganizationLLMConfigurationsResponse:
      additionalProperties: false
      properties:
        configurations:
          description: configurations is the list of organization LLM configurations
          items:
            $ref: '#/components/schemas/gitpod.v1.OrganizationLLMConfiguration'
          title: configurations
          type: array
      title: ListOrganizationLLMConfigurationsResponse
      type: object
    gitpod.v1.CreateOrganizationLLMConfigurationResponse:
      additionalProperties: false
      properties:
        configuration:
          $ref: '#/components/schemas/gitpod.v1.OrganizationLLMConfiguration'
          description: configuration contains metadata about the stored configuration
          title: configuration
      title: CreateOrganizationLLMConfigurationResponse
      type: object
    gitpod.v1.GetOrganizationLLMConfigurationResponse:
      additionalProperties: false
      properties:
        configuration:
          $ref: '#/components/schemas/gitpod.v1.OrganizationLLMConfiguration'
          description: configuration contains metadata about the stored configuration
          title: configuration
      title: GetOrganizationLLMConfigurationResponse
      type: object
    gitpod.v1.OrganizationLLMConfiguration:
      additionalProperties: false
      description: "OrganizationLLMConfiguration contains metadata about an organization's LLM configuration.\n For security reasons, the actual API key is never returned."
      properties:
        createdAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          description: created_at is when the configuration was first created
          title: created_at
        organizationId:
          description: organization_id is the ID of the organization
          title: organization_id
          type: string
        provider:
          description: provider is the LLM provider (e.g., "anthropic")
          title: provider
          type: string
        updatedAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          description: updated_at is when the configuration was last updated
          title: updated_at
      title: OrganizationLLMConfiguration
      type: object
    gitpod.v1.CreateOrganizationLLMConfigurationRequest:
      additionalProperties: false
      properties:
        apiKey:
          description: api_key is the plaintext Anthropic API key to encrypt and store
          maxLength: 512
          minLength: 1
          title: api_key
          type: string
        organizationId:
          description: organization_id is the ID of the organization to configure
          format: uuid
          title: organization_id
          type: string
      title: CreateOrganizationLLMConfigurationRequest
      type: object
    gitpod.v1.ListOrganizationLLMConfigurationsRequest:
      additionalProperties: false
      properties:
        empty:
          type: boolean
      title: ListOrganizationLLMConfigurationsRequest
      type: object
    google.protobuf.Timestamp:
      description: "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(&tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(&ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n     Timestamp timestamp;\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n     long millis = System.currentTimeMillis();\n\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n     Instant now = Instant.now();\n\n     Timestamp timestamp =\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n             .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n     timestamp = Timestamp()\n     timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format."
      format: date-time
      type: string
    gitpod.v1.DailyUsage:
      additionalProperties: false
      description: DailyUsage contains usage data for a single day
      properties:
        creditsConsumed:
          description: credits_consumed is the number of Ona credits consumed on this day
          format: double
          title: credits_consumed
          type: number
        date:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          description: date is the start of the day (midnight UTC)
          title: date
      title: DailyUsage
      type: object
    gitpod.v1.UpdateOrganizationLLMConfigurationResponse:
      additionalProperties: false
      properties:
        configuration:
          $ref: '#/components/schemas/gitpod.v1.OrganizationLLMConfiguration'
          description: configuration contains metadata about the stored configuration
          title: configuration
      title: UpdateOrganizationLLMConfigurationResponse
      type: object
    gitpod.v1.GetOrganizationLLMUsageResponse:
      additionalProperties: false
      properties:
        lastCalculatedAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          description: "last_calculated_at is when this usage data was last fetched and calculated\n Helps users understand data freshness (typically 5-10 minutes behind real-time)"
          title: last_calculated_at
        thisMonth:
          $ref: '#/components/schemas/gitpod.v1.LLMUsageSummary'
          description: this_month contains usage summary for the last 30 days
          title: this_month
        thisWeek:
          $ref: '#/components/schemas/gitpod.v1.LLMUsageSummary'
          description: this_week contains usage summary for the last 7 days
          title: this_week
        thisYear:
          $ref: '#/components/schemas/gitpod.v1.LLMUsageSummary'
          description: this_year contains usage summary from Ona Intelligence activation to now (max 365 days)
          title: this_year
        usageDataFrom:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          description: "usage_data_from is when usage tracking started for this organization\n Typically when Ona Intelligence was enabled (organization_llm_integration.created_at)"
          title: usage_data_from
      title: GetOrganizationLLMUsageResponse
      type: object
    gitpod.v1.GetOrganizationLLMConfigurationRequest:
      additionalProperties: false
      properties:
        organizationId:
          description: organization_id is the ID of the organization to query
          format: uuid
          title: organization_id
          type: string
      title: GetOrganizationLLMConfigurationRequest
      type: object
    gitpod.v1.UpdateOrganizationLLMConfigurationRequest:
      additionalProperties: false
      properties:
        apiKey:
          description: api_key is the plaintext Anthropic API key to encrypt and store (optional)
          maxLength: 512
          minLength: 1
          nullable: true
          title: api_key
          type: string
        organizationId:
          description: organization_id is the ID of the organization to update
          format: uuid
          title: organization_id
          type: string
      title: UpdateOrganizationLLMConfigurationRequest
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http
x-tagGroups:
- name: gitpod.v1
  tags:
  - gitpod.v1.AccountService
  - gitpod.v1.AgentService
  - gitpod.v1.AgentSecurityService
  - gitpod.v1.BillingService
  - gitpod.v1.EditorService
  - gitpod.v1.EnvironmentAutomationService
  - gitpod.v1.EnvironmentService
  - gitpod.v1.ErrorsService
  - gitpod.v1.EventService
  - gitpod.v1.GatewayService
  - gitpod.v1.GroupService
  - gitpod.v1.IdentityService
  - gitpod.v1.InsightsService
  - gitpod.v1.IntegrationService
  - gitpod.v1.NotificationService
  - gitpod.v1.OnaIntelligenceService
  - gitpod.v1.OrganizationService
  - gitpod.v1.PrebuildService
  - gitpod.v1.ProjectService
  - gitpod.v1.RunnerConfigurationService
  - gitpod.v1.RunnerInteractionService
  - gitpod.v1.RunnerManagerService
  - gitpod.v1.RunnerService
  - gitpod.v1.SecretService
  - gitpod.v1.ServiceAccountService
  - gitpod.v1.SessionService
  - gitpod.v1.TeamService
  - gitpod.v1.UsageService
  - gitpod.v1.UserService
  - gitpod.v1.WebhookService
  - gitpod.v1.WorkflowService