Gitpod gitpod.v1.ServiceAccountService API

The gitpod.v1.ServiceAccountService API from Gitpod — 10 operation(s) for gitpod.v1.serviceaccountservice.

Operations 10

POST /gitpod.v1.ServiceAccountService/CreateServiceAccount CreateServiceAccount #
POST /gitpod.v1.ServiceAccountService/CreateServiceAccountAccessToken CreateServiceAccountAccessToken #
POST /gitpod.v1.ServiceAccountService/CreateServiceAccountToken CreateServiceAccountToken #
POST /gitpod.v1.ServiceAccountService/DeleteServiceAccount DeleteServiceAccount #
POST /gitpod.v1.ServiceAccountService/DeleteServiceAccountToken DeleteServiceAccountToken #
POST /gitpod.v1.ServiceAccountService/GetServiceAccount GetServiceAccount #
POST /gitpod.v1.ServiceAccountService/GetServiceAccountToken GetServiceAccountToken #
POST /gitpod.v1.ServiceAccountService/ListServiceAccountTokens ListServiceAccountTokens #
POST /gitpod.v1.ServiceAccountService/ListServiceAccounts ListServiceAccounts #
POST /gitpod.v1.ServiceAccountService/UpdateServiceAccount UpdateServiceAccount #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gitpod-gitpod-v1-serviceaccountservice-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gitpod-gitpod-v1-serviceaccountservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: gitpod.v1 gitpod.v1.AccountService Gitpod.v1.Service Account Service API
  version: v1.0.0
servers:
- url: https://api.gitpod.io
  description: Gitpod API
tags:
- name: gitpod.v1.ServiceAccountService
  x-displayName: gitpod.v1.ServiceAccountService
