> ## 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.

# Create datalake

> Add a new datalake.



## OpenAPI

````yaml /generated/openapi-import-generated-2023-12-01.json post /import/datalakes
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:
    post:
      tags:
        - Datalakes
      summary: Create datalake
      description: Add a new datalake.
      operationId: create-datalake
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDatalakeRequest'
              $schema: https://json-schema.org/draft/2020-12/schema
              $id: >-
                https://github.com/prequel-co/datafeed/internal/import/api/models/create-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:
    CreateDatalakeRequest:
      properties:
        datalake:
          $ref: '#/components/schemas/DatalakeOptions'
      additionalProperties: false
      type: object
      required:
        - datalake
    GetDatalakeResponse:
      properties:
        datalake:
          $ref: '#/components/schemas/DatalakeResource'
      additionalProperties: false
      type: object
      required:
        - datalake
    DatalakeOptions:
      oneOf:
        - properties:
            storage:
              const: s3
            s3:
              $ref: '#/components/schemas/S3DatalakeOptions'
              title: S3 Configuration
          required:
            - storage
            - s3
          title: S3 Configuration
        - properties:
            storage:
              const: s3_compatible
            s3_compatible:
              $ref: '#/components/schemas/S3CompatibleDatalakeOptions'
              title: S3-Compatible Configuration
          required:
            - storage
            - s3_compatible
          title: S3-Compatible Configuration
        - properties:
            storage:
              const: gcs
            gcs:
              $ref: '#/components/schemas/GCSDatalakeOptions'
              title: Google Cloud Storage Configuration
          required:
            - storage
            - gcs
          title: Google Cloud Storage Configuration
        - properties:
            storage:
              const: abs
            abs:
              $ref: '#/components/schemas/ABSDatalakeOptions'
              title: Azure Blob Storage Configuration
          required:
            - storage
            - abs
          title: Azure Blob Storage Configuration
      properties:
        name:
          type: string
          title: Name
          description: Unique name for this import datalake.
        retention_window_days:
          type: integer
          title: Retention Window (Days)
          description: Number of days to retain data. Null means infinite retention.
      type: object
      required:
        - name
      unevaluatedProperties: false
    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
    S3DatalakeOptions:
      oneOf:
        - $ref: '#/components/schemas/S3DatalakeOptionsAWSIAMRole'
        - $ref: '#/components/schemas/S3DatalakeOptionsAWSAccessKeys'
      discriminator:
        mapping:
          aws_access_keys:
            $ref: '#/components/schemas/S3DatalakeOptionsAWSAccessKeys'
          aws_iam_role:
            $ref: '#/components/schemas/S3DatalakeOptionsAWSIAMRole'
        propertyName: auth_method
    S3CompatibleDatalakeOptions:
      properties:
        prefix:
          type: string
          description: Prefix to use for the S3 bucket.
        bucket_name:
          type: string
          title: Bucket Name
        bucket_region:
          type: string
          title: Region
        bucket_host:
          type: string
          title: Host
        bucket_port:
          type: integer
          exclusiveMinimum: 0
          title: Port
          default: 443
        aws_access_keys:
          $ref: '#/components/schemas/AWSAccessKeys'
          description: Access credentials for S3-compatible storage.
      additionalProperties: false
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - bucket_host
        - bucket_port
        - aws_access_keys
    GCSDatalakeOptions:
      oneOf:
        - $ref: '#/components/schemas/GCSDatalakeOptionsGCPServiceAccountRole'
        - $ref: '#/components/schemas/GCSDatalakeOptionsGCPServiceAccountKey'
        - $ref: >-
            #/components/schemas/GCSDatalakeOptionsFederatedGCPServiceAccountRole
      discriminator:
        mapping:
          federated_gcp_service_account_role:
            $ref: >-
              #/components/schemas/GCSDatalakeOptionsFederatedGCPServiceAccountRole
          gcp_service_account_key:
            $ref: '#/components/schemas/GCSDatalakeOptionsGCPServiceAccountKey'
          gcp_service_account_role:
            $ref: '#/components/schemas/GCSDatalakeOptionsGCPServiceAccountRole'
        propertyName: auth_method
    ABSDatalakeOptions:
      properties:
        prefix:
          type: string
          description: Prefix to use for the ABS bucket.
        container_name:
          type: string
          title: Container Name
        storage_account_name:
          type: string
          title: Storage Account Name
        auth_method:
          type: string
          enum:
            - azure_storage_account_access_key
          title: Auth Method
        azure_storage_account_access_key:
          $ref: '#/components/schemas/AzureStorageAccountAccessKey'
          description: Required parameters to authenticate to Azure using an access key.
      additionalProperties: false
      type: object
      required:
        - prefix
        - container_name
        - storage_account_name
        - auth_method
    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
    S3DatalakeOptionsAWSIAMRole:
      properties:
        bucket_name:
          type: string
          title: Bucket Name
          description: Name of the S3 bucket.
        prefix:
          type: string
          description: Prefix to use for the S3 bucket.
        bucket_region:
          type: string
          title: Region
          description: AWS region where the bucket is located.
        auth_method:
          const: aws_iam_role
        aws_iam_role:
          $ref: '#/components/schemas/AWSIAMRole'
      type: object
      required:
        - bucket_name
        - prefix
        - bucket_region
        - auth_method
        - aws_iam_role
      unevaluatedProperties: false
    S3DatalakeOptionsAWSAccessKeys:
      properties:
        bucket_name:
          type: string
          title: Bucket Name
          description: Name of the S3 bucket.
        prefix:
          type: string
          description: Prefix to use for the S3 bucket.
        bucket_region:
          type: string
          title: Region
          description: AWS region where the bucket is located.
        auth_method:
          const: aws_access_keys
        aws_access_keys:
          $ref: '#/components/schemas/AWSAccessKeys'
          description: Required details if authenticating using AWS access keys.
      type: object
      required:
        - bucket_name
        - prefix
        - bucket_region
        - auth_method
        - aws_access_keys
      unevaluatedProperties: false
    AWSAccessKeys:
      properties:
        access_id:
          type: string
          title: Bucket access ID
        secret_key:
          type: string
          title: Bucket secret key
      additionalProperties: false
      type: object
      required:
        - access_id
        - secret_key
    GCSDatalakeOptionsGCPServiceAccountRole:
      properties:
        prefix:
          type: string
          description: Prefix to use for the GCS bucket.
        bucket_name:
          type: string
          title: Bucket Name
        bucket_region:
          type: string
          title: Region
          description: GCS region (e.g. us-central1).
        auth_method:
          const: gcp_service_account_role
        gcp_service_account_role:
          $ref: '#/components/schemas/GCPDatalakeServiceAccountRole'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - gcp_service_account_role
      unevaluatedProperties: false
    GCSDatalakeOptionsGCPServiceAccountKey:
      properties:
        prefix:
          type: string
          description: Prefix to use for the GCS bucket.
        bucket_name:
          type: string
          title: Bucket Name
        bucket_region:
          type: string
          title: Region
          description: GCS region (e.g. us-central1).
        auth_method:
          const: gcp_service_account_key
        gcp_service_account_key:
          $ref: '#/components/schemas/GCPDatalakeServiceAccountKey'
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - gcp_service_account_key
      unevaluatedProperties: false
    GCSDatalakeOptionsFederatedGCPServiceAccountRole:
      properties:
        prefix:
          type: string
          description: Prefix to use for the GCS bucket.
        bucket_name:
          type: string
          title: Bucket Name
        bucket_region:
          type: string
          title: Region
          description: GCS region (e.g. us-central1).
        auth_method:
          const: federated_gcp_service_account_role
        federated_gcp_service_account_role:
          $ref: '#/components/schemas/FederatedGCPDatalakeServiceAccountRole'
          description: >-
            Required details if authenticating using Workload Identity
            Federation.
      type: object
      required:
        - prefix
        - bucket_name
        - bucket_region
        - auth_method
        - federated_gcp_service_account_role
      unevaluatedProperties: false
    AzureStorageAccountAccessKey:
      properties:
        storage_account_access_key:
          type: string
          title: Access key
      additionalProperties: false
      type: object
      required:
        - storage_account_access_key
    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
    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
    GCPDatalakeServiceAccountRole:
      properties:
        gcp_service_account_email:
          type: string
          title: GCP Service Account Email
          description: Email of the GCP service account.
      additionalProperties: false
      type: object
      required:
        - gcp_service_account_email
    GCPDatalakeServiceAccountKey:
      properties:
        service_account_email:
          type: string
          pattern: ^.*gserviceaccount.com$
          format: email
          title: Datalake service account email
          default: service-account-name@project-id.iam.gserviceaccount.com
        service_account_key:
          title: JSON Token
          description: >-
            The credentials (JSON) that will be used to access the datalake.
            Create a service account just for this use.
      additionalProperties: false
      type: object
      required:
        - service_account_email
        - service_account_key
    FederatedGCPDatalakeServiceAccountRole:
      properties:
        service_account_email:
          type: string
          pattern: ^.*gserviceaccount.com$
          format: email
          title: Datalake service account email
          default: service-account-name@project-id.iam.gserviceaccount.com
        workload_identity_federation_metadata:
          $ref: '#/components/schemas/GcpExternalAccountMetadata'
          title: Workload identity metadata
      additionalProperties: false
      type: object
      required:
        - service_account_email
    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
    GcpExternalAccountMetadata:
      properties:
        type:
          type: string
        audience:
          type: string
        subject_token_type:
          type: string
        service_account_impersonation_url:
          type: string
        token_url:
          type: string
        credential_source:
          $ref: '#/components/schemas/CredentialSource'
      type: object
      required:
        - type
        - audience
        - subject_token_type
        - service_account_impersonation_url
        - token_url
        - credential_source
    CredentialSource:
      properties:
        environment_id:
          type: string
        region_url:
          type: string
        url:
          type: string
        regional_cred_verification_url:
          type: string
      additionalProperties: false
      type: object
      required:
        - environment_id
        - region_url
        - url
        - regional_cred_verification_url
  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

````