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

# Update datalake

> Update an existing datalake.



## OpenAPI

````yaml /generated/openapi-import-generated-2023-12-01.json patch /import/datalakes/{id}
openapi: 3.1.0
info:
  title: Prequel Data Import
  description: Data Import API spec
  version: '2023-12-01'
servers:
  - url: https://api.prequel.co
    description: Cloud-hosted server (US)
  - url: https://eu-api.prequel.co
    description: Cloud-hosted server (EU)
  - url: https://{custom_host}
    description: Self-hosted Prequel API host
security:
  - ApiKeyAuth: []
paths:
  /import/datalakes/{id}:
    patch:
      tags:
        - Datalakes
      summary: Update datalake
      description: Update an existing datalake.
      operationId: update-datalake
      parameters:
        - name: id
          in: path
          required: true
          description: Import Datalake ID.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDatalakeRequest'
              $schema: https://json-schema.org/draft/2020-12/schema
              $id: >-
                https://github.com/prequel-co/datafeed/internal/import/api/models/update-datalake-request
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    $ref: '#/components/schemas/GetDatalakeResponse'
                    $schema: https://json-schema.org/draft/2020-12/schema
                    $id: >-
                      https://github.com/prequel-co/datafeed/internal/import/api/models/get-datalake-response
                  message:
                    type: string
                type: object
                required:
                  - status
                  - data
                  - message
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    UpdateDatalakeRequest:
      properties:
        datalake:
          $ref: '#/components/schemas/DatalakeUpdateOptions'
      additionalProperties: false
      type: object
      required:
        - datalake
    GetDatalakeResponse:
      properties:
        datalake:
          $ref: '#/components/schemas/DatalakeResource'
      additionalProperties: false
      type: object
      required:
        - datalake
    DatalakeUpdateOptions:
      properties:
        name:
          type: string
          description: Unique name for this import datalake.
        retention_window_days:
          type: integer
          description: Number of days to retain data. Null means infinite retention.
        s3:
          $ref: '#/components/schemas/UpdateS3DatalakeOptions'
        s3_compatible:
          $ref: '#/components/schemas/UpdateS3CompatibleDatalakeOptions'
        gcs:
          $ref: '#/components/schemas/UpdateGCSDatalakeOptions'
        abs:
          $ref: '#/components/schemas/UpdateABSDatalakeOptions'
      additionalProperties: false
      type: object
    DatalakeResource:
      oneOf:
        - properties:
            storage:
              const: s3
            s3:
              $ref: '#/components/schemas/S3DatalakeResource'
          required:
            - storage
            - s3
          title: s3
        - properties:
            storage:
              const: s3_compatible
            s3_compatible:
              $ref: '#/components/schemas/S3CompatibleDatalakeResource'
          required:
            - storage
            - s3_compatible
          title: s3_compatible
        - properties:
            storage:
              const: gcs
            gcs:
              $ref: '#/components/schemas/GCSDatalakeResource'
          required:
            - storage
            - gcs
          title: gcs
        - properties:
            storage:
              const: abs
            abs:
              $ref: '#/components/schemas/ABSDatalakeResource'
          required:
            - storage
            - abs
          title: abs
      properties:
        id:
          type: string
        name:
          type: string
        retention_window_days:
          type: integer
        created_at:
          type: string
        updated_at:
          type: string
      type: object
      required:
        - id
        - name
        - created_at
        - updated_at
      unevaluatedProperties: false
    ErrorResponse:
      properties:
        status:
          type: string
          const: error
        message:
          type: string
        data:
          type: 'null'
      type: object
      required:
        - status
        - message
    UpdateS3DatalakeOptions:
      properties:
        prefix:
          type: string
          description: Prefix to use for the S3 bucket.
        auth_method:
          type: string
          enum:
            - aws_iam_role
            - aws_access_keys
        aws_iam_role:
          $ref: '#/components/schemas/AWSIAMRole'
        aws_access_keys:
          $ref: '#/components/schemas/UpdateAWSAccessKeys'
      additionalProperties: false
      type: object
    UpdateS3CompatibleDatalakeOptions:
      properties:
        prefix:
          type: string
          description: Prefix to use for the S3 bucket.
        bucket_host:
          type: string
          description: Host for S3-compatible storage.
        bucket_port:
          type: integer
          description: Port for S3-compatible storage.
        aws_access_keys:
          $ref: '#/components/schemas/UpdateAWSAccessKeys'
      additionalProperties: false
      type: object
    UpdateGCSDatalakeOptions:
      properties:
        prefix:
          type: string
          description: Prefix to use for the GCS bucket.
        auth_method:
          type: string
          enum:
            - gcp_service_account_role
            - gcp_service_account_key
            - federated_gcp_service_account_role
        gcp_service_account_role:
          $ref: '#/components/schemas/UpdateGCPDatalakeServiceAccountRole'
        gcp_service_account_key:
          $ref: '#/components/schemas/UpdateGCPDatalakeServiceAccountKey'
        federated_gcp_service_account_role:
          $ref: '#/components/schemas/UpdateGCPDatalakeServiceAccountRole'
      additionalProperties: false
      type: object
    UpdateABSDatalakeOptions:
      properties:
        prefix:
          type: string
          description: Prefix to use for the ABS bucket.
        container_name:
          type: string
        storage_account_name:
          type: string
        auth_method:
          type: string
          enum:
            - azure_storage_account_access_key
        azure_storage_account_access_key:
          $ref: '#/components/schemas/UpdateAzureStorageAccountAccessKey'
      additionalProperties: false
      type: object
    S3DatalakeResource:
      oneOf:
        - $ref: '#/components/schemas/S3DatalakeResourceAWSIAMRole'
        - $ref: '#/components/schemas/S3DatalakeResourceAWSAccessKeys'
      discriminator:
        mapping:
          aws_access_keys:
            $ref: '#/components/schemas/S3DatalakeResourceAWSAccessKeys'
          aws_iam_role:
            $ref: '#/components/schemas/S3DatalakeResourceAWSIAMRole'
        propertyName: auth_method
    S3CompatibleDatalakeResource:
      properties:
        prefix:
          type: string
        bucket_name:
          type: string
        bucket_region:
          type: string
        bucket_host:
          type: string
        bucket_port:
          type: integer
        aws_access_keys:
          $ref: '#/components/schemas/AWSAccessKeysResource'
      additionalProperties: false
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - bucket_host
        - bucket_port
        - aws_access_keys
    GCSDatalakeResource:
      oneOf:
        - $ref: '#/components/schemas/GCSDatalakeResourceGCPServiceAccountRole'
        - $ref: '#/components/schemas/GCSDatalakeResourceGCPServiceAccountKey'
        - $ref: >-
            #/components/schemas/GCSDatalakeResourceFederatedGCPServiceAccountRole
      discriminator:
        mapping:
          federated_gcp_service_account_role:
            $ref: >-
              #/components/schemas/GCSDatalakeResourceFederatedGCPServiceAccountRole
          gcp_service_account_key:
            $ref: '#/components/schemas/GCSDatalakeResourceGCPServiceAccountKey'
          gcp_service_account_role:
            $ref: '#/components/schemas/GCSDatalakeResourceGCPServiceAccountRole'
        propertyName: auth_method
    ABSDatalakeResource:
      properties:
        prefix:
          type: string
        container_name:
          type: string
        storage_account_name:
          type: string
        auth_method:
          type: string
        azure_storage_account_access_key:
          $ref: '#/components/schemas/AzureStorageAccountAccessKeyResource'
      additionalProperties: false
      type: object
      required:
        - prefix
        - container_name
        - storage_account_name
        - auth_method
    AWSIAMRole:
      properties:
        aws_iam_role_arn:
          type: string
          title: IAM role ARN
          default: arn:aws:iam::123456789012:role/service-role/role-name
      additionalProperties: false
      type: object
      required:
        - aws_iam_role_arn
    UpdateAWSAccessKeys:
      properties:
        access_id:
          type: string
          description: The access key ID to use for authentication.
        secret_key:
          type: string
          description: The secret key to use for authentication.
      additionalProperties: false
      type: object
    UpdateGCPDatalakeServiceAccountRole:
      properties:
        gcp_service_account_email:
          type: string
          description: Email of the GCP service account.
      additionalProperties: false
      type: object
    UpdateGCPDatalakeServiceAccountKey:
      properties:
        service_account_email:
          type: string
          pattern: ^.*gserviceaccount.com$
          format: email
          description: The email of the GCP service account to use for authentication.
        service_account_key:
          description: The full Google-generated JSON service account key object.
      additionalProperties: false
      type: object
    UpdateAzureStorageAccountAccessKey:
      properties:
        storage_account_access_key:
          type: string
          title: Access key
      additionalProperties: false
      type: object
    S3DatalakeResourceAWSIAMRole:
      properties:
        prefix:
          type: string
        bucket_name:
          type: string
        bucket_region:
          type: string
        auth_method:
          const: aws_iam_role
        aws_iam_role:
          $ref: '#/components/schemas/AWSIAMRoleResource'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - aws_iam_role
      unevaluatedProperties: false
    S3DatalakeResourceAWSAccessKeys:
      properties:
        prefix:
          type: string
        bucket_name:
          type: string
        bucket_region:
          type: string
        auth_method:
          const: aws_access_keys
        aws_access_keys:
          $ref: '#/components/schemas/AWSAccessKeysResource'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - aws_access_keys
      unevaluatedProperties: false
    AWSAccessKeysResource:
      properties:
        access_key_id:
          type: string
      additionalProperties: false
      type: object
      required:
        - access_key_id
    GCSDatalakeResourceGCPServiceAccountRole:
      properties:
        prefix:
          type: string
        bucket_name:
          type: string
        bucket_region:
          type: string
        auth_method:
          const: gcp_service_account_role
        gcp_service_account_role:
          $ref: '#/components/schemas/GCPDatalakeServiceAccountRoleResource'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - gcp_service_account_role
      unevaluatedProperties: false
    GCSDatalakeResourceGCPServiceAccountKey:
      properties:
        prefix:
          type: string
        bucket_name:
          type: string
        bucket_region:
          type: string
        auth_method:
          const: gcp_service_account_key
        gcp_service_account_key:
          $ref: '#/components/schemas/GCPDatalakeServiceAccountKeyResource'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - gcp_service_account_key
      unevaluatedProperties: false
    GCSDatalakeResourceFederatedGCPServiceAccountRole:
      properties:
        prefix:
          type: string
        bucket_name:
          type: string
        bucket_region:
          type: string
        auth_method:
          const: federated_gcp_service_account_role
        federated_gcp_service_account_role:
          $ref: '#/components/schemas/FederatedGCPDatalakeServiceAccountRoleResource'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - federated_gcp_service_account_role
      unevaluatedProperties: false
    AzureStorageAccountAccessKeyResource:
      properties: {}
      additionalProperties: false
      type: object
    AWSIAMRoleResource:
      properties:
        aws_iam_role:
          type: string
      additionalProperties: false
      type: object
      required:
        - aws_iam_role
    GCPDatalakeServiceAccountRoleResource:
      properties:
        gcp_service_account_email:
          type: string
      additionalProperties: false
      type: object
      required:
        - gcp_service_account_email
    GCPDatalakeServiceAccountKeyResource:
      properties:
        service_account_email:
          type: string
      additionalProperties: false
      type: object
      required:
        - service_account_email
    FederatedGCPDatalakeServiceAccountRoleResource:
      properties:
        gcp_service_account_email:
          type: string
      additionalProperties: false
      type: object
      required:
        - gcp_service_account_email
  responses:
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````