paths:
  /gitpod.v1.ServiceAccountService/CreateServiceAccount:
    servers: []
    post:
      description: "Creates a new service account in an organization.\n\n Use this method to:\n - Create service accounts for automation\n - Set up CI/CD credentials\n - Configure programmatic access\n\n ### Examples\n\n - Create service account:\n\n   Creates a service account for automation.\n\n   ```yaml\n   name: \"ci-pipeline\"\n   description: \"CI/CD Pipeline\"\n   validUntil: \"2025-12-31T23:59:59Z\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.CreateServiceAccount
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              create_service_account:
                description: Creates a service account for automation.
                value:
                  description: CI/CD Pipeline
                  name: ci-pipeline
                  validUntil: '2025-12-31T23:59:59Z'
            schema:
              $ref: '#/components/schemas/gitpod.v1.CreateServiceAccountRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.CreateServiceAccountResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: CreateServiceAccount
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/CreateServiceAccountAccessToken:
    servers: []
    post:
      description: "Creates a short-lived access token for configuring a service account.\n\n The token expires after 30 minutes and can be used as a Bearer token\n in the Authorization header to perform operations on behalf of the\n service account, such as configuring OAuth.\n\n ### Examples\n\n - Create access token:\n\n   ```yaml\n   serviceAccountId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.CreateServiceAccountAccessToken
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              create_access_token:
                description: 'serviceAccountId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"

                  '
                value:
                  serviceAccountId: d2c94c27-3b76-4a42-b88c-95a85e392c68
            schema:
              $ref: '#/components/schemas/gitpod.v1.CreateServiceAccountAccessTokenRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.CreateServiceAccountAccessTokenResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: CreateServiceAccountAccessToken
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/CreateServiceAccountToken:
    servers: []
    post:
      description: "Creates a long-lived token for a service account.\n\n Use this method to:\n - Create tokens for CI/CD pipelines\n - Set up automation credentials\n - Generate API access tokens\n\n The token is returned only once and cannot be retrieved later.\n Token validity is capped to the service account's expiry.\n\n Requires impersonation: First obtain a short-lived access token via\n CreateServiceAccountAccessToken, then use it to call this method.\n The service account ID is derived from the caller's identity.\n\n ### Examples\n\n - Create token with 90-day validity:\n\n   ```yaml\n   description: \"GitHub Actions\"\n   validFor: \"7776000s\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.CreateServiceAccountToken
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              create_token_with_90_day_validity:
                description: 'description: "GitHub Actions"

                  validFor: "7776000s"

                  '
                value:
                  description: GitHub Actions
                  validFor: 7776000s
            schema:
              $ref: '#/components/schemas/gitpod.v1.CreateServiceAccountTokenRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.CreateServiceAccountTokenResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: CreateServiceAccountToken
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/DeleteServiceAccount:
    servers: []
    post:
      description: "Deletes a service account.\n\n Use this method to:\n - Remove unused service accounts\n - Revoke service account access\n - Clean up expired accounts\n\n ### Examples\n\n - Delete service account:\n\n   Permanently removes a service account.\n\n   ```yaml\n   serviceAccountId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.DeleteServiceAccount
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              delete_service_account:
                description: Permanently removes a service account.
                value:
                  serviceAccountId: d2c94c27-3b76-4a42-b88c-95a85e392c68
            schema:
              $ref: '#/components/schemas/gitpod.v1.DeleteServiceAccountRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.DeleteServiceAccountResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: DeleteServiceAccount
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/DeleteServiceAccountToken:
    servers: []
    post:
      description: "Deletes a service account token.\n\n Use this method to:\n - Revoke token access\n - Remove compromised tokens\n - Rotate credentials\n\n ### Examples\n\n - Delete token:\n\n   ```yaml\n   serviceAccountTokenId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.DeleteServiceAccountToken
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              delete_token:
                description: 'serviceAccountTokenId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"

                  '
                value:
                  serviceAccountTokenId: d2c94c27-3b76-4a42-b88c-95a85e392c68
            schema:
              $ref: '#/components/schemas/gitpod.v1.DeleteServiceAccountTokenRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.DeleteServiceAccountTokenResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: DeleteServiceAccountToken
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/GetServiceAccount:
    servers: []
    post:
      description: "Gets details about a specific service account.\n\n Use this method to:\n - View service account details\n - Check service account status\n - Retrieve service account metadata\n\n ### Examples\n\n - Get service account:\n\n   Retrieves details about a specific service account.\n\n   ```yaml\n   serviceAccountId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.GetServiceAccount
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              get_service_account:
                description: Retrieves details about a specific service account.
                value:
                  serviceAccountId: d2c94c27-3b76-4a42-b88c-95a85e392c68
            schema:
              $ref: '#/components/schemas/gitpod.v1.GetServiceAccountRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.GetServiceAccountResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: GetServiceAccount
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/GetServiceAccountToken:
    servers: []
    post:
      description: "Gets details about a specific service account token.\n\n Use this method to:\n - View token metadata\n - Check token expiration\n - Monitor token usage\n\n ### Examples\n\n - Get token details:\n\n   ```yaml\n   serviceAccountTokenId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.GetServiceAccountToken
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              get_token_details:
                description: 'serviceAccountTokenId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"

                  '
                value:
                  serviceAccountTokenId: d2c94c27-3b76-4a42-b88c-95a85e392c68
            schema:
              $ref: '#/components/schemas/gitpod.v1.GetServiceAccountTokenRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.GetServiceAccountTokenResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: GetServiceAccountToken
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/ListServiceAccountTokens:
    servers: []
    post:
      description: "Lists tokens for a service account.\n\n Use this method to:\n - View all tokens for a service account\n - Audit token usage\n - Identify tokens to revoke\n\n Requires impersonation: First obtain a short-lived access token via\n CreateServiceAccountAccessToken, then use it to call this method.\n The service account ID is derived from the caller's identity.\n\n ### Examples\n\n - List tokens:\n\n   ```yaml\n   pagination:\n     pageSize: 20\n   ```"
      operationId: gitpod.v1.ServiceAccountService.ListServiceAccountTokens
      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:
            examples:
              list_tokens:
                description: "pagination:\n  pageSize: 20\n"
                value:
                  pagination:
                    pageSize: 20
            schema:
              $ref: '#/components/schemas/gitpod.v1.ListServiceAccountTokensRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.ListServiceAccountTokensResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: ListServiceAccountTokens
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/ListServiceAccounts:
    servers: []
    post:
      description: "Lists service accounts in an organization.\n\n Use this method to:\n - View all service accounts\n - Audit service account usage\n - Manage service account lifecycle\n\n ### Examples\n\n - List service accounts:\n\n   Shows all service accounts in an organization.\n\n   ```yaml\n   pagination:\n     pageSize: 20\n   ```"
      operationId: gitpod.v1.ServiceAccountService.ListServiceAccounts
      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:
            examples:
              list_service_accounts:
                description: Shows all service accounts in an organization.
                value:
                  pagination:
                    pageSize: 20
            schema:
              $ref: '#/components/schemas/gitpod.v1.ListServiceAccountsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.ListServiceAccountsResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: ListServiceAccounts
      tags:
      - gitpod.v1.ServiceAccountService
  /gitpod.v1.ServiceAccountService/UpdateServiceAccount:
    servers: []
    post:
      description: "Updates a service account.\n\n Use this method to:\n - Update service account name or description\n\n ### Examples\n\n - Update name and description:\n\n   Updates the service account name and description.\n\n   ```yaml\n   serviceAccountId: \"d2c94c27-3b76-4a42-b88c-95a85e392c68\"\n   name: \"updated-ci-pipeline\"\n   description: \"Updated CI/CD Pipeline\"\n   ```"
      operationId: gitpod.v1.ServiceAccountService.UpdateServiceAccount
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              update_name_and_description:
                description: Updates the service account name and description.
                value:
                  description: Updated CI/CD Pipeline
                  name: updated-ci-pipeline
                  serviceAccountId: d2c94c27-3b76-4a42-b88c-95a85e392c68
            schema:
              $ref: '#/components/schemas/gitpod.v1.UpdateServiceAccountRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gitpod.v1.UpdateServiceAccountResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
          description: Error
      security:
      - bearerAuth: []
      summary: UpdateServiceAccount
      tags:
      - gitpod.v1.ServiceAccountService
