openapi: 3.1.0 info: title: textql.rpc.platform version: "1.0" paths: /v1/api-keys/create: post: tags: - textql.rpc.platform.ApiAccessKeyService summary: CreateApiAccessKey operationId: textql.rpc.platform.ApiAccessKeyService.CreateApiAccessKey parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.CreateApiAccessKeyRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.CreateApiAccessKeyResponse' /v1/api-keys/delete: post: tags: - textql.rpc.platform.ApiAccessKeyService summary: DeleteApiAccessKey operationId: textql.rpc.platform.ApiAccessKeyService.DeleteApiAccessKey parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.DeleteApiAccessKeyRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.DeleteApiAccessKeyResponse' /v1/api-keys: post: tags: - textql.rpc.platform.ApiAccessKeyService summary: ListApiAccessKeys operationId: textql.rpc.platform.ApiAccessKeyService.ListApiAccessKeys parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.ListApiAccessKeysRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.ListApiAccessKeysResponse' /v1/api-providers: post: tags: - textql.rpc.platform.ApiAccessKeyService summary: ListApiProviders operationId: textql.rpc.platform.ApiAccessKeyService.ListApiProviders parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.ListApiProvidersRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.ListApiProvidersResponse' /v1/api-keys/update: post: tags: - textql.rpc.platform.ApiAccessKeyService summary: UpdateApiAccessKey operationId: textql.rpc.platform.ApiAccessKeyService.UpdateApiAccessKey parameters: - name: Connect-Protocol-Version in: header required: true schema: $ref: '#/components/schemas/connect-protocol-version' - name: Connect-Timeout-Ms in: header schema: $ref: '#/components/schemas/connect-timeout-header' requestBody: content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.UpdateApiAccessKeyRequest' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/connect.error' "200": description: Success content: application/json: schema: $ref: '#/components/schemas/textql.rpc.public.secret.UpdateApiAccessKeyResponse' components: schemas: connect-protocol-version: type: number title: Connect-Protocol-Version enum: - 1 description: Define the version of the Connect protocol const: 1 connect-timeout-header: type: number title: Connect-Timeout-Ms description: Define the timeout, in ms connect.error: type: object properties: code: type: string examples: - not_found 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 description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. message: type: string 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. details: type: array items: $ref: '#/components/schemas/connect.error_details.Any' description: A list of messages that carry the error details. There is no limit on the number of messages. title: Connect Error additionalProperties: true description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation' connect.error_details.Any: type: object properties: type: type: string description: 'A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.' value: type: string format: binary description: The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field. debug: oneOf: - type: object title: Any additionalProperties: true description: Detailed error information. discriminator: propertyName: type title: Debug description: Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic. additionalProperties: true description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details. google.protobuf.Timestamp: type: string examples: - "2023-01-15T01:30:15.01Z" - "2024-12-25T12:00:00Z" format: date-time description: |- A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Examples Example 1: Compute Timestamp from POSIX `time()`. Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); Example 2: Compute Timestamp from POSIX `gettimeofday()`. struct timeval tv; gettimeofday(&tv, NULL); Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000); Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. long millis = System.currentTimeMillis(); Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build(); Example 5: Compute Timestamp from Java `Instant.now()`. Instant now = Instant.now(); Timestamp timestamp = Timestamp.newBuilder().setSeconds(now.getEpochSecond()) .setNanos(now.getNano()).build(); Example 6: Compute Timestamp from current time in Python. timestamp = Timestamp() timestamp.GetCurrentTime() # JSON Mapping In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset). For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017. In JavaScript, one can convert a Date object to this format using the standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) method. In Python, a standard `datetime.datetime` object can be converted to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() ) to obtain a formatter capable of generating timestamps in this format. textql.rpc.public.secret.ApiAccessKey: type: object properties: id: type: string title: id orgId: type: string title: org_id memberId: type: string title: member_id hosts: type: array items: type: string title: hosts headers: type: object title: headers additionalProperties: type: string title: value queryParams: type: object title: query_params additionalProperties: type: string title: value description: type: string title: description createdAt: title: created_at $ref: '#/components/schemas/google.protobuf.Timestamp' updatedAt: title: updated_at $ref: '#/components/schemas/google.protobuf.Timestamp' expiresAt: title: expires_at nullable: true $ref: '#/components/schemas/google.protobuf.Timestamp' provider: type: string title: provider authType: type: string title: auth_type description: '"token", "oauth_u2m", "oauth_per_member"' memberOauthAuthenticated: type: boolean title: member_oauth_authenticated memberOauthDisplayName: type: string title: member_oauth_display_name title: ApiAccessKey additionalProperties: false textql.rpc.public.secret.ApiAccessKey.HeadersEntry: type: object properties: key: type: string title: key value: type: string title: value title: HeadersEntry additionalProperties: false textql.rpc.public.secret.ApiAccessKey.QueryParamsEntry: type: object properties: key: type: string title: key value: type: string title: value title: QueryParamsEntry additionalProperties: false textql.rpc.public.secret.ApiProvider: type: object properties: id: type: string title: id name: type: string title: name iconUrl: type: string title: icon_url authType: type: string title: auth_type description: type: string title: description docsUrl: type: string title: docs_url defaultHosts: type: array items: type: string title: default_hosts tokenLabel: type: string title: token_label authHeader: type: string title: auth_header authPrefix: type: string title: auth_prefix oauthSupported: type: boolean title: oauth_supported oauthConfigured: type: boolean title: oauth_configured memberAuthenticated: type: boolean title: member_authenticated memberAuthDisplayName: type: string title: member_auth_display_name envVarFields: type: array items: $ref: '#/components/schemas/textql.rpc.public.secret.EnvVarField' title: env_var_fields oauthHasDefaultUrls: type: boolean title: oauth_has_default_urls title: ApiProvider additionalProperties: false textql.rpc.public.secret.CreateApiAccessKeyRequest: type: object properties: hosts: type: array items: type: string title: hosts headers: type: object title: headers additionalProperties: type: string title: value queryParams: type: object title: query_params additionalProperties: type: string title: value description: type: string title: description expiresAt: title: expires_at nullable: true $ref: '#/components/schemas/google.protobuf.Timestamp' isPrivate: type: boolean title: is_private provider: type: string title: provider authValue: type: string title: auth_value description: The token/key value for provider-based creation authValueExtra: type: string title: auth_value_extra description: Extra auth value (e.g. email for basic_auth) authType: type: string title: auth_type description: '"token" (default), "oauth_u2m", "oauth_per_member"' title: CreateApiAccessKeyRequest additionalProperties: false textql.rpc.public.secret.CreateApiAccessKeyRequest.HeadersEntry: type: object properties: key: type: string title: key value: type: string title: value title: HeadersEntry additionalProperties: false textql.rpc.public.secret.CreateApiAccessKeyRequest.QueryParamsEntry: type: object properties: key: type: string title: key value: type: string title: value title: QueryParamsEntry additionalProperties: false textql.rpc.public.secret.CreateApiAccessKeyResponse: type: object properties: apiAccessKey: title: api_access_key $ref: '#/components/schemas/textql.rpc.public.secret.ApiAccessKey' title: CreateApiAccessKeyResponse additionalProperties: false textql.rpc.public.secret.DeleteApiAccessKeyRequest: type: object properties: id: type: string title: id title: DeleteApiAccessKeyRequest additionalProperties: false textql.rpc.public.secret.DeleteApiAccessKeyResponse: type: object title: DeleteApiAccessKeyResponse additionalProperties: false textql.rpc.public.secret.EnvVarField: type: object properties: envVar: type: string title: env_var label: type: string title: label required: type: boolean title: required secret: type: boolean title: secret defaultValue: type: string title: default_value placeholder: type: string title: placeholder title: EnvVarField additionalProperties: false textql.rpc.public.secret.ListApiAccessKeysRequest: type: object title: ListApiAccessKeysRequest additionalProperties: false textql.rpc.public.secret.ListApiAccessKeysResponse: type: object properties: apiAccessKeys: type: array items: $ref: '#/components/schemas/textql.rpc.public.secret.ApiAccessKey' title: api_access_keys title: ListApiAccessKeysResponse additionalProperties: false textql.rpc.public.secret.ListApiProvidersRequest: type: object title: ListApiProvidersRequest additionalProperties: false textql.rpc.public.secret.ListApiProvidersResponse: type: object properties: providers: type: array items: $ref: '#/components/schemas/textql.rpc.public.secret.ApiProvider' title: providers title: ListApiProvidersResponse additionalProperties: false textql.rpc.public.secret.UpdateApiAccessKeyRequest: type: object properties: id: type: string title: id hosts: type: array items: type: string title: hosts headers: type: object title: headers additionalProperties: type: string title: value queryParams: type: object title: query_params additionalProperties: type: string title: value description: type: string title: description expiresAt: title: expires_at nullable: true $ref: '#/components/schemas/google.protobuf.Timestamp' authType: type: string title: auth_type title: UpdateApiAccessKeyRequest additionalProperties: false textql.rpc.public.secret.UpdateApiAccessKeyRequest.HeadersEntry: type: object properties: key: type: string title: key value: type: string title: value title: HeadersEntry additionalProperties: false textql.rpc.public.secret.UpdateApiAccessKeyRequest.QueryParamsEntry: type: object properties: key: type: string title: key value: type: string title: value title: QueryParamsEntry additionalProperties: false textql.rpc.public.secret.UpdateApiAccessKeyResponse: type: object properties: apiAccessKey: title: api_access_key $ref: '#/components/schemas/textql.rpc.public.secret.ApiAccessKey' title: UpdateApiAccessKeyResponse additionalProperties: false security: [] tags: - name: textql.rpc.platform.ApiAccessKeyService description: Platform API Access Key Service - External API for managing API access keys