> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# UpdateLogConfiguration



## OpenAPI

````yaml /docs/api/openapi/logs_openapi.json post /core.v1.LogsService/UpdateLogConfiguration
openapi: 3.1.0
info:
  title: core.v1.LogsService
  version: 0.0.1
servers:
  - url: https://api.joinformal.com
    description: Production API
security: []
tags:
  - name: core.v1.LogsService
paths:
  /core.v1.LogsService/UpdateLogConfiguration:
    post:
      tags:
        - core.v1.LogsService
      summary: UpdateLogConfiguration
      operationId: core.v1.LogsService.UpdateLogConfiguration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/core.v1.UpdateLogConfigurationRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/core.v1.UpdateLogConfigurationResponse'
        '400':
          description: Bad Request - Invalid request parameters or body
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: invalid_request
                  message:
                    type: string
                    example: Invalid request parameters
                  details:
                    type: object
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: unauthorized
                  message:
                    type: string
                    example: Authentication required
        '403':
          description: Forbidden - Insufficient permissions
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: forbidden
                  message:
                    type: string
                    example: Insufficient permissions to perform this action
        '404':
          description: Not Found - Resource does not exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: not_found
                  message:
                    type: string
                    example: Resource not found
        '500':
          description: Internal Server Error - An error occurred processing the request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: internal_error
                  message:
                    type: string
                    example: An internal error occurred
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -X POST
            "https://api.joinformal.com/core.v1.LogsService/UpdateLogConfiguration"
            \
              -H "X-API-KEY: YOUR_API_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                "example": "value"
              }'
        - lang: javascript
          label: JavaScript (fetch)
          source: >-
            fetch("https://api.joinformal.com/core.v1.LogsService/UpdateLogConfiguration",
            {
              method: "POST",
              headers: {
                "X-API-KEY": "YOUR_API_KEY",
                "Content-Type": "application/json"
              },
              body: JSON.stringify({
                example: "value"
              })
            })
              .then(response => response.json())
              .then(data => console.log(data))
              .catch(error => console.error(error));
        - lang: python
          label: Python
          source: >-
            import requests


            url =
            "https://api.joinformal.com/core.v1.LogsService/UpdateLogConfiguration"

            headers = {
                "X-API-KEY": "YOUR_API_KEY",
                "Content-Type": "application/json"
            }

            data = {
                "example": "value"
            }


            response = requests.post(url, headers=headers, json=data)

            print(response.json())
        - lang: go
          label: Go
          source: |-
            package main

            import (
                "bytes"
                "encoding/json"
                "fmt"
                "io"
                "net/http"
            )

            func main() {
                url := "https://api.joinformal.com/core.v1.LogsService/UpdateLogConfiguration"

                body := map[string]string{
                    "example": "value",
                }

                jsonData, _ := json.Marshal(body)

                req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
                req.Header.Set("X-API-KEY", "YOUR_API_KEY")
                req.Header.Set("Content-Type", "application/json")

                client := &http.Client{}
                resp, err := client.Do(req)
                if err != nil {
                    panic(err)
                }
                defer resp.Body.Close()

                responseBody, _ := io.ReadAll(resp.Body)
                fmt.Println(string(responseBody))
            }