components:
  schemas:
    gitpod.v1.Principal:
      enum:
      - PRINCIPAL_UNSPECIFIED
      - PRINCIPAL_ACCOUNT
      - PRINCIPAL_USER
      - PRINCIPAL_RUNNER
      - PRINCIPAL_ENVIRONMENT
      - PRINCIPAL_SERVICE_ACCOUNT
      - PRINCIPAL_RUNNER_MANAGER
      title: Principal
      type: string
    gitpod.v1.PaginationResponse:
      additionalProperties: false
      properties:
        nextToken:
          description: "Token passed for retrieving the next set of results. Empty if there are no\n more results"
          title: next_token
          type: string
      title: PaginationResponse
      type: object
    gitpod.v1.CreateServiceAccountAccessTokenRequest:
      additionalProperties: false
      properties:
        serviceAccountId:
          format: uuid
          title: service_account_id
          type: string
      title: CreateServiceAccountAccessTokenRequest
      type: object
    gitpod.v1.ListServiceAccountTokensResponse:
      additionalProperties: false
      properties:
        pagination:
          $ref: '#/components/schemas/gitpod.v1.PaginationResponse'
          title: pagination
        tokens:
          items:
            $ref: '#/components/schemas/gitpod.v1.ServiceAccountToken'
          title: tokens
          type: array
      title: ListServiceAccountTokensResponse
      type: object
    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.CreateServiceAccountAccessTokenResponse:
      additionalProperties: false
      properties:
        token:
          title: token
          type: string
      title: CreateServiceAccountAccessTokenResponse
      type: object
    gitpod.v1.CreateServiceAccountResponse:
      additionalProperties: false
      properties:
        serviceAccount:
          $ref: '#/components/schemas/gitpod.v1.ServiceAccount'
          title: service_account
      required:
      - serviceAccount
      title: CreateServiceAccountResponse
      type: object
    gitpod.v1.PaginationRequest:
      additionalProperties: false
      properties:
        pageSize:
          description: "Page size is the maximum number of results to retrieve per page.\n Defaults to 25. Maximum 100."
          format: int32
          maximum: 100
          title: page_size
          type: integer
        token:
          description: "Token for the next set of results that was returned as next_token of a\n PaginationResponse"
          title: token
          type: string
      title: PaginationRequest
      type: object
    gitpod.v1.DeleteServiceAccountTokenRequest:
      additionalProperties: false
      properties:
        serviceAccountTokenId:
          format: uuid
          title: service_account_token_id
          type: string
      title: DeleteServiceAccountTokenRequest
      type: object
    gitpod.v1.ListServiceAccountsRequest.Filter:
      additionalProperties: false
      properties:
        includeSuspended:
          description: "include_suspended includes suspended (soft-deleted) service accounts in the response.\n By default, suspended service accounts are excluded."
          title: include_suspended
          type: boolean
        search:
          description: search performs case-insensitive search across service account name, description, and ID
          maxLength: 256
          title: search
          type: string
        serviceAccountIds:
          description: service_account_ids filters the response to only service accounts with the specified IDs
          items:
            format: uuid
            maxItems: 25
            type: string
          maxItems: 25
          title: service_account_ids
          type: array
      title: Filter
      type: object
    google.protobuf.Duration:
      description: "A Duration represents a signed, fixed-length span of time represented\n as a count of seconds and fractions of seconds at nanosecond\n resolution. It is independent of any calendar and concepts like \"day\"\n or \"month\". It is related to Timestamp in that the difference between\n two Timestamp values is a Duration and it can be added or subtracted\n from a Timestamp. Range is approximately +-10,000 years.\n\n # Examples\n\n Example 1: Compute Duration from two Timestamps in pseudo code.\n\n     Timestamp start = ...;\n     Timestamp end = ...;\n     Duration duration = ...;\n\n     duration.seconds = end.seconds - start.seconds;\n     duration.nanos = end.nanos - start.nanos;\n\n     if (duration.seconds < 0 && duration.nanos > 0) {\n       duration.seconds += 1;\n       duration.nanos -= 1000000000;\n     } else if (duration.seconds > 0 && duration.nanos < 0) {\n       duration.seconds -= 1;\n       duration.nanos += 1000000000;\n     }\n\n Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n\n     Timestamp start = ...;\n     Duration duration = ...;\n     Timestamp end = ...;\n\n     end.seconds = start.seconds + duration.seconds;\n     end.nanos = start.nanos + duration.nanos;\n\n     if (end.nanos < 0) {\n       end.seconds -= 1;\n       end.nanos += 1000000000;\n     } else if (end.nanos >= 1000000000) {\n       end.seconds += 1;\n       end.nanos -= 1000000000;\n     }\n\n Example 3: Compute Duration from datetime.timedelta in Python.\n\n     td = datetime.timedelta(days=3, minutes=10)\n     duration = Duration()\n     duration.FromTimedelta(td)\n\n # JSON Mapping\n\n In JSON format, the Duration type is encoded as a string rather than an\n object, where the string ends in the suffix \"s\" (indicating seconds) and\n is preceded by the number of seconds, with nanoseconds expressed as\n fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n microsecond should be expressed in JSON format as \"3.000001s\"."
      format: regex
      pattern: ^[-\+]?([0-9]+\.?[0-9]*|\.[0-9]+)s$
      type: string
    gitpod.v1.ListServiceAccountsResponse:
      additionalProperties: false
      properties:
        pagination:
          $ref: '#/components/schemas/gitpod.v1.PaginationResponse'
          title: pagination
        serviceAccounts:
          items:
            $ref: '#/components/schemas/gitpod.v1.ServiceAccount'
          title: service_accounts
          type: array
      title: ListServiceAccountsResponse
      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.GetServiceAccountTokenResponse:
      additionalProperties: false
      properties:
        token:
          $ref: '#/components/schemas/gitpod.v1.ServiceAccountToken'
          title: token
      required:
      - token
      title: GetServiceAccountTokenResponse
      type: object
    gitpod.v1.Subject:
      additionalProperties: false
      properties:
        id:
          description: id is the UUID of the subject
          format: uuid
          title: id
          type: string
        principal:
          $ref: '#/components/schemas/gitpod.v1.Principal'
          description: Principal is the principal of the subject
          title: principal
      title: Subject
      type: object
    gitpod.v1.DeleteServiceAccountRequest:
      additionalProperties: false
      properties:
        serviceAccountId:
          format: uuid
          title: service_account_id
          type: string
      title: DeleteServiceAccountRequest
      type: object
    gitpod.v1.DeleteServiceAccountTokenResponse:
      additionalProperties: false
      title: DeleteServiceAccountTokenResponse
      type: object
    gitpod.v1.ListServiceAccountsRequest:
      additionalProperties: false
      properties:
        filter:
          $ref: '#/components/schemas/gitpod.v1.ListServiceAccountsRequest.Filter'
          description: filter contains options for filtering the list of service accounts.
          title: filter
        pagination:
          $ref: '#/components/schemas/gitpod.v1.PaginationRequest'
          title: pagination
      title: ListServiceAccountsRequest
      type: object
    gitpod.v1.UpdateServiceAccountResponse:
      additionalProperties: false
      properties:
        serviceAccount:
          $ref: '#/components/schemas/gitpod.v1.ServiceAccount'
          title: service_account
      required:
      - serviceAccount
      title: UpdateServiceAccountResponse
      type: object
    gitpod.v1.ServiceAccount:
      additionalProperties: false
      properties:
        createdAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: created_at
        creator:
          $ref: '#/components/schemas/gitpod.v1.Subject'
          title: creator
        description:
          title: description
          type: string
        id:
          format: uuid
          title: id
          type: string
        name:
          title: name
          type: string
        organizationId:
          format: uuid
          title: organization_id
          type: string
        suspended:
          description: "suspended indicates whether the service account has been deleted (soft-delete).\n Suspended service accounts cannot be used for authentication."
          title: suspended
          type: boolean
        validUntil:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: valid_until
      title: ServiceAccount
      type: object
    gitpod.v1.CreateServiceAccountTokenResponse:
      additionalProperties: false
      properties:
        serviceAccountToken:
          $ref: '#/components/schemas/gitpod.v1.ServiceAccountToken'
          description: service_account_token contains the token metadata.
          title: service_account_token
        token:
          description: token is the actual JWT token value. This is only returned once during creation.
          title: token
          type: string
      required:
      - token
      title: CreateServiceAccountTokenResponse
      type: object
    gitpod.v1.ServiceAccountToken:
      additionalProperties: false
      description: "ServiceAccountToken represents metadata about a service account token.\n The actual token value is only returned once during creation."
      properties:
        createdAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: created_at
        creator:
          $ref: '#/components/schemas/gitpod.v1.Subject'
          title: creator
        description:
          title: description
          type: string
        expiresAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: expires_at
        id:
          format: uuid
          title: id
          type: string
        lastUsed:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: last_used
        serviceAccountId:
          format: uuid
          title: service_account_id
          type: string
      title: ServiceAccountToken
      type: object
    gitpod.v1.CreateServiceAccountTokenRequest:
      additionalProperties: false
      properties:
        description:
          title: description
          type: string
        validFor:
          $ref: '#/components/schemas/google.protobuf.Duration'
          description: "valid_for specifies how long the token should be valid.\n A large value (e.g. reaching year 2099) represents \"no expiry\".\n The actual expiry is always capped to the service account's own expiry."


# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gitpod/refs/heads/main/openapi/gitpod-gitpod-v1-serviceaccountservice-api-openapi.yml