components:
  schemas:
    core.v1.UpdateLogConfigurationRequest:
      type: object
      properties:
        id:
          type: string
          title: id
          minLength: 1
        name:
          type: string
          title: name
          nullable: true
        encryptionKeyId:
          type: string
          title: encryption_key_id
          nullable: true
        request:
          $ref: '#/components/schemas/core.v1.LogConfigurationRequest'
          title: request
          nullable: true
        response:
          $ref: '#/components/schemas/core.v1.LogConfigurationResponse'
          title: response
          nullable: true
        stream:
          $ref: '#/components/schemas/core.v1.LogConfigurationStream'
          title: stream
          nullable: true
        session:
          $ref: '#/components/schemas/core.v1.LogConfigurationSession'
          title: session
          nullable: true
      title: UpdateLogConfigurationRequest
      additionalProperties: false
    core.v1.UpdateLogConfigurationResponse:
      type: object
      properties:
        logConfiguration:
          $ref: '#/components/schemas/core.v1.LogConfiguration'
          title: log_configuration
      title: UpdateLogConfigurationResponse
      additionalProperties: false
    core.v1.LogConfigurationRequest:
      type: object
      properties:
        sql:
          $ref: '#/components/schemas/core.v1.LogConfigurationSql'
          title: sql
        encrypt:
          type: boolean
          title: encrypt
        maxPayloadSize:
          type:
            - integer
            - string
          title: max_payload_size
          minimum: -1
          format: int64
        policyEvalInputRetention:
          $ref: '#/components/schemas/google.protobuf.Duration'
          title: policy_eval_input_retention
          description: |
            duration.gte = 0s
            duration.gte_lt = 0s
            duration.gte_lt_exclusive = 0s
            duration.gte_lte = 0s
            duration.gte_lte_exclusive = 0s
            duration.lte = 720h0m0s
      title: LogConfigurationRequest
      additionalProperties: false
    core.v1.LogConfigurationResponse:
      type: object
      properties:
        encrypt:
          type: boolean
          title: encrypt
        maxPayloadSize:
          type:
            - integer
            - string
          title: max_payload_size
          minimum: -1
          format: int64
        policyEvalInputRetention:
          $ref: '#/components/schemas/google.protobuf.Duration'
          title: policy_eval_input_retention
          description: |
            duration.gte = 0s
            duration.gte_lt = 0s
            duration.gte_lt_exclusive = 0s
            duration.gte_lte = 0s
            duration.gte_lte_exclusive = 0s
            duration.lte = 720h0m0s
      title: LogConfigurationResponse
      additionalProperties: false
    core.v1.LogConfigurationStream:
      type: object
      properties:
        encrypt:
          type: boolean
          title: encrypt
      title: LogConfigurationStream
      additionalProperties: false
    core.v1.LogConfigurationSession:
      type: object
      properties:
        policyEvalInputRetention:
          $ref: '#/components/schemas/google.protobuf.Duration'
          title: policy_eval_input_retention
          description: |
            duration.gte = 0s
            duration.gte_lt = 0s
            duration.gte_lt_exclusive = 0s
            duration.gte_lte = 0s
            duration.gte_lte_exclusive = 0s
            duration.lte = 720h0m0s
      title: LogConfigurationSession
      additionalProperties: false
    core.v1.LogConfiguration:
      type: object
      properties:
        id:
          type: string
          title: id
          minLength: 1
        name:
          type: string
          title: name
          minLength: 1
        encryptionKeyId:
          type: string
          title: encryption_key_id
          nullable: true
        scope:
          $ref: '#/components/schemas/core.v1.LogConfigurationScope'
          title: scope
        request:
          $ref: '#/components/schemas/core.v1.LogConfigurationRequest'
          title: request
        response:
          $ref: '#/components/schemas/core.v1.LogConfigurationResponse'
          title: response
        stream:
          $ref: '#/components/schemas/core.v1.LogConfigurationStream'
          title: stream
        createdAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: created_at
          description: |
            timestamp.lt_now = true
        updatedAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: updated_at
          description: |
            timestamp.lt_now = true
        session:
          $ref: '#/components/schemas/core.v1.LogConfigurationSession'
          title: session
        source:
          $ref: '#/components/schemas/core.v1.LogConfigurationSource'
          title: source
      title: LogConfiguration
      additionalProperties: false
    core.v1.LogConfigurationSql:
      type: object
      properties:
        stripValues:
          type: boolean
          title: strip_values
        encrypt:
          type: boolean
          title: encrypt
      title: LogConfigurationSql
      additionalProperties: false
    google.protobuf.Duration:
      type: string
      format: duration
      description: |-
        A Duration represents a signed, fixed-length span of time represented
         as a count of seconds and fractions of seconds at nanosecond
         resolution. It is independent of any calendar and concepts like "day"
         or "month". It is related to Timestamp in that the difference between
         two Timestamp values is a Duration and it can be added or subtracted
         from a Timestamp. Range is approximately +-10,000 years.

         # Examples

         Example 1: Compute Duration from two Timestamps in pseudo code.

             Timestamp start = ...;
             Timestamp end = ...;
             Duration duration = ...;

             duration.seconds = end.seconds - start.seconds;
             duration.nanos = end.nanos - start.nanos;

             if (duration.seconds < 0 && duration.nanos > 0) {
               duration.seconds += 1;
               duration.nanos -= 1000000000;
             } else if (duration.seconds > 0 && duration.nanos < 0) {
               duration.seconds -= 1;
               duration.nanos += 1000000000;
             }

         Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.

             Timestamp start = ...;
             Duration duration = ...;
             Timestamp end = ...;

             end.seconds = start.seconds + duration.seconds;
             end.nanos = start.nanos + duration.nanos;

             if (end.nanos < 0) {
               end.seconds -= 1;
               end.nanos += 1000000000;
             } else if (end.nanos >= 1000000000) {
               end.seconds += 1;
               end.nanos -= 1000000000;
             }

         Example 3: Compute Duration from datetime.timedelta in Python.

             td = datetime.timedelta(days=3, minutes=10)
             duration = Duration()
             duration.FromTimedelta(td)

         # JSON Mapping

         In JSON format, the Duration type is encoded as a string rather than an
         object, where the string ends in the suffix "s" (indicating seconds) and
         is preceded by the number of seconds, with nanoseconds expressed as
         fractional seconds. For example, 3 seconds with 0 nanoseconds should be
         encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
         be expressed in JSON format as "3.000000001s", and 3 seconds and 1
         microsecond should be expressed in JSON format as "3.000001s".
    core.v1.LogConfigurationScope:
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/core.v1.LogConfigurationScopeType'
          title: scope
        resourceId:
          type: string
          title: resource_id
          nullable: true
        connectorId:
          type: string
          title: connector_id
          nullable: true
        spaceId:
          type: string
          title: space_id
          nullable: true
      title: LogConfigurationScope
      additionalProperties: false
    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.
    core.v1.LogConfigurationSource:
      type: string
      title: LogConfigurationSource
      enum:
        - LOG_CONFIGURATION_SOURCE_UNSPECIFIED
        - LOG_CONFIGURATION_SOURCE_CONNECTOR
        - LOG_CONFIGURATION_SOURCE_DESKTOP
    core.v1.LogConfigurationScopeType:
      type: string
      title: LogConfigurationScopeType
      enum:
        - LOG_CONFIGURATION_SCOPE_TYPE_UNSPECIFIED
        - LOG_CONFIGURATION_SCOPE_TYPE_RESOURCE
        - LOG_CONFIGURATION_SCOPE_TYPE_CONNECTOR
        - LOG_CONFIGURATION_SCOPE_TYPE_SPACE
        - LOG_CONFIGURATION_SCOPE_TYPE_ORG
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API key authentication. Get your API key from the Formal console.

````