openapi: 3.1.0
info:
  version: v1
  title: Nexla Rest API
  termsOfService: https://nexla.com/terms-of-service/
  contact:
    name: Nexla Support
    url: https://docs.nexla.com
    email: support@nexla.com
  license:
    name: Nexla
    url: https://nexla.com
  x-logo:
    url: https://cdn.nexla.io/ui/assets/brand/v2/nexla-logo-color-portrait.svg
    backgroundColor: '#ffffff'
  description: >-
    # Introduction


    The Nexla API is a REST-ful API used to easily create and manage resources
    in Nexla in ways that best fit any use case. It can be used to configure and
    monitor data flows for different data-integration use cases and to perform
    all aspects of data engineering automation offered by the Nexla platform.


    The Nexla API supports all data flow-creation and -management actions in the
    platform, as well as administrative user- and organization-level
    account-management tasks. Note that all other client packages, such as the
    Nexla CLI and Nexla UI, also connect to the overall Nexla infrastructure
    through the Nexla API.


    The API references in this document lists all API endpoints and the
    corresponding payloads.


    Check out the [API Developer
    Guides](https://developers.nexla.com/docs/nexla-api) to view guides and
    tutorials for recommended use cases for different endpoints.


    # API Data Format and Versions


    The API uses JSON for all data exchanges.


    You __should__ specify the API version that should be used in the Accept
    header of each request. For example, to access Version 1 of the API, the
    Accept header should be the following:

    ```

    Accept: application/vnd.nexla.api.v1+json

    ```


    The Nexla API also supports a generic version header, which will default
    your access to the latest version of the data source/destination API.



    ```

    Accept: application/json

    ```


    # Authentication


    Most Nexla API endpoints require `Bearer Token` authentication mechanism for
    making an authenticated request to the API. While this token can be
    generated programmatically outside Nexla UI by starting a session with an
    `api_key`, unless unavoidable, we recommend starting your session from the
    Nexla UI and using the `Nexla Session Token` from the Nexla UI as the
    Authorization header for calls to the Nexla API.


    <SecurityDefinitions />
servers:
  - url: https://{nexla-api-host}
    variables:
      nexla-api-host:
        default: dataops.nexla.com/nexla-api
        description: Nexla API URL your Nexla instance
security:
  - NexlaSessionToken: []
tags:
  - name: Session Management
    description: >
      Operations for managing your Nexla session programmatically. 


      > Note: Unless unavoidable, we recommend starting your session from the
      Nexla UI and using the `Nexla Session Token` from the Nexla UI as the
      Authorization header for calls to the Nexla API.
  - name: Flows
    description: Operations for managing flows.
  - name: Sources
    description: Operations for managing data sources.
  - name: Destinations (Data Sinks)
    description: >
      Operations for managing data sinks. Note that Destinations on the Nexla UI
      are aliased as `data_sinks` in the Nexla API reference model, so all
      endpoints and responses use the term `data_sinks` instead of
      `destinations`.
  - name: Nexsets (Data Sets)
    description: >
      Operations for managing Nexsets. Note that Nexsets on the Nexla UI are
      aliased as `data_sets` in the Nexla API reference model, so all endpoints
      and responses use the term `data_sets` instead of `nexsets`.
  - name: Custom Data Flows
    description: >
      Operations for managing Custom Data Flows. Custom Data Flows are platform
      entities that are created to maintain references to off-platform data
      processing flows (e.g. some Airflow dags). These resources are created
      primarily to track and report data processing metrics of such flows.


      > Note: These are internal-only endpoints that should not be shared
      externally. These endpoints will be deprecated shortly in favor of more
      scalable endpoints for such data flows.
          
  - name: Credentials
    description: Operations for managing data credentials.
  - name: Lookups (Data Maps)
    description: >
      Operations for managing data maps. Note that Lookups on the Nexla UI are
      aliased as `data_maps` in the Nexla API reference model, so all endpoints
      and responses use the term `data_maps` instead of `lookups`. 
  - name: Webhooks
    description: Operations for sending events to the Nexla `webhook` connector.
  - name: Organizations
    description: Operations for managing the user's organization.
  - name: Users
    description: Operations for managing user settings.
  - name: Teams
    description: Operations for managing teams.
  - name: Projects
    description: Operations for managing projects.
  - name: Transforms
    description: Operations for managing reusable attribute and record transforms.
  - name: Code Containers
    description: >
      > Note: These are internal-only endpoints that should not be shared
      externally.  

      > Instead, use the /transforms and /attribute_transforms endpoints.


      Operations for managing `code containers`, `transforms`, and `validators`.


      Code containers are a general-purpose resource in the database used to
      hold code blocks that can be referenced by different modules. 


      Common use cases are: 

      1. `transform` for code blocks that are used to transform Nexsets.

      2. `validator` for code blocks that can be used to set validation rules on
      Nexsets.

      3. `source` and `sink` for code blocks that can be used for data
      processing by some source and sink connectors and for storing code
      references for script connectors.


      These containers can either hold the code in the database or reference the
      repository where the code is saved.


      For convenience, users can use the `transforms`, `attribute_transforms`,
      and `validators` endpoints to access only the code containers of the
      respective type.
  - name: Notifications
    description: Operations for managing notifications.
  - name: Metrics
    description: Operations for retrieving metrics.
  - name: Audit Logs
    description: Operations for reviewing the change history of resources.
  - name: Access Control
    description: Operations for managing access control to resources
  - name: Quarantine Settings
    description: Operations for managing quarantine settings.
  - name: Limits
    description: Rate limit endpoints
  - name: 'Env: Org Management'
    description: Operations for managing organizations in an environment.
  - name: 'Env: Vendor Management'
    description: Operations for managing vendors in an environment.
  - name: 'Env: General Settings'
    description: Operations for managing different environment settings.
paths:
  /data_credentials:
    get:
      tags:
        - Credentials
      operationId: get_data_credentials
      summary: Get All Credentials
      description: |
        Returns all data credentials accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
        - name: credentials_type
          in: query
          description: >
            (Optional) Set this to the type of credentials you want to filter
            by. Connection type or vendor name can be used there.
          schema:
            type: string
      responses:
        '200':
          $ref: '#/components/responses/data_credential_many'
        '403':
          description: Forbidden
        '404':
          description: Not found
    post:
      tags:
        - Credentials
      operationId: create_data_credential
      summary: Create a Credential
      description: >
        Creates a Nexla data credential with the specified configuration in your
        Nexla account.


        > Note: `name`, `credentials_type`, and `credentials` are required.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/data_credential'
                - required:
                    - name
                    - credentials_type
                    - credentials
      responses:
        '200':
          $ref: '#/components/responses/data_credential_one'
        '400':
          description: Unauthorized
  /data_credentials/{credential_id}:
    get:
      tags:
        - Credentials
      operationId: get_data_credential
      summary: Get Credential by ID
      description: |
        Returns a credential object if a valid ID is provided.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_credential_one'
        '403':
          description: Forbidden
        '404':
          description: Not found error
    put:
      tags:
        - Credentials
      operationId: update_data_credential
      summary: Update Credential
      description: >
        Updates a data credential in the authenticated user's account. 


        > Note: This method does not perform partial updating of the
        `credentials` object. The entire `credentials` object will be updated if
        this is added to the payload.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/data_credential'
      responses:
        '200':
          $ref: '#/components/responses/data_credential_one'
        '403':
          description: Forbidden
        '404':
          description: Not found error
    delete:
      tags:
        - Credentials
      operationId: delete_data_credential
      summary: Delete a Credential
      description: Deletes a credential from your Nexla account.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential that needs to be deleted.
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '404':
          description: Not found error
  /data_credentials/{credential_id}?expand=1:
    get:
      tags:
        - Credentials
      operationId: get_data_credential_expanded
      summary: Get Credential by ID with expanded references
      description: >-
        Returns a credential object along with advanced information about
        associated references if a valid ID is provided.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential that needs to be fetched
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_credential_one'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /data_credentials/{credential_id}/probe:
    get:
      tags:
        - Credentials
      operationId: data_credential_probe
      summary: Test credential validity
      description: |
        Use this endpoint to check whether or not a credential is valid.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential being used.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Invalid credential
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    enum:
                      - 403
                  message:
                    type: string
                    description: |
                      Detailed reason for the credential authentication failure.
        '404':
          description: Not Found
  /data_credentials/{credential_id}/probe/tree:
    post:
      tags:
        - Credentials
      operationId: preview_storage_structure
      summary: Preview Storage Structure
      description: >-
        Use this endpoint to preview the structure/hierarchy of storage to which
        this credential grants access. For example, you can use this endpoint to
        see the folder and file structure of a file storage system or the
        table-column structure of a database.

        This can be used to inspect the directory hierarchy of file content
        storage or the database schema of a database/warehouse storage system.
        Note that this endpoint is only valid for credentials for storage
        systems wherein a storage structure needs to be reviewed.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential being used.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  required:
                    - depth
                  properties:
                    depth:
                      type: integer
                      description: >
                        Specify the hierarchy depth that should be scanned and
                        returned in the response. 


                        If no other payload properties are provided, the depth
                        is relative to the storage root. If this request
                        contains instructions about the slice of storage to be
                        previewed (using the path/database/table properties),
                        the depth will be applied relative to that storage
                        slice.


                        We recommend using a depth = 1 to ensure that only
                        small, relevant slices of the storage system are
                        scanned.
                    path:
                      type: string
                      description: >
                        Folder or subfolder path for which you wish to retrieve
                        the content structure. The path string should be
                        structured from the root of the location to the
                        credential. For example, `demo-out.nexla.com/users/test`
                        will return the folder tree for the contents of the
                        `test` subfolder.


                        This is relevant for file-type connectors.
                - type: object
                  required:
                    - depth
                  properties:
                    depth:
                      type: integer
                      description: >
                        Specify the hierarchy depth that should be scanned and
                        returned in the response. 


                        If no other payload properties are provided, the depth
                        is relative to the storage root. If this request
                        contains instructions about the slice of storage to be
                        previewed (using the path/database/table properties),
                        the depth will be applied relative to that storage
                        slice.


                        We recommend using a depth = 1 to ensure that only
                        small, relevant slices of storage are scanned.
                    database:
                      type: string
                      description: >
                        Name of the database from which you wish to fetch table
                        names or collections. 


                        Relevant for Database and NoSql document-type
                        connectors. 
                    table:
                      type: string
                      description: >
                        Name of the table of which you wish to fetch the column
                        structure. 


                        Relevant for database-type connectors.
      responses:
        '200':
          $ref: '#/components/responses/probe_tree'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
  /data_credentials/{credential_id}/probe/sample:
    post:
      tags:
        - Credentials
      operationId: preview_connector_content
      summary: Preview Connector Content
      description: >
        Use this endpoint to preview the data content in a storage system.


        1. For file systems, this can be used to preview the file content of any
        specific file. 

        2. For database systems, it can be used to preview sample rows from a
        table or query result. 

        3. For the rest connector, it can be used to preview the results of any
        API request.

        4. For streaming connectors, it can be used to preview some records in a
        topic.


        For most connectors, it can also be used to determine the type of
        records that might be detected in the resulting Nexset.
      parameters:
        - name: credential_id
          in: path
          description: The unique ID of the credential being used.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    path:
                      type: string
                      description: >
                        __For file type connectors__: Set the path to the file
                        from which you wish to preview content.
                - type: object
                  additionalProperties:
                    type:
                      - string
                      - object
                      - number
                      - array
                    x-additionalPropertiesName: connector_source_config_property
                    description: >
                      __For Rest, Database, Soap, and Stream Connectors__: Add
                      all properties from the connector `source_config`.    
      responses:
        '200':
          $ref: '#/components/responses/probe_sample'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
  /flows:
    get:
      tags:
        - Flows
      operationId: get_flows
      summary: Get All Flows
      description: |
        Returns all flows accessible to the authenticated user.
      parameters:
        - name: flows_only
          in: query
          schema:
            type: integer
            enum:
              - 1
            description: >
              By default, flows responses include sub-lists of the resources
              included in the `flows`, such as `data_sources`, `data_sets` and
              `data_sinks`. If you do not need resource details and just need
              flow chain, include the `flows_only` query parameter in your
              request. This option can improve request response time
              significantly.
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/per_page'
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsMany'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /flows/{flow_id}:
    get:
      tags:
        - Flows
      summary: Get Flow by ID
      description: |
        Returns a flow object if a valid flow ID is provided.
      operationId: get_flow_by_id
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the flow that needs to be fetched.
          required: true
          schema:
            type: integer
        - name: flows_only
          in: query
          schema:
            type: integer
            enum:
              - 1
            description: >
              By default, flows responses include sub-lists of the resources
              included in the `flows`, such as `data_sources`, `data_sets` and
              `data_sinks`. If you do not need resource details and just need
              flow chain, include the `flows_only` query parameter in your
              request. This option can improve request response time
              significantly.
                      
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
    delete:
      tags:
        - Flows
      summary: Delete a Flow
      description: Deletes a flow from your Nexla account.
      operationId: delete_flow
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the flow that needs to be deleted.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '404':
          description: Not found error
  /flows/{flow_id}/activate:
    put:
      tags:
        - Flows
      operationId: flow_activate_with_flow_id
      summary: Activate a Flow
      description: >
        To activate the entire flow, use either the `origin_node_id` from any
        data source, set or sink in the flow, or include the ?all=1 or
        ?full_tree=1 query parameter.
          
        >**Note**: 

        > 1. All endpoints for activating or pausing a flow operate on the
        specific resource given and all of the flow nodes downstream from that
        resource. This allows for pausing and activating sub-flows while leaving
        the rest of the flow state unchanged.

        > 

        >  2. You can also activate a flow by using the id of the `data_source`/
        `data_set` / `data_sink` that the flow node is linked to. See relevant
        endpoints in the API references for those resources.  
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the flow that needs to be activated.
          required: true
          schema:
            type: integer
        - name: all
          in: path
          description: >
            Set this query parameter if the flow node ID you are making a call
            with is not an origin flow node but you want to activate the full
            flow chain.

            Not necessary if the flow node is an origin flow node.
          schema:
            type: integer
            enum:
              - 1
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /flows/{flow_id}/pause:
    put:
      tags:
        - Flows
      operationId: flow_pause_with_flow_id
      summary: Pause a Flow
      description: >
        To pause the entire flow, use either the `origin_node_id` from any data
        source, set or sink in the flow, or include the ?all=1 or ?full_tree=1
        query parameter.
          
        >**Note**: 

        > 1. All endpoints for activating or pausing a flow operate on the
        specific resource given and all of the flow nodes  downstream from that
        resource. This allows for pausing and activating sub-flows while leaving
        the rest of the flow state unchanged.

        > 

        >  2. You can also pause a flow by using the id of the `data_source`/
        `data_set` / `data_sink` that the flow node is linked to. See relevant
        endpoints in the API references for those resources.    
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the flow that needs to be paused.
          required: true
          schema:
            type: integer
        - name: all
          in: path
          description: >
            Set this query parameter if the flow node ID you are making a call
            with is not an origin flow node but you want to pause the full flow
            chain.

            Not necessary if the flow node is an origin flow node.
          schema:
            type: integer
            enum:
              - 1
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /flows/{flow_id}/copy:
    post:
      tags:
        - Flows
      operationId: flow_copy_with_flow_id
      summary: Copy a Flow
      description: |
        Use this endpoint to create a copy of an existing flow. 
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the flow that needs to be paused.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              type: object
              properties:
                reuse_data_credentials:
                  type: boolean
                  description: >
                    Set this to `true` if you do want to reuse the credentials
                    of this flow instead of creating a clone of the credentials
                    also.
                copy_access_controls:
                  type: boolean
                  description: >
                    Set this to `true` if you want the new flow to be accessible
                    by all users who have access to the this flow. 
                copy_dependent_data_flows:
                  type: boolean
                  description: >
                    This is relevant for flows where one or more destinations
                    have sources as their children. Set this to `true` if you
                    want to create a clone of the flows that originate from
                    those sources also. 
                owner_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new flow in the
                    account of the authenticated user making this call. Set this
                    property if you want a different user to be the owner of the
                    new flow.
                org_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new flow in the
                    org that the authenticated user making this call belongs to.
                    Set this property if you want the flow to be created in a
                    different org.
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /{resource_type}/{resource_id}/flow:
    get:
      tags:
        - Flows
      operationId: get_flow_by_resource_id
      summary: Get Flow (by Resourcce ID)
      description: >
        Returns a flow object if a valid resource type and resource ID is
        provided.


        > Note: This is a variant of flow endpoints where the flow node can
        referenced not by its own ID, but by the ID of the unique resource that
        is linked to that flow node.      
      parameters:
        - name: resource_type
          in: path
          description: >
            The type of node linked to the flow you want to reference. For ex,
            set this to `data_sources` if you want to refer to the flow
            originating in a `data_source`.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >-
            The unique id of the resource whose flow you want to reference.  For
            ex, set this to id of the `data_source` if you want to refer to the
            flow originating in a specific `data_source`.
          required: true
          schema:
            type: integer
        - name: flows_only
          in: query
          schema:
            type: integer
            enum:
              - 1
            description: >
              By default, flows responses include sub-lists of the resources
              included in the `flows`, such as `data_sources`, `data_sets` and
              `data_sinks`. If you do not need resource details and just need
              flow chain, include the `flows_only` query parameter in your
              request. This option can improve request response time
              significantly.
                      
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
    delete:
      tags:
        - Flows
      operationId: delete_flow_by_resource_id
      summary: Delete a Flow (by Resourcce ID)
      description: >
        Deletes a flow from your Nexla account.


        > Note: This is a variant of flow endpoints where the flow node can
        referenced not by its own ID, but by the ID of the unique resource that
        is linked to that flow node.
      parameters:
        - name: resource_type
          in: path
          description: >
            The type of node linked to the flow you want to reference. For ex,
            set this to `data_sources` if you want to refer to the flow
            originating in a `data_source`.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >-
            The unique id of the resource whose flow you want to reference.  For
            ex, set this to id of the `data_source` if you want to refer to the
            flow originating in a specific `data_source`.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '404':
          description: Not found error
  /{resource_type}/{resource_id}/activate:
    put:
      tags:
        - Flows
      operationId: flow_activate_with_resource_id
      summary: Activate a Flow (with Resource ID)
      description: >
        To activate the entire flow include the ?all=1 or ?full_tree=1 query
        parameter.
          
        >**Note**: 

        > 1. All endpoints for activating or pausing a flow operate on the
        specific resource given and all of the flow nodes downstream from that
        resource. This allows for pausing and activating sub-flows while leaving
        the rest of the flow state unchanged.

        > 2. This is a variant of flow endpoints where the flow node can
        referenced not by its own ID, but by the ID of the unique resource that
        is linked to that flow node.
      parameters:
        - name: resource_type
          in: path
          description: >
            The type of node linked to the flow you want to reference. For ex,
            set this to `data_sources` if you want to refer to the flow
            originating in a `data_source`.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >
            The unique id of the resource whose flow you want to reference.  For
            ex, set this to id of the `data_source` if you want to refer to the
            flow originating in a specific `data_source`.
          required: true
          schema:
            type: integer
        - name: all
          in: path
          description: >
            Set this query parameter if the resource ID you are making a call
            with is not an origin flow node but you want to activate the full
            flow chain.

            Not necessary if the flow node is an origin flow node.
          schema:
            type: integer
            enum:
              - 1
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /{resource_type}/{resource_id}/pause:
    put:
      tags:
        - Flows
      operationId: flow_pause_with_resource_id
      summary: Pause a Flow (with Resource ID)
      description: >
        To pause the entire flow include the entire flow include the ?all=1 or
        ?full_tree=1 query parameter.
          
        >**Note**: 

        > 1. All endpoints for activating or pausing a flow operate on the
        specific resource given and all of the flow nodes  downstream from that
        resource. This allows for pausing and activating sub-flows while leaving
        the rest of the flow state unchanged.

        > 

        > 2. This is a variant of flow endpoints where the flow node can
        referenced not by its own ID, but by the ID of the unique resource that
        is linked to that flow node.    
      parameters:
        - name: resource_type
          in: path
          description: >
            The type of node linked to the flow you want to reference. For ex,
            set this to `data_sources` if you want to refer to the flow
            originating in a `data_source`.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >-
            The unique id of the resource whose flow you want to reference.  For
            ex, set this to id of the `data_source` if you want to refer to the
            flow originating in a specific `data_source`.
          required: true
          schema:
            type: integer
        - name: all
          in: path
          description: >
            Set this query parameter if the flow node ID you are making a call
            with is not an origin flow node but you want to pause the full flow
            chain.

            Not necessary if the flow node is an origin flow node.
          schema:
            type: integer
            enum:
              - 1
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/FlowsOne'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources:
    get:
      tags:
        - Sources
      operationId: get_data_sources
      summary: Get All Sources
      description: |
        Returns all data sources accessible to the authenticated user.
      externalDocs:
        description: Nexla Rest API guide for Data Sources
        url: |
          https://developers.nexla.com/docs/data-sources#list-all-sources 
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_many'
        '403':
          description: Forbidden
        '404':
          description: Not found
    post:
      tags:
        - Sources
      operationId: create_data_source
      summary: Create a Source
      description: >
        Creates a new data source in the authenticated user's account. 


        Depending on the type of source you want to create (`source_type`),
        properties like `source_config` and `data_credentials_id` will require
        appropriate configuration. 


        > Note: `name`, `source_type`, `source_config` and `data_credentials_id`
        are required.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/data_source'
                - required:
                    - name
                    - source_type
                    - source_config
                    - data_credentials_id
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '400':
          description: Unauthorized
  /data_sources/{source_id}:
    get:
      tags:
        - Sources
      summary: Get Source by ID
      description: |
        Returns a source object if a valid ID is provided.
      operationId: get_data_source
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
    put:
      tags:
        - Sources
      operationId: update_data_source
      summary: Update a Source
      description: >
        Updates a data source in the authenticated user's account. 


        Depending on the type of source you want to update (`source_type`),
        properties like `source_config` and `data_credentials_id` will require
        appropriate configuration.


        > Note: This method does not perform partial updating of
        `source_config`. The entire `source_config` object will be updated if
        this is added to the payload.
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be updated.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/data_source'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '400':
          description: Unauthorized
    delete:
      tags:
        - Sources
      summary: Delete a Source
      description: Deletes a source from your Nexla account.
      operationId: delete_data_source
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be deleted.
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '404':
          description: Not found error
  /data_sources/{source_id}?expand=1:
    get:
      tags:
        - Sources
      operationId: get_data_source_expanded
      summary: Get Source by ID with Expanded References
      description: >
        Returns a source object along with advanced information about associated
        references if a valid ID is provided.
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be fetched
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one_expand'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources/{source_id}/activate:
    put:
      tags:
        - Sources
      operationId: activate_source
      summary: Activate a Source
      description: |
        Activate a paused data source.  
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be activated.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources/{source_id}/pause:
    put:
      tags:
        - Sources
      operationId: pause_source
      summary: Pause a Source
      description: |
        Pause an active data source.  
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be paused.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources/{source_id}/copy:
    post:
      tags:
        - Sources
      operationId: copy_source
      summary: Copy a Source
      description: |
        Use this endpoint to create a copy of an existing flow. 
      parameters:
        - name: source_id
          in: path
          description: The unique ID of the source that needs to be copied.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              type: object
              properties:
                reuse_data_credentials:
                  type: boolean
                  description: >
                    Set this to `true` if you do want to reuse the credentials
                    of this source instead of creating a clone of the
                    credentials also.
                copy_access_controls:
                  type: boolean
                  description: >
                    Set this to `true` if you want the new source to be
                    accessible by all users who have access to the this sink.  
                owner_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new source in the
                    account of the authenticated user making this call. Set this
                    property if you want a different user to be the owner of the
                    new source.
                org_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new source in the
                    org that the authenticated user making this call belongs to.
                    Set this property if you want the source to be created in a
                    different org.
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sets:
    get:
      tags:
        - Nexsets (Data Sets)
      operationId: get_nexsets
      summary: Get All Nexsets
      description: |
        Retrieves all Nexsets accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_many'
        '401':
          description: Unauthorized
    post:
      tags:
        - Nexsets (Data Sets)
      operationId: create_nexset
      summary: Create a Nexset
      description: >
        Creates a Nexset from another Nexset.


        The endpoint accepts a parent Nexset ID along with all transform and
        validation rules that should be applied to the parent Nexset. 


        The two payload variants reflect the following two ways of specifying
        transform rules: 

        1. Attach the transform code that should be applied: Set
        `has_custom_transform: false`, and attach a `transform` code snippet. 

        2. Use the ID of a reusable record transform: Set `has_custom_transform:
        false`, and attach the `transform_id` of the record transform to be
        applied.
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/DataSetCreate'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_one'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /data_sets/{set_id}:
    get:
      tags:
        - Nexsets (Data Sets)
      operationId: get_nexset
      summary: Get a Nexset
      description: |
        Returns a Nexset object if a valid ID is provided.
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
    put:
      tags:
        - Nexsets (Data Sets)
      operationId: update_nexset
      summary: Update a Nexset
      description: |
        Updates a Nexset in the authenticated user's account.
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset to be updated.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/DataSetMutable'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Nexsets (Data Sets)
      summary: Delete a Nexset
      description: Deletes a Nexset from the authenticated user's account.
      operationId: delete_nexset
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset that needs to be deleted.
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sets/{set_id}/activate:
    put:
      tags:
        - Nexsets (Data Sets)
      operationId: activate_nexset
      summary: Activate Nexset
      description: |
        Activates a paused Nexset.
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset that needs to be activated.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sets/{set_id}/pause:
    put:
      tags:
        - Nexsets (Data Sets)
      operationId: pause_nexset
      summary: Pause Nexset
      description: |
        Pauses an active Nexset.
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset that needs to be paused.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sets/{set_id}/copy:
    post:
      tags:
        - Nexsets (Data Sets)
      operationId: copy_nexset
      summary: Copy Nexset
      description: |
        Use this endpoint to create a clone of an existing Nexset.
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset that needs to be copied.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              type: object
              properties:
                copy_access_controls:
                  type: boolean
                  description: >
                    Set this to `true` if you want the new Nexset to be
                    accessible by all users who have access to the this
                    Nexset.  
                owner_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new Nexset in the
                    account of the authenticated user making this call. Set this
                    property if you want a different user to be the owner of the
                    new Nexset.
                org_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new Nexset in the
                    org that the authenticated user making this call belongs to.
                    Set this property if you want the Nexset to be created in a
                    different org.
      responses:
        '200':
          $ref: '#/components/responses/data_sets_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sets/{set_id}/samples:
    get:
      tags:
        - Nexsets (Data Sets)
      operationId: get_nexet_samples
      summary: Get Nexset Samples
      description: >
        Use this endpoint to fetch some sample records from this Nexset. Use the
        relevant query parameters to control whether the samples returned are
        from the live Nexset topic or the Nexset sample cache.
      parameters:
        - name: set_id
          in: path
          description: The unique ID of the Nexset that needs to be fetched.
          required: true
          schema:
            type: integer
        - name: count
          in: query
          description: >-
            The maximum number of samples that should be returned in the
            response.
          schema:
            type: integer
        - name: include_metadata
          in: query
          description: >-
            Set this to true to fetch Nexla metadata about each sample record
            along with the record content.
          schema:
            type: boolean
        - name: include_metadata
          in: query
          description: >-
            Set this to true to fetch Nexla metadata about each sample record
            along with the record content.
          schema:
            type: boolean
        - name: live
          in: query
          description: Set this to true to fetch live sample records from the Nexset topic.
          schema:
            type: boolean
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sets_sample'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sinks:
    get:
      tags:
        - Destinations (Data Sinks)
      operationId: get_data_sinks
      summary: Get All Sinks
      description: |
        Retrieves all data sinks accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sink_many'
        '403':
          description: Forbidden
        '404':
          description: Not found
    post:
      tags:
        - Destinations (Data Sinks)
      operationId: create_data_sink
      summary: Create a Sink
      description: >
        Creates a Nexla data_sink with the specified configuration in your Nexla
        account.


        > Note: `name` ,`data_set_id`, `sink_type`, `sink_config` and
        `data_credentials_id` are required. 
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/data_sink'
                - required:
                    - name
                    - sink_type
                    - sink_config
                    - data_credentials_id
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one'
        '400':
          description: Unauthorized
  /data_sinks/{sink_id}:
    get:
      tags:
        - Destinations (Data Sinks)
      operationId: get_data_sink
      summary: Get Sink by ID
      description: |
        Returns a data_sink object if a valid ID is provided.
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one'
        '403':
          description: Forbidden
        '404':
          description: Not found error
    put:
      tags:
        - Destinations (Data Sinks)
      operationId: update_data_sink
      summary: Update Sink
      description: >
        Updates a data_sink object in the authenticated user's account.


        > Note: This method does not perform partial updating of the
        `sink_config` object. The entire `sink_config` object will be updated if
        this is added to the payload.  
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/data_sink'
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one'
        '403':
          description: Forbidden
        '404':
          description: Not found error
    delete:
      tags:
        - Destinations (Data Sinks)
      summary: Delete a Sink
      description: Deletes a sink from your Nexla account.
      operationId: delete_data_sink
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be deleted.
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '404':
          description: Not found error
  /data_sinks/{sink_id}?expand=1:
    get:
      tags:
        - Destinations (Data Sinks)
      operationId: get_data_sink_expanded
      summary: Get Sink by ID with Expanded References
      description: >-
        Returns a data_sink object along with advanced information about
        associated references if a valid ID is provided.
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one_expand'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /data_sinks/{sink_id}/activate:
    put:
      tags:
        - Destinations (Data Sinks)
      operationId: activate_data_sink
      summary: Activate a Sink
      description: |
        Activate a paused data sink.  
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be activated.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sinks/{sink_id}/pause:
    put:
      tags:
        - Destinations (Data Sinks)
      operationId: pause_data_sink
      summary: Pause a Sink
      description: |
        Pause an active data sink.  
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be paused.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sinks/{sink_id}/copy:
    post:
      tags:
        - Destinations (Data Sinks)
      operationId: copy_data_sinksource
      summary: Copy a Sink
      description: |
        Use this endpoint to create a copy of an existing data sink. 
      parameters:
        - name: sink_id
          in: path
          description: The unique ID of the sink that needs to be copied.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              type: object
              properties:
                reuse_data_credentials:
                  type: boolean
                  description: >
                    Set this to `true` if you do want to reuse the credentials
                    of this sink instead of creating a clone of the credentials
                    also.
                copy_access_controls:
                  type: boolean
                  description: >
                    Set this to `true` if you want the new sink to be accessible
                    by all users who have access to the this sink.  
                owner_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new sink in the
                    account of the authenticated user making this call. Set this
                    property if you want a different user to be the owner of the
                    new sink.
                org_id:
                  type: integer
                  description: >
                    The default API behavior is to create the new sink in the
                    org that the authenticated user making this call belongs to.
                    Set this property if you want the sink to be created in a
                    different org.
      responses:
        '200':
          $ref: '#/components/responses/data_sink_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_maps:
    get:
      tags:
        - Data Maps
      operationId: get_data_maps
      summary: Get all Data Maps
      description: |
        Retrieves all lookups (data maps) accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_maps_many'
        '403':
          description: Forbidden
    post:
      tags:
        - Data Maps
      operationId: create_static_data_map
      summary: Create a Static Data Map
      description: >
        Creates a new static data map in the authenticated user's account.
        Dynamic data maps can only be created by creating a Destination (Sink)
        of the type `data_map`. 


        For statically assigned data maps, you can choose to add data rows to
        the data map by either of the following methods:

        1. Send data map entries with this request. In this case, the rows of
        data are sent as a `data_map` array of objects.

        2. Send data map entries as a separate call to add/update entries. 


        You must include `map_primary_key` to specify which map attribute should
        be used for data matching.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataMapCreate'
      responses:
        '200':
          $ref: '#/components/responses/data_maps_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /data_maps/{data_map_id}:
    get:
      tags:
        - Data Maps
      operationId: get_data_map
      summary: Get Data Map by ID
      description: >
        Retrieves a data map object if a valid ID is provided.


        This call to `/data_maps` **does not** return data map entries, as they
        can be a large array of objects for big data maps. 


        You can include the `expand` query parameter to fetch the data map
        entries of smaller static data maps.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
        - $ref: '#/components/parameters/expand'
      responses:
        '200':
          $ref: '#/components/responses/data_maps_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Data Maps
      operationId: update_data_map_metadata
      summary: Update Data Map Metadata
      description: >
        Updates a data map in the authenticated user's account.


        This endpoint is suitable for updating the metadata of a data map. We
        recommend using the data map entries update and delete endpoints to
        update data map rows.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map that needs to be updated.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataMapMutable'
      responses:
        '200':
          $ref: '#/components/responses/data_maps_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Data Maps
      operationId: delete_data_map
      summary: Delete a Data Map
      description: |
        Deletes a data map from your Nexla account.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map that needs to be deleted.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_maps/{data_map_id}/entries:
    put:
      tags:
        - Data Maps
      operationId: upsert_data_map_entries
      summary: Upsert Static Data Map Entries
      description: >
        Updates the entries in a static data map. Use this endpoint to add new
        entries or update the row corresponding to a specific key.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_map_id
          in: path
          description: The unique ID of the data map that needs to be updated.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                entries:
                  type: array
                  description: >
                    Enter the array of data map entries that you wish to upsert.
                    This call will result in an upsert on the data map, i.e.,
                    new rows will be added for keys not present in the data map,
                    and relevant rows will be updated for keys that are already
                    present.
                  items:
                    type: object
                    additionalProperties:
                      type:
                        - string
                        - number
                      x-additionalPropertiesName: data_map_key
                      description: >
                        Each property in this object should be keyed by the
                        desired key name, and the value should be equal to the
                        desired value of that key.
                    example:
                      OrderNo: '1002'
                      Price: '40.38'
                      key: '1002_4'
                      ItemNo: '4'
                      Qty: '10000'
      responses:
        '200':
          $ref: '#/components/responses/data_map_entries'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /date_maps/{data_map_id}/entries/{entry_keys}:
    get:
      tags:
        - Data Maps
      operationId: check_data_map_entries
      summary: Check Data Map Entries
      description: >
        Returns the rows of data from the data map that matches a desired key or
        key pattern.


        This endpoint can be used to check whether the data map contains rows of
        data that match the desired key, keys, or key patterns. Key names should
        be provided in the path in the format described below.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_map_id
          in: path
          description: The unique ID of the data map that needs to be fetched.
          required: true
          schema:
            type: integer
        - name: entry_keys
          in: path
          description: >
            One or more comma-separated keys for accessing data map entries.
            These keys may contain simple matching expressions with `*` wildcard
            characters. The response will contain entries whose primary key
            values match the pattern.
          required: true
          schema:
            type:
              - string
              - integer
      responses:
        '200':
          $ref: '#/components/responses/data_map_entries'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Data Maps
      operationId: delete_data_map_entries
      summary: Delete Data Map Entries
      description: |
        Deletes specific entries from the data map.

        Use this endpoint to remove specific entries from the data map.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_map_id
          in: path
          description: The unique ID of the data map that needs to be fetched.
          required: true
          schema:
            type: integer
        - name: entry_keys
          in: path
          description: >
            One or more comma-separated keys for accessing access data map
            entries. These keys may contain simple matching expressions with `*`
            wildcard characters. 
          required: true
          schema:
            type:
              - string
              - integer
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /transforms:
    get:
      tags:
        - Transforms
      operationId: get_reusable_record_transforms
      summary: Get all Reusable Record Transforms
      description: >
        Reusable record transforms are reusable code blocks that can be used to
        modify an input record of a Nexset into an output record of that Nexset.

        Use this endpoint to fetch all reusable record transforms.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/Transform'
        '403':
          description: Forbidden
    post:
      tags:
        - Transforms
      operationId: create_reusable_record_transform
      summary: Create a Reusable Record Transform
      description: |
        Create a new reusable record transform. 
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransformMutable'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_one_Transform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /transforms/{transform_id}:
    get:
      tags:
        - Transforms
      operationId: get_reusable_record_transform
      summary: Get A Reusable Record Transform
      description: |
        Returns a reusable record transform object if a valid ID is provided.
      parameters:
        - name: transform_id
          in: path
          description: The unique ID of the transform that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_one_Transform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
    put:
      tags:
        - Transforms
      operationId: update_reusable_record_transform
      summary: Update Reusable Record Transform
      description: |
        Updates a transform in the authenticated user's account.
      parameters:
        - name: transform_id
          in: path
          description: The unique ID of the transform that needs to be updated.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeContainerMutable'
      responses:
        '200':
          $ref: '#/components/responses/CodeContainer'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
    delete:
      tags:
        - Transforms
      operationId: delete_reusable_record_transform
      summary: Delete a Reusable Record Transform
      description: |
        Use this endpoint to delete a reusable record transform.
      parameters:
        - name: transform_id
          in: path
          description: The unique ID of the transform that needs to be deleted.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /transforms/{transform_id}/copy:
    post:
      tags:
        - Transforms
      operationId: copy_transform
      summary: Copy a Reusable Record Transform
      description: >
        Use this endpoint to create a copy of an existing reusable record
        transform. 
      parameters:
        - name: transform_id
          in: path
          description: The unique ID of the transform to be copied.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_one_Transform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /transforms/public:
    get:
      tags:
        - Transforms
      operationId: get_public_reusable_record_transforms
      summary: Get all Public Reusable Record Transforms
      description: >
        The Nexla team regularly adds common reusable record transforms that are
        made available to all Nexla accounts. 


        Use this endpoint to fetch all such "publicly" available reusable record
        transforms.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/Transform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /attribute_transforms:
    get:
      tags:
        - Transforms
      operationId: get_attribute_transforms
      summary: Get all Attribute Transforms
      description: >
        Reusable attribute transforms are reusable code blocks that can be used
        to define the value of an output attribute in a Nexset. These code
        blocks can be used to enhance the set of transforms available to end
        users when using the Nexset Designer.


        Use this endpoint to fetch all attribute transforms accessible to the
        authenticated user.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/AttributeTransform'
        '403':
          description: Forbidden
    post:
      tags:
        - Transforms
      operationId: create_attribute_transform
      summary: Create an Attribute Transform
      description: |
        Create a new attribute transform.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttributeTransformMutable'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_one_AttributeTransform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /attribute_transforms/{attribute_transform_id}:
    get:
      tags:
        - Transforms
      operationId: get_attribute_transform
      summary: Get Attribute Transform by ID
      description: |
        Returns an attribute transform object if a valid ID is provided.
      parameters:
        - name: attribute_transform_id
          in: path
          description: The unique ID of the attribute transform that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_one_AttributeTransform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
    put:
      tags:
        - Transforms
      operationId: update_attribute_transform
      summary: Update Attribute Transform
      description: |
        Updates an attribute transform in the authenticated user's account.
      parameters:
        - name: attribute_transform_id
          in: path
          description: The unique ID of the attribute transform.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttributeTransformMutable'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_one_AttributeTransform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
    delete:
      tags:
        - Transforms
      operationId: delete_attribute_transform
      summary: Delete an Attribute Transform
      description: Deletes an attribute transform from your Nexla account.
      parameters:
        - name: attribute_transform_id
          in: path
          description: The unique ID of the attribute transform that needs to be deleted.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /attribute_transforms/public:
    get:
      tags:
        - Transforms
      operationId: get_public_attribute_transforms
      summary: Get all Public Attribute Transforms
      description: >
        The Nexla team regularly adds common reusable attribute transforms that
        are made available to all Nexla accounts. 


        Use this endpoint to fetch all such "publicly" available reusable
        attribute transforms.    
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/AttributeTransform'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /code_containers/public:
    get:
      tags:
        - Code Containers
      operationId: get_public_code_containers
      summary: Get all Public Code Containers
      description: >
        The Nexla team regularly adds common code containers that are made
        available to all Nexla accounts. 


        Use this endpoint to fetch all such "publicly" available code
        containers.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/code_containers_many_CodeContainer'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /orgs:
    get:
      tags:
        - Organizations
      operationId: get_orgs
      summary: Get all Organizations
      description: |
        Returns all organizations accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/orgs_many'
        '403':
          description: Forbidden
  /orgs/{org_id}:
    get:
      tags:
        - Organizations
      operationId: get_org
      summary: Get Organization by ID
      description: |
        Returns an organization if a valid ID is provided.
      parameters:
        - name: org_id
          in: path
          description: The unique ID of the organization that needs to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/orgs_one'
        '403':
          description: Forbidden
    put:
      tags:
        - Organizations
      operationId: update_org
      summary: Update an Organization
      description: |
        Updates properties of an organization.
      parameters:
        - name: org_id
          in: path
          description: The unique ID of the organization that needs to be updated.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrgsUpdate'
      responses:
        '200':
          $ref: '#/components/responses/orgs_one'
        '403':
          description: Forbidden
  /orgs/{org_id}/members:
    get:
      tags:
        - Organizations
      operationId: get_org_members
      summary: Get All Members in Organization
      description: |
        Retrieves a list of all users in an organization.
      parameters:
        - name: org_id
          in: path
          description: The unique ID of the organization.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/org_members'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Organizations
      operationId: update_org_members
      summary: Update Organization Members
      description: >
        Add or update members in an organization. This endpoint can also be used
        to modify an existing member's role in the organization.


        When adding a new member using their email id, if a user account for
        that email id does not exist on the platform then a new user account
        will be created. If the user already exists on the platform as a member
        of a different organization then their membership will get updated to
        include this organization also.
      parameters:
        - name: org_id
          in: path
          description: The unique ID of the organization.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/OrgMemberList'
      responses:
        '200':
          $ref: '#/components/responses/org_members'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Organizations
      operationId: delete_org_members
      summary: Remove Members from an Organization.
      description: >
        Removes one or more members from the organization. Note that this will
        not delete the user account from the platform, but will remove the
        user's ability to access this organization's resources.
      parameters:
        - name: org_id
          in: path
          description: The unique ID of the organization.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/OrgMemberDelete'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /teams:
    get:
      tags:
        - Teams
      operationId: get_teams
      summary: Get all Teams
      description: |
        Returns all teams accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/teams_many'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      tags:
        - Teams
      operationId: create_team
      summary: Create a team
      description: |
        Creates a team with the specified configuration and members.
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/TeamCreate'
      responses:
        '200':
          $ref: '#/components/responses/teams_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /teams/{team_id}:
    get:
      tags:
        - Teams
      operationId: get_team
      summary: Get Team by ID
      description: |
        Returns a team if a valid ID is provided.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/teams_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Teams
      operationId: update_team
      summary: Modify a Team
      description: >
        Modifies a team's information and settings if a valid ID and body are
        provided.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/TeamMutable'
      responses:
        '200':
          $ref: '#/components/responses/teams_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Teams
      operationId: delete_team
      summary: Delete Team by ID
      description: |
        Deletes a team if a valid ID is provided.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /teams/{team_id}/members:
    get:
      tags:
        - Teams
      operationId: get_team_members
      summary: Get Team Members
      description: |
        Returns a list of the members belonging to a team.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/team_members'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Teams
      operationId: replace_team_members
      summary: Replace Team Members List
      description: >
        Replaces the list of members belonging to a team. Existing members will
        be removed from the team.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/TeamMemberList'
      responses:
        '200':
          $ref: '#/components/responses/team_members'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Teams
      operationId: add_team_members
      summary: Add Members to A Team
      description: >
        Adds a list of members to a team. The existing list of members will be
        retained and merged with the new list of members.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/TeamMemberList'
      responses:
        '200':
          $ref: '#/components/responses/team_members'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Teams
      operationId: delete_team_members
      summary: Remove Team Members
      description: >
        Removes members from a team. If no request body is provided, all members
        belonging to the team will be removed.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of members.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/TeamMemberList'
      responses:
        '200':
          $ref: '#/components/responses/team_members'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /projects:
    get:
      tags:
        - Projects
      operationId: get_projects
      summary: Get all Projects
      description: |
        Retrieves a list of all projects accessible to the authenticated user.
      parameters:
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/projects_many'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      tags:
        - Projects
      operationId: create_project
      summary: Create a project
      description: >
        Creates a project with the specified configuration. Note that flows can
        also be attached to the project later by calling endpoints to update the
        project.
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectCreate'
      responses:
        '200':
          $ref: '#/components/responses/projects_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /projects/{project_id}:
    get:
      tags:
        - Projects
      operationId: get_project
      summary: Get Project by ID
      description: |
        Returns a project if a valid ID is provided.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/projects_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Projects
      operationId: delete_project
      summary: Delete Project by ID
      description: >
        Deletes a project if a valid ID is provided. Note that flows belonging
        to the project will only be removed from the project and will not be
        deleted.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Projects
      operationId: update_project
      summary: Modify a Project
      description: >
        Modifies a project's information and settings if a valid ID and body are
        provided.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectMutable'
      responses:
        '200':
          $ref: '#/components/responses/projects_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /projects/{project_id}/flows:
    get:
      tags:
        - Projects
      operationId: get_project_flows
      summary: Get Project Flows
      description: |
        Returns a list of flows belonging to a project.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/FlowsMany'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Projects
      operationId: replace_project_flows
      summary: Replace Project Flows List
      description: >
        Replaces the list of flows belonging to a project. Existing flows are
        removed from the project.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectFlowListFlowNodes'
      responses:
        '200':
          $ref: '#/components/responses/FlowsMany'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Projects
      operationId: add_project_flows
      summary: Add Flows to Project
      description: >
        Adds a list of flows to a project. The existing flow list is retained
        and merged with the new flow list.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectFlowListFlowNodes'
      responses:
        '200':
          $ref: '#/components/responses/FlowsMany'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Projects
      operationId: remove_project_flows
      summary: Remove Flows From A Project
      description: >
        Removes data flows from a project. If no request body is provided, all
        flows belonging to the project will be removed. The flows themselves
        will not be deleted, but they will no longer belong to the project.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        description: >-
          Optional list of flow identifiers. Data flows must be referenced by
          the resource associated with them in the GET response.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectFlowListFlowNodes'
      responses:
        '200':
          $ref: '#/components/responses/FlowsMany'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /projects/{project_id}/data_flows:
    get:
      tags:
        - Projects
      operationId: get_project_flows_(deprecated)
      summary: Get Project Flows (Deprecated)
      description: >
        Returns a list of flows belonging to a project.


        > **Note**: This version of the endpoint has been deprecated. The
        returned flow response does not reference the new unique flow ids,
        instead references composite data flow ids of the type
        `{resource_type}/{resource_id}`. See get_project_flows for a new version
        of this endpoint that references unique `flow_id`.   
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/ProjectFlowsOld'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Projects
      operationId: replace_project_flows_(deprecated)
      summary: Replace Project Flows List (Deprecated)
      description: >
        Replaces the list of flows belonging to a project. Existing flows are
        removed from the project.


        > **Note**: This version of the endpoint has been deprecated. The
        request body and response does not reference flows with new unique
        flow_ids, instead references composite data flow ids of the type
        `{resource_type}/{resource_id}`. See replace_project_flows for a new
        version of this endpoint that references unique `flow_id`.   
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectFlowList'
      responses:
        '200':
          $ref: '#/components/responses/ProjectFlowsOld'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Projects
      operationId: add_project_flows_(deprecated)
      summary: Add Flows to Project (Deprecated)
      description: >
        Adds a list of flows to a project. The existing flow list is retained
        and merged with the new flow list.


        > **Note**: This version of the endpoint has been deprecated. The
        request body and response does not reference flows with new unique
        flow_ids, instead references composite data flow ids of the type
        `{resource_type}/{resource_id}`. See add_project_flows for a new version
        of this endpoint that references unique `flow_id`.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectFlowList'
      responses:
        '200':
          $ref: '#/components/responses/ProjectFlowsOld'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Projects
      operationId: remove_project_flows_(deprecated)
      summary: Remove Flows From A Project (Deprecated)
      description: >
        Removes data flows from a project. If no request body is provided, all
        flows belonging to the project will be removed. The flows themselves
        will not be deleted, but they will no longer belong to the project.


        > **Note**: This version of the endpoint has been deprecated. The
        request body and response does not reference flows with new unique
        flow_ids, instead references composite data flow ids of the type
        `{resource_type}/{resource_id}`. See remove_project_flows for a new
        version of this endpoint that references unique `flow_id`.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        description: >-
          Optional list of flow identifiers. Data flows must be referenced by
          the resource associated with them in the GET response.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/ProjectFlowList'
      responses:
        '200':
          $ref: '#/components/responses/ProjectFlowsOld'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /users:
    post:
      tags:
        - Users
      operationId: create_user
      summary: Create a User
      description: |
        Create a new user in this environment.

        > This requires admin access to the provided organization.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsersCreateRequired'
      responses:
        '200':
          $ref: '#/components/responses/users_one'
        '403':
          description: Forbidden
    get:
      tags:
        - Users
      operationId: get_users
      summary: Get All Users
      description: |
        Returns all users that can be viewed by authenticated user.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/users_many'
        '403':
          description: Forbidden
  /users?expand=1:
    get:
      tags:
        - Users
      operationId: get_users_expand
      summary: Get All Users with Expanded References
      description: |
        Returns all users that can be viewed by the authenticated user.
      parameters:
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/users_many_expand'
        '403':
          description: Forbidden
  /users/{user_id}:
    put:
      tags:
        - Users
      operationId: update_user
      summary: Modify a User
      description: >
        Modifies a user's information and settings if a valid ID and body are
        provided
      parameters:
        - name: user_id
          in: path
          description: The unique ID of the user.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsersUpdate'
      responses:
        '200':
          $ref: '#/components/responses/users_one'
        '403':
          description: Forbidden
    get:
      tags:
        - Users
      operationId: get_user
      summary: Get User by ID
      description: |
        Returns a user if a valid ID is provided.
      parameters:
        - name: user_id
          in: path
          description: The unique ID of the user.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/users_one'
        '403':
          description: Forbidden
  /users/{user_id}?expand=1:
    get:
      tags:
        - Users
      operationId: get_user_expand
      summary: Get User by ID with Expanded References
      description: |
        Returns a user if a valid ID is provided.
      parameters:
        - name: user_id
          in: path
          description: The unique ID of the user.
          required: true
          schema:
            type: integer
        - name: expand
          in: query
          description: Truthy parameter for requesting expanded references.
          required: true
          schema:
            oneOf:
              - type: integer
              - type: boolean
      responses:
        '200':
          $ref: '#/components/responses/users_one_expand'
        '403':
          description: Forbidden
  /notifications:
    get:
      operationId: get_notifications
      summary: Get All Notifications
      description: >
        Returns all notifications in the authenticated user's account. Note that
        this only includes notifications generated to be displayed in the Nexla
        UI.
      tags:
        - Notifications
      parameters:
        - name: read
          in: path
          description: >
            Set the read query parameter to 0 to fetch only notifications that
            have not yet been read, or set it to 1 to fetch only those that have
            been read.
          schema:
            type: integer
        - name: level
          in: query
          description: >
            Filter by level of notifications. Values are: 'DEBUG', 'INFO',
            'WARN', 'ERROR', 'RECOVERED', 'RESOLVED'."
          schema:
            type: string
            enum:
              - DEBUG
              - INFO
              - WARN
              - ERROR
              - RECOVERED
        - name: from
          in: query
          description: >
            Filter notifications starting from timestamp. Format is unix
            timestamp.
          schema:
            type: integer
        - name: to
          in: query
          description: |
            Filter notifications ending at timestamp. Format is unix timestamp.
          schema:
            type: integer
      responses:
        '200':
          description: Success
          $ref: '#/components/responses/notifications_many'
        '403':
          description: Forbidden
  /notifications/{notification_id}:
    get:
      tags:
        - Notifications
      operationId: get_notification
      summary: Get a Notification
      description: |
        Returns a notification if a valid ID is provided.
      parameters:
        - name: notification_id
          in: path
          description: The unique ID of the notification.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/notifications_one'
        '403':
          description: Forbidden
    delete:
      operationId: delete_notifications
      summary: Delete a Notification
      description: |
        Deletes a notification if a valid ID is provided.
      tags:
        - Notifications
      parameters:
        - name: notification_id
          in: path
          description: The unique ID of the notification.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
        '403':
          description: Forbidden
  /notifications/all:
    delete:
      operationId: delete_all_notifications
      summary: Delete All Notifications
      description: >
        Deletes all notifications belonging to the authenticated user. Note that
        this is only the list of notifications generated to be displayed in the
        Nexla UI.
      tags:
        - Notifications
      responses:
        '200':
          description: Success
        '403':
          description: Forbidden
  /notifications/count:
    get:
      operationId: get_notification_count
      summary: Get Notifications Count
      description: >
        Returns the total number of notifications in the authenticated user's
        account. Note that this only includes notifications generated to be
        displayed in the Nexla UI.
      tags:
        - Notifications
      parameters:
        - name: read
          in: path
          description: >-
            Set the read query parameter to 0 to fetch only notifications that
            have not yet been read, or set it to 1 to fetch only those that have
            been read. If you don't send a read query parameter, all
            notifications (both read and unread) will be fetched.
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/notifications_count'
        '403':
          description: Forbidden
  /notifications/mark_read:
    put:
      tags:
        - Notifications
      operationId: notifications_mark_read
      summary: Mark Notification Read
      description: >
        Use this endpoint to mark one, multiple, or all notifications as read.
        To mark a list of notifications, send an array of notification IDs as
        the payload. To mark all notifications, send the notification_id query
        parameter with the value `all`.
      parameters:
        - name: notification_id
          in: query
          description: >
            The unique ID of one or more notifications, or enter "all" to mark
            all notifications as read.

            This can be used in place of an array of IDs in the request body.
          required: false
          schema:
            oneOf:
              - type: string
                enum:
                  - all
              - type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: Accepts a JSON array of notification IDs.
              items:
                type: integer
      responses:
        '200':
          description: Success
        '403':
          description: Forbidden
  /notifications/mark_unread:
    put:
      tags:
        - Notifications
      operationId: notifications_mark_unread
      summary: Mark Notification Unread
      description: >
        Use this endpoint to mark one, multiple, or all notifications as read.
        To mark a list of notifications, send an array of notification IDs as
        the payload. To mark all notifications, send the notification_id query
        parameter with the value `all`.
      parameters:
        - name: notification_id
          in: query
          description: >
            The unique ID of one or more notifications, or enter "all" to mark
            all notifications as unread.

            This can be used in place of an array of IDs in the request body.
          required: false
          schema:
            oneOf:
              - type: string
                enum:
                  - all
              - type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: Accepts a JSON array of notification IDs.
              items:
                type: integer
      responses:
        '200':
          description: Success
        '403':
          description: Forbidden
  /notification_types:
    get:
      operationId: get_notification_types
      summary: Get All Notification Types
      description: >
        Fetches a list of all notifications supported by Nexla in this
        environment.


        When users choose whether or not some notifications are enabled, their
        choices are saved in `notification_settings` and linked to the ID of the
        relevant notification type.
      tags:
        - Notifications
      parameters:
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - ACTIVE
              - PAUSE
            description: >
              The status field indicates whether the environment is configured
              to generate these notifications. Usually, all notifications will
              be in the `ACTIVE` state. 
      responses:
        '200':
          $ref: '#/components/responses/notification_types_many'
        '403':
          description: Forbidden
  /notification_types/list:
    get:
      operationId: list_notification_type
      summary: Get One Notification Type
      description: >
        Fetches details about a specific notification type supported by Nexla in
        this environment.    
      tags:
        - Notifications
      parameters:
        - name: event_type
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/NotificationEventType'
        - name: resource_type
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/NotificationResourceType'
      responses:
        '200':
          $ref: '#/components/responses/notification_types_one'
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /notification_channel_settings:
    get:
      operationId: list_notification_channel_settings
      summary: List Notification Channel Settings
      description: >
        Notification channel settings contain configuration settings relevant to
        where notifications should be delivered. For example, the settings for
        the `EMAIL` channel contain the email addresses to which notifications
        can be sent.


        You can maintain multiple configuration settings for the same channel to
        route notifications for specific resources and types to different
        locations. 


        This endpoint lists all notification channel settings in the
        authenticated user's account.
      tags:
        - Notifications
      responses:
        '200':
          $ref: '#/components/responses/notification_channel_settings_many'
        '403':
          description: Forbidden
    post:
      operationId: create_notification_channel_setting
      summary: Create a Notification Channel Setting
      description: >
        Create a new configuration for a notification channel. 


        You can maintain multiple configuration settings for the same channel to
        route notifications for specific resources and types to different
        locations. 
      tags:
        - Notifications
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationChannelSettingCreateRequired'
      responses:
        '200':
          $ref: '#/components/responses/notification_channel_settings_one'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
  /notification_channel_settings/{notification_channel_setting_id}:
    get:
      tags:
        - Notifications
      operationId: get_notification_channel_setting
      summary: Get a Notification Channel Setting
      description: |
        Returns a notification channel setting if a valid ID is provided.
      parameters:
        - name: notification_channel_setting_id
          in: path
          description: The unique ID of the notification channel setting.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/notification_channel_settings_one'
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Notifications
      operationId: update_notification_channel_setting
      summary: Update a Notification Channel Setting
      description: |
        Update the configuration of a notification channel setting.
      parameters:
        - name: notification_channel_setting_id
          in: path
          description: The unique ID of the notification channel setting.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationChannelSettingUpdate'
      responses:
        '200':
          $ref: '#/components/responses/notification_channel_settings_one'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      operationId: delete_notification_channel_setting
      summary: Delete a Notification Channel Setting
      description: Deletes a notification channel setting if a valid ID is provided.
      tags:
        - Notifications
      parameters:
        - name: notification_channel_setting_id
          in: path
          description: The unique ID of the notification channel setting.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /notification_settings:
    get:
      operationId: list_notification_settings
      summary: List Notification Settings
      description: >
        This endpoint lists all notification settings in the authenticated
        user's account.



        Notification settings contain the following user settings:

        1. Whether the user wants to be notified about a specific event
        (`status` of a `notification_type` on a `notification_resource_type`)

        2. If yes, on what `channel` the user wants to be notified 

        3. The configuration of the channel (`notification_channel_setting_id`)

        4. Configuration parameters affect when the notification should be
        fired. This is usually left empty to use platform defaults, but it is
        relevant when users want to override the default settings of some
        notifications, such as `Source Data Delayed`  
      tags:
        - Notifications
      parameters:
        - name: event_type
          in: query
          schema:
            $ref: '#/components/schemas/NotificationEventType'
        - name: resource_type
          in: query
          schema:
            $ref: '#/components/schemas/NotificationResourceType'
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/NotificationSettingStatus'
      responses:
        '200':
          $ref: '#/components/responses/notification_settings_many'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
    post:
      operationId: create_notification_setting
      summary: Create a Notification Setting
      description: >
        Create a setting to designate whether, when, and how a specific
        notification should be fired.
      tags:
        - Notifications
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationSettingCreateRequired'
      responses:
        '200':
          $ref: '#/components/responses/notification_settings_one'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
  /notification_settings/{notification_setting_id}:
    get:
      tags:
        - Notifications
      operationId: get_notification_setting
      summary: Get a Notification Setting
      description: |
        Returns a notification if a valid ID is provided.
      parameters:
        - name: notification_setting_id
          in: path
          description: The unique ID of the notification setting.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/notification_settings_one'
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Notifications
      operationId: update_notification_setting
      summary: Modify a Notification Setting
      description: |
        Modifies a notification if a valid ID and body are provided.
      parameters:
        - name: notification_setting_id
          in: path
          description: The unique ID of the notification setting.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationSettingUpdate'
      responses:
        '200':
          $ref: '#/components/responses/notification_settings_one'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      operationId: delete_notification_setting
      summary: Delete a Notification Setting
      description: |
        Delete a notification setting if a valid ID is provided.
      tags:
        - Notifications
      parameters:
        - name: notification_setting_id
          in: path
          description: The unique ID of the notification setting.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /notification_settings/notification_types/{notification_type_id}:
    get:
      operationId: list_notification_settings_by_type
      summary: Get Notification Settings for an Event
      description: >
        Use this endpoint to fetch all notification settings of a specific
        type. 


        This can be used as a filter that is easy to use to understand, which
        returns all notifications that a user can expect to receive for a
        specific event.
      tags:
        - Notifications
      parameters:
        - name: notification_type_id
          in: path
          description: The unique ID of the notification type.
          required: true
          schema:
            type: integer
        - name: expand
          in: query
          schema:
            type: boolean
      responses:
        '200':
          $ref: '#/components/responses/notification_settings_many_type'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
  /notification_settings/{resource_type}/{resource_id}:
    get:
      operationId: list_resource_notification_settings
      summary: Get Notification Settings For a Resource
      description: >
        Use this endpoint to fetch all notification settings for a given
        resource. 


        This can be used as a filter that is easy to understand, which returns
        all notifications that a user can expect to receive for a specific
        resource.
      tags:
        - Notifications
      parameters:
        - name: expand
          in: query
          schema:
            type: boolean
        - name: filter_overridden_settings
          in: query
          schema:
            type: boolean
        - name: notification_type_id
          in: query
          schema:
            type: integer
          example: 1
        - name: resource_id
          in: path
          required: true
          schema:
            type: integer
          example: 2
        - name: resource_type
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/NotificationResourceType'
      responses:
        '200':
          $ref: '#/components/responses/notification_settings_many'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
  /orgs/{org_id}/flows/account_metrics:
    get:
      tags:
        - Metrics
      operationId: org_account_metrics_total
      summary: Get Total Account Metrics for An Organization
      description: >
        Retrieves total account utilization metrics for an organization. The
        result consists of aggregated information about records processed within
        the specified date range by all resources owned by users in the
        organization.
      parameters:
        - name: org_id
          in: path
          description: >
            The unique ID of the organization. The result will be an aggregate
            of metrics for all resources owned by users in the organization.
          required: true
          schema:
            type: integer
        - name: from
          in: query
          description: >-
            The date that should be considered as the start of the metrics
            aggregation period.
          required: true
          schema:
            type: string
            format: date-time
            example: '2023-01-10'
        - name: to
          in: query
          description: >
            The date that should be considered as the end of the metrics
            aggregation period. In the absence of this parameter, the API
            returns metrics aggregated up to the current date.
          schema:
            type: string
            format: date-time
            example: '2023-01-17T20:24:35Z'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/flows_account_metrics'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /users/{user_id}/flows/account_metrics:
    get:
      tags:
        - Metrics
      operationId: user_account_metrics_total
      summary: Get Total Account Metrics for a User
      description: >
        Retrieves total account utilization metrics for a user in an
        organization. The result consists of aggregated information about
        records processed within the specified date range by all resources owned
        by the user.
      parameters:
        - name: user_id
          in: path
          description: >
            The unique ID of the user. The result will be an aggregate of
            metrics for all resources owned by this user.
          required: true
          schema:
            type: integer
        - name: org_id
          in: query
          description: >
            The ID of the organization this user belongs to. This parameter is
            relevant for users who belong to multiple organizations. In the
            absence of this parameter, the API returns an aggregate of metrics
            for all resources owned by the user in the user's default
            organization. Set this query parameter to fetch metrics for a
            different organization.
          schema:
            type: integer
        - name: from
          in: query
          description: >-
            The date that should be considered as the start of the metrics
            aggregation period.
          required: true
          schema:
            type: string
            format: date-time
            example: '2023-01-10'
        - name: to
          in: query
          description: >
            The date that should be considered as the end of the metrics
            aggregation period. In the absence of this parameter, the API
            returns metrics aggregated up to the current date.
          schema:
            type: string
            format: date-time
            example: '2023-01-17'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/flows_account_metrics'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /users/{user_id}/flows/dashboard:
    get:
      tags:
        - Metrics
      operationId: user_24_hour_flow_stats
      summary: Get 24 Hour Flow Stats for a User
      description: >
        Retrieves the metrics and processing status of each flow that processed
        data in the last 24 hours. 


        Each item reflects the total number of records processed by each stage
        of all flows accessible by the user that processed any data in the
        specified time window. 
      parameters:
        - name: user_id
          in: path
          description: |
            The unique ID of the user whose flows are to be fetched.
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/access_roles'
        - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/flows_dashboard'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /users/{user_id}/metrics:
    get:
      tags:
        - Metrics
      operationId: user_metrics_daily
      summary: Get Daily Data Processing Metrics for a User
      description: >
        Retrieves daily data processing metrics of all sources or all
        destinations owned by a user.
      parameters:
        - name: user_id
          in: path
          description: >
            The unique ID of the user. The result will be an aggregate of
            metrics for all resources owned by this user.
          required: true
          schema:
            type: integer
        - name: org_id
          in: query
          description: >
            The ID of the organization this user belongs to. This parameter is
            relevant for users who belong to multiple organizations. In the
            absence of this parameter, the API returns an aggregate of metrics
            for all resources owned by the user in the user's default
            organization. Set this query parameter to fetch metrics for a
            different organization.
          schema:
            type: integer
        - name: resource_type
          in: query
          description: >
            The type of resource that metrics should be fetched for. Select
            `SOURCE` for the total data ingested by all sources owned by the
            user. Select `SINK` for the total data written out by all sinks
            owned by the user.
          required: true
          schema:
            type: string
            enum:
              - SOURCE
              - SINK
        - name: from
          in: query
          description: >-
            The date that should be considered as the start of the metrics
            reporting period.
          required: true
          schema:
            type: string
            format: date-time
            example: '2023-01-10'
        - name: to
          in: query
          description: >
            The date that should be considered as the end of the metrics
            reporting period. In the absence of this parameter, the API returns
            metrics up to the current date.
          schema:
            type: string
            format: date-time
            example: '2023-01-17'
        - name: aggregate
          in: query
          required: true
          description: >
            This should be set to 1 for fetching daily aggregated metrics over
            the specified time range.
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/user_metrics'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /{resource_type}/{resource_id}/metrics:
    get:
      tags:
        - Metrics
      operationId: get_resource_metrics_daily
      summary: Get Daily Metrics for a Resource of a Flow
      description: >
        Retrieves daily data processing metrics of a `data_source`, `data_set`,
        or `data_sink`.
      parameters:
        - name: resource_type
          in: path
          description: |
            The type of resource that metrics should be fetched for.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: |
            The ID of resource that metrics should be fetched for.
          required: true
          schema:
            type: integer
        - name: from
          in: query
          description: >-
            The date that should be considered as the start of the metrics
            reporting period.
          required: true
          schema:
            type: string
            format: date-time
            example: '2023-01-10'
        - name: to
          in: query
          description: >
            The date that should be considered as the end of the metrics
            reporting period. In the absence of this parameter, the API returns
            metrics up to the current date.
          schema:
            type: string
            format: date-time
            example: '2023-01-17'
        - name: aggregate
          in: query
          required: true
          description: >
            This should be set to 1 for fetching daily aggregated metrics over
            the specified time range.
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/ResourceMetricsDaily'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /{resource_type}/{resource_id}/metrics/run_summary:
    get:
      tags:
        - Metrics
      operationId: get_resource_metrics_by_run
      summary: Get Metrics By Run ID for a Resource of a Flow
      description: >
        Retrieves data processing metrics of a `data_source`, `data_set`, or
        `data_sink`. The reported metrics are grouped by run id to indicate the
        number of records processed during each ingestion cycle of this flow.
      parameters:
        - name: resource_type
          in: path
          description: |
            The type of resource that metrics should be fetched for.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >
            The unique id of the resource you wish to fetch metrics for.  For
            ex, set this to id of the `data_source` if you want to fetch metrics
            of a specific `data_source`.
          required: true
          schema:
            type: integer
        - name: groupby
          in: path
          schema:
            type: string
            enum:
              - runId
              - lastWritten
          description: >
            Specify the rule based on which metrics should be grouped for
            aggregation. 


            Default API behavior is to group by `runId`. This choice is only
            applicable for data sinks where the run summary could be reported by
            `runId` ( for reporting number of records written out per ingestion
            cycle) or `lastWritten` (for reporting number of records written out
            in each destination write batch).
        - name: orderby
          in: path
          schema:
            type: string
            enum:
              - runId
              - lastWritten
          description: >
            Specify the order in which paginated results should be sorted.
            Default API behavior is to order by `runId`. This choice is only
            applicable for data sinks where the run summary could be reported by
            `runId` ( for reporting number of records written out per ingestion
            cycle) or `lastWritten` (for reporting number of records written out
            in each destination write batch).
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/size'
      responses:
        '200':
          $ref: '#/components/responses/ResourceMetricsByRuns'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /data_flows/{resource_type}/{resource_id}/metrics:
    get:
      tags:
        - Metrics
      operationId: get_flow_metrics
      summary: Get Metrics for a Flow
      description: >
        Retrieves data processing metrics of a flow. Metrics are aggregated for
        each node of the flow for the specified time range. They can be be
        further grouped by run id to indicate the number of records processed
        during each ingestion cycle of this flow.


        > Note: This is a variant of flow endpoints where the flow node can
        referenced not by its own ID, but by the ID of the unique resource that
        is linked to that flow node.
      parameters:
        - name: resource_type
          in: path
          description: >
            The type of node linked to the flow you want to reference. For ex,
            set this to `data_sources` if you want to refer to the flow
            originating in a `data_source`.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >
            The unique id of the resource whose flow you want to reference.  For
            ex, set this to id of the `data_source` if you want to refer to the
            flow originating in a specific `data_source`.
          required: true
          schema:
            type: integer
        - name: from
          in: query
          description: >
            The date that should be considered as the start of the metrics
            aggregation period.
          required: true
          schema:
            type: string
            format: date-time
            example: '2023-01-10'
        - name: to
          in: query
          description: >
            The date that should be considered as the end of the metrics
            aggregation period. In the absence of this parameter, the API
            returns metrics aggregated up to the current date.
          schema:
            type: string
            format: date-time
            example: '2023-01-17'
        - name: groupby
          in: path
          schema:
            type: string
            enum:
              - runId
          description: >
            Specify the rule based on which metrics should be grouped for
            aggregation. This is an optional property. 


            If present and set to `runId` the response will contain one entry
            per run id, with each entry containing metrics for all resources
            that processed data during that run.
        - name: orderby
          in: path
          schema:
            type: string
            enum:
              - runId
              - created_at
          description: |
            Specify the order in which paginated results should be sorted.
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/per_page'
      responses:
        '200':
          $ref: '#/components/responses/FlowMetricsResponse'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /data_flows/{resource_type}/{resource_id}/logs:
    get:
      tags:
        - Metrics
      operationId: get_flow_logs_for_run_id
      summary: Get Flow Execution Logs for Run ID of a Flow
      description: >
        Retrieves flow execution logs for a specific run id of a flow.


        > Note: This is a variant of flow endpoints where the flow node can
        referenced not by its own ID, but by the ID of the unique resource that
        is linked to that flow node.
      parameters:
        - name: resource_type
          in: path
          description: >
            The type of node linked to the flow you want to reference. For ex,
            set this to `data_sources` if you want to refer to the flow
            originating in a `data_source`.
          required: true
          schema:
            type: string
            enum:
              - data_sources
              - data_sinks
              - data_sets
        - name: resource_id
          in: path
          description: >
            The unique id of the resource whose flow you want to reference.  For
            ex, set this to id of the `data_source` if you want to refer to the
            flow originating in a specific `data_source`.
          required: true
          schema:
            type: integer
        - name: run_id
          in: query
          description: >-
            The run id (denoting the ingestion cycle) for which logs have to be
            fetched.
          required: true
          schema:
            type: integer
            example: 1695442864636
        - name: from
          in: query
          description: >-
            The timestamp that should be considered as the start of the logs
            reporting period.
          required: true
          schema:
            type: integer
            format: unix epoch in milliseconds
            example: 1695442864636
        - name: to
          in: query
          description: >
            The timestamp that should be considered as the end of the logs
            reporting period. In the absence of this parameter, the API returns
            metrics up to the current time.
          schema:
            type: integer
            format: unix epoch in milliseconds
            example: 1695442864636
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/per_page'
      responses:
        '200':
          $ref: '#/components/responses/FlowLogsResponse'
        '403':
          description: Forbidden
        '404':
          description: Not found error
  /data_sources/{source_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_data_source_audit_log
      summary: Get Audit Log for a Data Source
      description: >
        Retrieves the history of changes made to the properties of a data
        source.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_source_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sinks/{sink_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_data_sink_audit_log
      summary: Get Audit Log for a Data Sink
      description: |
        Retrieves the history of changes made to the properties of a data sink.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_sink_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sets/{set_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_nexset_audit_log
      summary: Get Audit Log for a Nexset
      description: |
        Retrieves the history of changes made to the properties of a Nexset.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_set_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_credentials/{credential_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_data_credential_audit_log
      summary: Get Audit Log for a Data Credential
      description: >
        Retrieves the history of changes made to the properties of a data
        credential.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_credential_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_maps/{data_map_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_data_map_audit_log
      summary: Get Audit Log for a Data Map
      description: |
        Retrieves the history of changes made to the properties of a data map.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_map_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_schemas/{schema_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_data_schema_audit_log
      summary: Get Audit Log for a Data Schema
      description: >
        Retrieves the history of changes made to the properties of a data
        schema.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: data_schema_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /code_containers/{code_container_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_code_container_audit_log
      summary: Get Audit Log for a Code Container
      description: >
        Retrieves the history of changes made to the properties of a code
        container. This endpoint can also be used to fetch the history of
        changes made to any transform object.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: code_container_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /projects/{project_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_project_audit_log
      summary: Get Audit Log for a Project
      description: |
        Retrieves the history of changes made to the properties of a project.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: project_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /doc_containers/{doc_container_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_doc_container_audit_log
      summary: Get Audit Log for a Document
      description: |
        Retrieves the history of changes made to the properties of a document.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: doc_container_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /users/{user_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_user_audit_log
      summary: Get Audit Log for a User
      description: |
        Retrieves the history of changes made to the properties of a user.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: user_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /orgs/{org_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_org_audit_log
      summary: Get Audit Log for an Organization
      description: >
        Retrieves the history of changes made to the properties of an
        organization.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: org_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /teams/{team_id}/audit_log:
    get:
      tags:
        - Audit Logs
      operationId: get_team_audit_log
      summary: Get Audit Log for a Team
      description: |
        Retrieves the history of changes made to the properties of a team.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: team_id
          in: path
          description: The unique ID of the resource being queried.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogEntry'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
  /users/{user_id}/quarantine_settings:
    get:
      tags:
        - Quarantine Settings
      operationId: get_user_quarantine_data_export_settings
      summary: Get Quarantine Data Export Settings for A User
      description: >
        Retrieve Quarantine Data Export Settings for all resources owned by a
        user. 


        Nexla detects errors during different stages of data flow such as
        ingestion, transformation, and output. Error records are quarantined and
        accessible to the user via APIs as well as files. With Quarantine Data
        Export Settings, you can configure Nexla to write files containing
        information about erroneous records across all resources owned by a
        user.


        > This endpoint returns a 404 status code if no Quarantine Data Export
        Settings have been configured for the user.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: user_id
          in: path
          description: >-
            The unique ID of the user whose quarantine settings you wish to
            retrieve.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/quarantine_settings_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Quarantine Settings
      operationId: create_quarantine_data_export_settings
      summary: Set Quarantine Data Export Settings for A User
      description: >
        Sets Quarantine Data Export Settings for all resources owned by a user
        so that all erroneous records can be automatically exported by the
        platform to a file system regularly.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: user_id
          in: path
          description: The unique ID of the user.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/QuarantineSettingCreate'
      responses:
        '200':
          $ref: '#/components/responses/quarantine_settings_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Quarantine Settings
      operationId: update_user_quarantine_data_export_settings
      summary: Update Quarantine Data Export Settings for A User
      description: >
        Updates Quarantine Data Export Settings for all resources owned by a
        user so that all erroneous records can be automatically exported by the
        platform to a file system regularly.
      parameters:
        - $ref: '#/components/parameters/accept'
        - name: user_id
          in: path
          description: The unique ID of the user.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/QuarantineSettingMutable'
      responses:
        '200':
          $ref: '#/components/responses/quarantine_settings_one'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Quarantine Settings
      operationId: delete_user_quarantine_data_export_settings
      summary: Delete Quarantine Data Export Settings for A User
      description: >
        Deletes Updates Quarantine Data Export Settings for all resources owned
        by a user. Deleting this setting will ensure the platform stops
        exporting all erroneous records for resources owned by the user to a
        file storage.
      parameters:
        - name: user_id
          in: path
          description: The unique id of the user.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sources/{data_source_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_data_source_accessors
      summary: Get Access Rules on Data Source
      description: |
        Returns a list of the access-control rules set for this data source.
      parameters:
        - name: data_source_id
          in: path
          description: The unique ID of the data source.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_data_source_accessors
      summary: Replace Access Rules on Data Source
      description: >
        Replaces the list of accessors belonging to a data source. Existing
        accessors will be removed from the data source.
      parameters:
        - name: data_source_id
          in: path
          description: The unique ID of the data source.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_data_source_accessors
      summary: Add Access Rules on Data Source
      description: >
        Adds a list of accessors to a data source. The existing accessors list
        is retained and merged with the new accessors list.
      parameters:
        - name: data_source_id
          in: path
          description: The unique ID of the data source.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_data_source_accessors
      summary: Delete Access Rules on Data Source
      description: >
        Removes access-control rules from a data source. If no request body is
        provided, all rules associated with the data source will be removed.
      parameters:
        - name: data_source_id
          in: path
          description: The unique ID of the data source.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sets/{data_set_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_nexset_accessors
      summary: Get Access Rules on Nexset
      description: |
        Returns a list of the access-control rules set for this Nexset.
      parameters:
        - name: data_set_id
          in: path
          description: The unique ID of the Nexset.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_nexset_accessors
      summary: Replace Access Rules on Nexset
      description: >
        Replaces the list of access-control rules set for this Nexset. Existing
        rules will be removed from the Nexset, and only these new rules will be
        applied.
      parameters:
        - name: data_set_id
          in: path
          description: The unique ID of the Nexset.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_nexset_accessors
      summary: Add Access Rules on Nexset
      description: |
        Adds new access-control rules to this Nexset.
      parameters:
        - name: data_set_id
          in: path
          description: The unique ID of the Nexset.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_nexset_accessors
      summary: Delete Access Rules on Nexset
      description: >
        Removes access-control rules from a Nexset. If no request body is
        provided, all rules associated with the Nexset will be removed.
      parameters:
        - name: data_set_id
          in: path
          description: The unique ID of the Nexset.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_sinks/{data_sink_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_data_sink_accessors
      summary: Get Access Rules on Data Sink
      description: |
        Returns a list of the access-control rules set for this data sink.
      parameters:
        - name: data_sink_id
          in: path
          description: The unique ID of the data sink.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_data_sink_accessors
      summary: Replace Access Rules on Data Sink
      description: >
        Replaces the list of access-control rules set for this data sink.
        Existing rules will be removed from the data sink, and only these new
        rules will be applied.
      parameters:
        - name: data_sink_id
          in: path
          description: The unique ID of the data sink.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_data_sink_accessors
      summary: Add Access Rules on Data Sink
      description: |
        Adds new access-control rules to this data sink.
      parameters:
        - name: data_sink_id
          in: path
          description: The unique ID of the data sink.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_data_sink_accessors
      summary: Delete Access Rules on Data Sink
      description: >
        Removes access-control rules from a data sink. If no request body is
        provided, all rules associated with the data sink will be removed.
      parameters:
        - name: data_sink_id
          in: path
          description: The unique ID of the data sink.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_maps/{data_map_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_data_map_accessors
      summary: Get Access Rules on Data Map
      description: |
        Returns a list of the access-control rules set for this data map.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_data_map_accessors
      summary: Replace Access Rules on Data Map
      description: >
        Replaces the list of access-control rules set for this data map.
        Existing rules will be removed from the data map, and only these new
        rules will be applied.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_data_map_accessors
      summary: Add Access Rules on Data Map
      description: |
        Adds new access-control rules to this data map.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_data_map_accessors
      summary: Delete Access Rules on Data Map
      description: >
        Removes access-control rules from a data map. If no request body is
        provided, all rules associated with the data map will be removed.
      parameters:
        - name: data_map_id
          in: path
          description: The unique ID of the data map.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_credentials/{data_credential_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_data_credential_accessors
      summary: Get Access Rules on Data Credential
      description: |
        Returns a list of the access-control rules set for this data credential.
      parameters:
        - name: data_credential_id
          in: path
          description: The unique ID of the data credential.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_data_credential_accessors
      summary: Replace Access Rules on Data Credential
      description: >
        Replaces the list of access-control rules set for this data credential.
        Existing rules will be removed from the data credential, and only these
        new rules will be applied.
      parameters:
        - name: data_credential_id
          in: path
          description: The unique ID of the data credential.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_data_credential_accessors
      summary: Add Access Rules on Data Credential
      description: |
        Adds new access-control rules to this data credential.
      parameters:
        - name: data_credential_id
          in: path
          description: The unique ID of the data credential.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_data_credential_accessors
      summary: Delete Access Rules on Data Credential
      description: >
        Removes access-control rules from a data credential. If no request body
        is provided, all rules associated with the data credential will be
        removed.
      parameters:
        - name: data_credential_id
          in: path
          description: The unique ID of the data credential.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /projects/{project_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_project_accessors
      summary: Get Project Accessors
      description: |
        Returns a list of the access-control rules set for this project.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_project_accessors
      summary: Replace Access Rules on Project
      description: >
        Replaces the list of access-control rules set for this project. Existing
        rules will be removed from the project, and only these new rules will be
        applied.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_project_accessors
      summary: Add Project Accessors
      description: |
        Adds new access-control rules to this project.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_project_accessors
      summary: Delete Project Accessors
      description: >
        Removes access-control rules from a project. If no request body is
        provided, all rules associated with the project will be removed.
      parameters:
        - name: project_id
          in: path
          description: The unique ID of the project.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /flows/{flow_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_flow_accessors
      summary: Get Access Rules on Flow
      description: |
        Returns a list of the access-control rules set for this flow.
      parameters:
        - name: data_flow_id
          in: path
          description: The unique ID of the flow.
          required: true
          schema:
            type: string
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_flow_accessors
      summary: Replace Access Rules on Flow
      description: >
        Replaces the list of access-control rules set for this flow. Existing
        rules will be removed from the flow, and only these new rules will be
        applied.
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the data flow.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_flow_accessors
      summary: Add Access Rules on Flow
      description: |
        Adds new access-control rules to this data flow.
      parameters:
        - name: flow_id
          in: path
          description: The unique ID of the data flow.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_flow_accessors
      summary: Delete Access Rules on Flow
      description: >
        Removes access-control rules from a data flow. If no request body is
        provided, all rules associated with the data flow will be removed.
      parameters:
        - name: data_flow_id
          in: path
          description: The unique ID of the data flow.
          required: true
          schema:
            type: string
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_flows/{data_flow_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_flow_accessors_(deprecated)
      summary: Get Access Rules on Flow (Deprecated)
      description: >
        Returns a list of the access-control rules set for this data flow. 


        > **Note**: This version of the endpoint has been deprecated. It uses a
        composite data flow id of the type `{resource_type}/{resource_id}`. See
        get_flow_accessors for a new version of this endpoint that uses unique
        `flow_id`.
      parameters:
        - name: data_flow_id
          in: path
          description: >-
            The unique ID of the data flow. This ID is of the type
            `{resource_type}/{resource_id}`, where the resource is the root node
            of the flow - for example, `data_source/1001`.
          required: true
          schema:
            type: string
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_flow_accessors_(deprecated)
      summary: Replace Access Rules on Flow (Deprecated)
      description: >
        Replace the list of access-control rules set for this data flow.
        Existing rules will be removed from the data flow, and only these new
        rules will be applied. This version uses a composite data flow id of the
        type `{resource_type}/{resource_id}`. 


        > **Note**: This version of the endpoint has been deprecated. It uses a
        composite data flow id of the type `{resource_type}/{resource_id}`. See
        replace_flow_accessors for a new version of this endpoint that uses
        unique `flow_id`.
      parameters:
        - name: data_flow_id
          in: path
          description: >-
            The unique ID of the data flow. This ID is of the type
            `{resource_type}/{resource_id}`, where the resource is the root node
            of the flow - for example, `data_source/1001`.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_flow_accessors_(deprecated)
      summary: Add Access Rules on Flow (Deprecated)
      description: >
        Add new access-control rules to this data flow. This version uses a
        composite data flow id of the type `{resource_type}/{resource_id}`. 


        > **Note**: This version of the endpoint has been deprecated. It uses a
        composite data flow id of the type `{resource_type}/{resource_id}`. See
        add_flow_accessors for a new version of this endpoint that uses unique
        `flow_id`.  
      parameters:
        - name: data_flow_id
          in: path
          description: >-
            The unique ID of the data flow. This ID is of the type
            `{resource_type}/{resource_id}`, where the resource is the root node
            of the flow - for example, `data_source/1001`.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_flow_accessors_(deprecated)
      summary: Delete Access Rules on Flow (Deprecated)
      description: >
        Remove access-control rules from a data flow. If no request body is
        provided, all rules associated with the data flow will be removed. This
        version uses a composite data flow id of the type
        `{resource_type}/{resource_id}`. 


        > **Note**: This version of the endpoint has been deprecated. It uses a
        composite data flow id of the type `{resource_type}/{resource_id}`. See
        delete_flow_accessors for a new version of this endpoint that uses
        unique `flow_id`.    
      parameters:
        - name: data_flow_id
          in: path
          description: >-
            The unique ID of the data flow. This ID is of the type
            `{resource_type}/{resource_id}`, where the resource is the root node
            of the flow - for example, `data_source/1001`.
          required: true
          schema:
            type: string
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /data_schemas/{data_schema_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_data_schema_accessors
      summary: Get Access Rules on Data Schema
      description: |
        Returns a list of the access-control rules set for this data schema.
      parameters:
        - name: data_schema_id
          in: path
          description: The unique ID of the data schema.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_data_schema_accessors
      summary: Replace Access Rules on Data Schema
      description: >
        Replaces the list of access-control rules set for this data schema.
        Existing rules will be removed from the data schema, and only these new
        rules will be applied.
      parameters:
        - name: data_schema_id
          in: path
          description: The unique ID of the data schema.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_data_schema_accessors
      summary: Add Access Rules on Data Schema
      description: |
        Adds new access-control rules to this data schema.
      parameters:
        - name: data_schema_id
          in: path
          description: The unique ID of the data schema.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_data_schema_accessors
      summary: Delete Access Rules on Data Schema
      description: >
        Removes access-control rules from a data schema. If no request body is
        provided, all rules associated with the data schema will be removed.
      parameters:
        - name: data_schema_id
          in: path
          description: The unique ID of the data schema.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /doc_containers/{doc_container_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_doc_container_accessors
      summary: Get Access Rules on Document
      description: |
        Returns a list of the access-control rules set for this document.
      parameters:
        - name: doc_container_id
          in: path
          description: The unique ID of the document.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_doc_container_accessors
      summary: Replace Access Rules on Document
      description: >
        Replaces the list of access-control rules set for this document.
        Existing rules will be removed from the document, and only these new
        rules will be applied.
      parameters:
        - name: doc_container_id
          in: path
          description: The unique ID of the document.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_doc_container_accessors
      summary: Add Access Rules on Document
      description: |
        Adds new access-control rules to this document.
      parameters:
        - name: doc_container_id
          in: path
          description: The unique ID of the document container.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_doc_container_accessors
      summary: Delete Access Rules on Document
      description: >
        Removes access-control rules from a document. If no request body is
        provided, all rules associated with the document will be removed.
      parameters:
        - name: doc_container_id
          in: path
          description: The unique ID of the document.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /code_containers/{code_container_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_code_container_accessors
      summary: Get Access Rules on Code Container
      description: |
        Returns a list of the access-control rules set for this code container.
      parameters:
        - name: code_container_id
          in: path
          description: The unique ID of the code container.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_code_container_accessors
      summary: Replace Access Rules on Code Container
      description: >
        Replaces the list of access-control rules set for this code container.
        Existing rules will be removed from the code container, and only these
        new rules will be applied.
      parameters:
        - name: code_container_id
          in: path
          description: The unique ID of the code container.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_code_container_accessors
      summary: Add Access Rules on Code Container
      description: |
        Adds new access-control rules to this code container.
      parameters:
        - name: code_container_id
          in: path
          description: The unique ID of the code container.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_code_container_accessors
      summary: Delete Access Rules on Code Container
      description: >
        Removes access-control rules from a code container. If no request body
        is provided, all rules associated with the code container will be
        removed.
      parameters:
        - name: code_container_id
          in: path
          description: The unique ID of the code container.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /teams/{team_id}/accessors:
    get:
      tags:
        - Access Control
      operationId: get_team_accessors
      summary: Get Team Accessors
      description: |
        Returns a list of the access-control rules set for this team.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - Access Control
      operationId: replace_team_accessors
      summary: Replace Team Accessors List
      description: >
        Replaces the list of access-control rules set for this team. Existing
        rules will be removed from the team, and only these new rules will be
        applied.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    put:
      tags:
        - Access Control
      operationId: add_team_accessors
      summary: Add Team Accessors
      description: |
        Adds new access-control rules to this team.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    delete:
      tags:
        - Access Control
      operationId: delete_team_accessors
      summary: Delete Team Accessors
      description: >
        Removes access-control rules from a team. If no request body is
        provided, all rules associated with the team will be removed.
      parameters:
        - name: team_id
          in: path
          description: The unique ID of the team.
          required: true
          schema:
            type: integer
      requestBody:
        description: Optional list of accessors.
        required: false
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              $ref: '#/components/schemas/AccessorsRequestSchema'
      responses:
        '200':
          $ref: '#/components/responses/accessors_list'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /token:
    post:
      operationId: login_with_basic_auth
      summary: Login with Basic Authentication
      description: >
        Use this endpoint for authentication if your organization allows basic
        authentication. A successful authentication attempt will result in an
        `access_token` that can be used to make authenticated requests to other
        API endpoints. The `access_token` automatically expires after a fixed
        duration, but you can also call the `/logout` endpoint to invalidate the
        access token at the end of your session.


        Nexla supports various methods of authentication, including Basic
        (email/password), Google SSO, and custom SAML- or OIDC-based SSO. One or
        more of these methods might be allowed in any organization, depending on
        the configuration chosen by the administrators. Instead of using this
        endpoint to start a session programmatically, we recommend performing
        authentication through the Nexla UI and using the Nexla Session Token
        (available in Tools >> Nexla Session Token) to connect to the API
        programmatically.


        > Note: A user might belong to multiple organizations. This method
        initiates an authenticated session in their default organization.
      security:
        - basicAuth: []
      tags:
        - Session Management
      responses:
        '200':
          $ref: '#/components/responses/token'
        '401':
          description: Unauthorized
  /token/logout:
    post:
      operationId: logout
      summary: Logout
      description: >
        Ends the current session and invalidates the `NexlaSessionToken` for
        future requests.
      tags:
        - Session Management
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
  /limits:
    get:
      tags:
        - Limits
      operationId: limits
      summary: Get current rate limit and usage
      description: Returns the API rate limiting categories and the user's current usage
      responses:
        '200':
          description: Current usage for the types of endpoints
          content:
            application/json:
              schema:
                type: object
                properties:
                  second:
                    type: object
                    properties:
                      common:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                      light:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                      medium:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                      high:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                  day:
                    type: object
                    properties:
                      common:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                      light:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                      medium:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
                      high:
                        type: object
                        properties:
                          limit:
                            type: integer
                          count:
                            type: integer
        '403':
          description: Forbidden
        '404':
          description: Not found error
webhooks:
  send_one_record:
    post:
      summary: Send one record to Webhook
      operationId: send_one_record
      tags:
        - Webhooks
      security:
        - NexlaApiKeyQuery: []
        - NexlaApiKeyHeader: []
      parameters:
        - name: include_headers
          in: path
          description: >
            Set this to `true` if you wish to send any custom headers to be
            included in the ingested records as part of the request. 


            The platform will ignore standard headers like `Authorization` and
            `Content-Type`. Any custom headers will be added as a
            `header_<header_name>` attribute in the record.


            Example: The request header `NEX-HEADER: test` will be ingested as
            the attribute `header_NEX-HEADER` with the value `test`.


            Default value: `false`
          schema:
            type: boolean
        - name: include_url_params
          in: path
          description: >
            Set this to `true` if you wish to send any custom query parameters
            to be included in the ingested records as part of the request. 


            The platform will ignore standard query parameters like `api_key`.
            Any custom query parameters will be added as a
            `url_param_<param_name>` attribute in the record.


            Example: The request query parameter `abc=def` will be ingested as
            the attribute `url_param_abc` with the value `def`.


            Default value: `false`
          schema:
            type: boolean
        - name: force_schema_detection
          in: path
          description: >
            Usually, the platform performs Nexset schema detection only for the
            first few records from a new webhook. This is to avoid any
            unncessary latencies in webhook record processing. 


            Set this to `true` if you wish to enforce any webhook event to
            trigger schema detection. 


            Default value: `false`
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/nexset_record'
            example:
              id: 1
              name: one
          application/xml:
            schema:
              type: object
              properties:
                root:
                  $ref: '#/components/schemas/nexset_record'
                  xml:
                    name: root
                    wrapped: true
            example: |
              <root>
                <id>1</id>
                <name>one</name>
              </root>
      responses:
        '200':
          description: Returns the 200 status to indicate that data was received.
          content:
            application/json:
              schema:
                type: object
                properties:
                  datasetId:
                    type: integer
                    description: Nexset ID of the Nexset to which this record is sent.
                  processed:
                    type: integer
                    description: Number of records successfully processed by Nexla.
        '403':
          description: Request failed authentication
        '500':
          description: Returned when the service is not able to consume the data.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: |
                      Descriptive text about the error reason. 
                    example: 'Source #1000 is PAUSED'
  send_many_records:
    post:
      summary: Send many records to Webhook
      description: >
        Send an array of JSON objects. Nexla will treat each object as a unique
        record for the webhook.
      operationId: send_many_records
      tags:
        - Webhooks
      security:
        - NexlaApiKeyQuery: []
        - NexlaApiKeyHeader: []
      parameters:
        - name: include_headers
          in: path
          description: >
            Set this to `true` if you wish to send any custom headers to be
            included in the ingested record as part of the request. 


            The platform will ignore standard headers like `Authorization` and
            `Content-Type`. Any custom headers will be added as a
            `header_<header_name>` attribute in the record.


            Example: The request header `NEX-HEADER: test`  will be ingested as
            the attribute `header_NEX-HEADER` with the value `test`.


            Default value: `false`
          schema:
            type: boolean
        - name: include_url_params
          in: path
          description: >
            Set this to `true` if you wish to send any custom query parameters
            to be included in the ingested records as part of the request. 


            The platform will ignore standard query parameters like `api_key`.
            Any custom query parameters will be added as a
            `url_param_<param_name>` attribute in the record.


            Example: The request query parameter `abc=def` will be ingested as
            the attribute `url_param_abc` with the value `def`.


            Default value: `false`
          schema:
            type: boolean
        - name: force_schema_detection
          in: path
          description: >
            Usually, the platform performs Nexset schema detection only for the
            first few records from a new webhook. This is to avoid any
            unnecessary latencies in webhook record processing. 


            Set this to `true` if you wish to enforce any webhook event to
            trigger schema detection. 


            Default value: `false`
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/nexset_record'
      responses:
        '200':
          description: Returns the 200 status to indicate that data was received.
          content:
            application/json:
              schema:
                type: object
                properties:
                  datasetId:
                    type: integer
                    description: Nexset ID of the Nexset to which this record is sent.
                  processed:
                    type: integer
                    description: Number of records successfully processed by Nexla.
        '403':
          description: Request failed authentication
        '500':
          description: Returned when the service is not able to consume the data.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: |
                      Descriptive text about the error reason. 
                    example: 'Source #1000 is PAUSED'
components:
  securitySchemes:
    NexlaSessionToken:
      type: http
      scheme: Bearer
      bearerFormat: JWT
      description: >
        The first step in calling the Nexla API or Nexla CLI is to fetch a
        Session access token by logging on to your Nexla UI instance. This
        ensures that your authentication is performed through your
        organization's preferred Identity Provider.


        To fetch an access token from the Nexla UI, simply go to your Nexla UI
        instance, and try the route `/token`. For example, if your Nexla UI
        instance is at `https://dataops.nexla.io`, open
        `https://dataops.nexla.io/token` in the browser. 


        This will automatically route you to a login page, ask you to
        authenticate using your preferred Identity Provider, and, upon
        successful authentication, route you to a page where you can copy the
        Access Token.


        Usage format: `Bearer <JWT>`.
    NexlaApiKeyQuery:
      type: apiKey
      name: api_key
      in: query
      description: >
        > **Important:** Never share your API keys. Keep them guarded and
        secure. If you think the key has been compromised, you can rotate the
        API key by calling relevant API Key management endpoints.


        The platform generates a unique API key for this resource. Add the API
        key as a query parameter to authenticate this request.

        Usage: `?api_key=<api-key>`
    NexlaApiKeyHeader:
      type: http
      scheme: Basic
      description: >
        > **Important:** Never share your API keys. Keep them guarded and
        secure. If you think the key has been compromised, you can rotate the
        API key by calling relevant API Key management endpoints.


        The platform generates a unique API key for this resource. Add the API
        key as an authorization header to authenticate this request.

        Usage format: `Basic <api-key>`
    basicAuth:
      type: http
      scheme: basic
    GoogleSSOToken:
      type: http
      scheme: Bearer
      bearerFormat: JWT
      description: |
        The token that is used when logging into Nexla via Google SSO.
  parameters:
    access_roles:
      name: access_role
      in: query
      schema:
        type: string
        enum:
          - collaborator
          - operator
          - admin
          - owner
        description: >
          Add this query parameter to a request to view resources for which the
          authenticated user has permission. 


          1. `collaborator`: Resources to which the user has access via the
          collaborator or higher permissions.

          2. `operator`: Resources to which the user has access via the operator
          or higher permissions.

          3. `admin`: Resources to which the user has access via the
          administrator or owner permissions.

          4. `owner`: Resources created by the user.

          Note that the absence of this property in the request is treated as
          `owner`, so you do not need to set `access_role=owner` in the query.
        externalDocs:
          description: Nexla API access roles
          url: https://developers.nexla.com/docs/access-modes
    accept:
      name: Accept
      in: header
      schema:
        type: string
        enum:
          - application/vnd.nexla.api.v1+json
          - application/json
        description: |
          Setting to `application/vnd.nexla.api.v1+json` is recommended.
    expand:
      name: expand
      in: query
      schema:
        type: integer
        enum:
          - 1
        description: >
          Add this parameter to a resource fetch request to receive details
          about related resources in the response.
    page:
      name: page
      in: query
      schema:
        type: integer
        description: >
          Add this parameter to a resource fetch request to fetch a specific
          page of data.
    per_page:
      name: per_page
      in: query
      schema:
        type: integer
        description: >
          Add this parameter to a resource fetch request to set the number of
          items that should be returned in each request.
    size:
      name: size
      in: query
      schema:
        type: integer
        description: >
          Add this parameter to a resource fetch request to set the number of
          items that should be returned in each request.
  schemas:
    owner:
      type: object
      properties:
        id:
          type: integer
        full_name:
          type: string
        email:
          type: string
          format: email
    org:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        email_domain:
          type: string
        email:
          type: 'null'
        client_identifier:
          type: 'null'
    AccessRoles:
      type: array
      description: >
        This property reflects all the permissions the user/team/organization
        has to this resource. 


        1. `collaborator`: The user/team/organization can view the resource but
        not make any modifications to it.

        2. `operator`: The user/team/organization can view the resource and can
        activate/pause it, but not make any other modifications to it.

        3. `administrator`: The user/team/organization has complete
        administrative rights to this resource.

        4. `owner`: This user created the resource and so has complete
        administrative rights to it. 
      items:
        type: string
        enum:
          - owner
          - collaborator
          - operator
          - admin
    data_credential:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        credentials_type:
          type: string
      discriminator:
        propertyName: credentials_type
        mapping:
          as400: '#/components/schemas/as400_data_credential'
          aws_athena: '#/components/schemas/aws_athena_data_credential'
          azure_blb: '#/components/schemas/azure_blb_data_credential'
          azure_data_lake: '#/components/schemas/azure_data_lake_data_credential'
          azure_synapse: '#/components/schemas/azure_synapse_data_credential'
          bigquery: '#/components/schemas/bigquery_data_credential'
          box: '#/components/schemas/box_data_credential'
          cloudsql_mysql: '#/components/schemas/cloudsql_mysql_data_credential'
          cloudsql_postgres: '#/components/schemas/cloudsql_postgres_data_credential'
          cloudsql_sqlserver: '#/components/schemas/cloudsql_sqlserver_data_credential'
          confluent_kafka: '#/components/schemas/confluent_kafka_data_credential'
          databricks: '#/components/schemas/databricks_data_credential'
          db2: '#/components/schemas/db2_data_credential'
          delta_lake_azure_blb: '#/components/schemas/delta_lake_azure_blb_data_credential'
          delta_lake_azure_data_lake: '#/components/schemas/delta_lake_azure_data_lake_data_credential'
          delta_lake_s3: '#/components/schemas/delta_lake_s3_data_credential'
          dropbox: '#/components/schemas/dropbox_data_credential'
          dynamodb: '#/components/schemas/dynamodb_data_credential'
          firebase: '#/components/schemas/firebase_data_credential'
          firebolt: '#/components/schemas/firebolt_data_credential'
          ftp: '#/components/schemas/ftp_data_credential'
          gcp_alloydb: '#/components/schemas/gcp_alloydb_data_credential'
          gcp_spanner: '#/components/schemas/gcp_spanner_data_credential'
          gcs: '#/components/schemas/gcs_data_credential'
          gdrive: '#/components/schemas/gdrive_data_credential'
          google_pubsub: '#/components/schemas/google_pubsub_data_credential'
          hana_jdbc: '#/components/schemas/hana_jdbc_data_credential'
          hive: '#/components/schemas/hive_data_credential'
          jms: '#/components/schemas/jms_data_credential'
          kafka: '#/components/schemas/kafka_data_credential'
          min_io_s3: '#/components/schemas/min_io_s3_data_credential'
          mongo: '#/components/schemas/mongo_data_credential'
          mysql: '#/components/schemas/mysql_data_credential'
          netsuite_jdbc: '#/components/schemas/netsuite_jdbc_data_credential'
          nexla_monitor: '#/components/schemas/nexla_monitor_data_credential'
          oracle: '#/components/schemas/oracle_data_credential'
          oracle_autonomous: '#/components/schemas/oracle_autonomous_data_credential'
          pinecone: '#/components/schemas/pinecone_data_credential'
          postgres: '#/components/schemas/postgres_data_credential'
          redshift: '#/components/schemas/redshift_data_credential'
          rest: '#/components/schemas/rest_data_credential'
          s3: '#/components/schemas/s3_data_credential'
          s3_iceberg: '#/components/schemas/s3_iceberg_data_credential'
          sharepoint: '#/components/schemas/sharepoint_data_credential'
          snowflake: '#/components/schemas/snowflake_data_credential'
          snowflake_dcr: '#/components/schemas/snowflake_dcr_data_credential'
          soap: '#/components/schemas/soap_data_credential'
          sqlserver: '#/components/schemas/sqlserver_data_credential'
          sybase: '#/components/schemas/sybase_data_credential'
          teradata: '#/components/schemas/teradata_data_credential'
          tibco: '#/components/schemas/tibco_data_credential'
          webdav: '#/components/schemas/webdav_data_credential'
    database_data_credential:
      type: object
      properties:
        credentials:
          type: object
          properties:
            has_ssh_tunnel:
              type: boolean
              description: >
                __Requires SSH Tunnel for access?__: If your database is not
                publicly accessible, Nexla enables connecting via an SSH tunnel.
                When using this method, Nexla will connect to a bastion host via
                SSH, and the database connection will occur from the SSH host.


                Default value: `false`
            tunnel.bastion.host:
              type: string
              description: >
                __SSH Tunnel Host__: To connect via an SSH tunnel, you need to
                use a bastion host running an SSH tunnel server with access to
                your database. Enter the SSH tunnel hostname or IP address of
                the bastion host.


                __Required__ if `has_ssh_tunnel` is `true`
            tunnel.bastion.port:
              type: integer
              description: >
                __SSH Tunnel Port__: Enter the port of the tunnel bastion host
                to which Nexla can connect.


                __Required__ if `has_ssh_tunnel` is `true`


                Default Value: `22`
            tunnel.bastion.user:
              type: string
              description: >
                __Username for tunnel__: As part of setting up the bastion host,
                you also need to create an SSH user for Nexla. Enter that
                username here. Usually, this is set to `nexla`.


                __Required__ if `has_ssh_tunnel` is `true`
    as400_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    __company.domain.com__. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
        - $ref: '#/components/schemas/database_data_credential'
    aws_athena_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - aws.auth.type
                - access.key.id
                - secret.key
                - aws.region
                - schema_name
                - s3.output.location
              properties:
                aws.auth.type:
                  type: string
                  description: >
                    __Authentication Method__: Credentials can be configured to
                    grant access via various AWS permission mechanisms. Please
                    select the authentication method you wish to use.
                  enum:
                    - Access Key
                  default: Access Key
                access.key.id:
                  type: string
                  description: >
                    __AWS Access Key__: AWS Access Key ID for Athena database
                    access.
                secret.key:
                  type: string
                  description: >
                    __AWS Secret Key__: AWS Secret Key ID for Athena database
                    access.
                aws.region:
                  type: string
                  description: |
                    __AWS Region__: AWS region of the Athena database.
                  default: us-east-1
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Specify the schema or database containing
                    the tables you wish to query.
                  default: default
                s3.output.location:
                  type: string
                  description: >
                    __S3 Path For Query Results__: Specify an S3 path in the
                    current region to save query results. Use the format
                    `s3://bucket-name/path/to/object/`.
        - $ref: '#/components/schemas/database_data_credential'
    file_data_credential:
      type: object
      properties:
        credentials:
          type: object
          properties:
            file_encryption_enabled:
              type: boolean
              description: >
                __Handle File Encryption/Decryption?__: The platform can be
                configured to process encrypted files such that a Source will
                decrypt files before scanning, and a Destination will encrypt
                the generated files before uploading them to your storage.


                Default value: `false`
            encrypt.standard:
              type: string
              description: >
                __File Encryption Protocol__: The type of file encryption
                protocol that should be used be used for encrypting/decrypting
                files.


                __Required__ if `file_encryption_enabled` is `true`


                Default value: `pgp`
              enum:
                - pgp
            external.user.id:
              type: string
              description: >
                __External User ID__: The ID of the user whose public key is to
                be used for encryption/decryption.


                __Required__ if `file_encryption_enabled` is `true` and
                `encrypt.standard` is `pgp`
            external.public.key:
              type: string
              description: >
                __External User's Public Key__: The external user's public key
                that will be used for the encryption/decryption of files.


                __Required__ if `file_encryption_enabled` is `true` and
                `encrypt.standard` is `pgp`
            encrypt.user.id:
              type: string
              description: >
                __Your User ID for Private Key__: Set this to the user ID used
                to generate the PGP private key.


                __Required__ if `file_encryption_enabled` is `true` and
                `encrypt.standard` is `pgp`
            encrypt.private.password:
              type: string
              description: >
                __Your Password for Private Key__: Set this to the password of
                the user ID used to generate the PGP private key.


                __Required__ if `file_encryption_enabled` is `true` and
                `encrypt.standard` is `pgp`
            encrypt.private.key:
              type: string
              description: >
                __Your Private Key__: Enter your PGP private key. This private
                key (and the associated user id and password) will be used for
                encrypting/decrypting files.
                 
                __Required__ if `file_encryption_enabled` is `true` and
                `encrypt.standard` is `pgp`
    azure_blb_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - azure_blb.auth.type
              properties:
                storage.account.name:
                  type: string
                  description: >
                    __Azure Storage Account Name__: The name of the storage
                    account that you wish to access.


                    __Applicable and required__ if `azure_blb.auth.type` is `SAS
                    Token` or `Storage Account Key`
                azure_blb.auth.type:
                  type: string
                  enum:
                    - SAS Token
                    - Connection String
                    - Storage Account Key
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow Azure access through different authentication
                    mechanisms. Select the type of Authentication method you
                    wish to use.


                    * `SAS Token` for Shared Access Signature Token
                    authentication.


                    * `Connection String` for Key Connection String
                    authentication.


                    * `Storage Account Key` for Storage Account Key
                    authentication.
                sas.token:
                  type: string
                  description: >
                    __Shared Access Signature Token__: Enter the shared access
                    signature token for the Azure storage that you wish to
                    access.


                    __Required__ if `azure_blb.auth.type` is `SAS Token`
                key.connection.string:
                  type: string
                  description: >
                    __Key Connection String__: Enter the Azure connection string
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_blb.auth.type` is `Connection String`
                storage.account.key:
                  type: string
                  description: >
                    __Storage Account Key__: Enter the Azure storage account key
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_blb.auth.type` is `Storage Account
                    Key`
        - $ref: '#/components/schemas/file_data_credential'
    azure_data_lake_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - storage.account.name
                - azure_dl.auth.type
              properties:
                storage.account.name:
                  type: string
                  description: >
                    __Azure Storage Account Name__: The name of the storage
                    account that you wish to access.
                azure_dl.auth.type:
                  type: string
                  enum:
                    - SAS Token
                    - Connection String
                    - Storage Account Key
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow Azure access through different authentication
                    mechanisms. Select the type of Authentication method you
                    wish to use.


                    * `SAS Token` for Shared Access Signature Token
                    authentication.


                    * `Connection String` for Key Connection String
                    authentication.


                    * `Storage Account Key` for Storage Account Key
                    authentication.
                sas.token:
                  type: string
                  description: >
                    __Shared Access Signature Token__: Enter the shared access
                    signature token for the Azure storage that you wish to
                    access.


                    __Required__ if `azure_dl.auth.type` is `SAS Token`
                key.connection.string:
                  type: string
                  description: >
                    __Key Connection String__: Enter the Azure connection string
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_dl.auth.type` is `Connection String`
                storage.account.key:
                  type: string
                  description: >
                    __Storage Account Key__: Enter the Azure storage account key
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_dl.auth.type` is `Storage Account
                    Key`
        - $ref: '#/components/schemas/file_data_credential'
    azure_synapse_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    __company.domain.com__. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the database to
                    which you wish to connect.
                database.field.applicationIntent:
                  type: string
                  enum:
                    - readonly
                    - readwrite
                  description: >
                    __Connection Mode / Application Intent__: You can restrict
                    database connectivity capabilities by specifying the
                    connection mode. Select __Read Only__ to connect to the
                    database in __readonly__ mode.


                    * `readonly`: Connect in read-only mode.


                    * `readwrite`: Connect in read-write mode.


                    Default value: `readwrite`           
        - $ref: '#/components/schemas/database_data_credential'
    bigquery_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - is_service_account
                - project_id
              properties:
                is_service_account:
                  type: boolean
                  description: >-
                    __Is Service Account Authentication?__ We support multiple
                    ways of authenticating your BigQuery account. We recommend
                    using the Google Service Account (System User
                    Authentication) method, as it is best suited for accessing
                    your data and is tied to the service account instead of the
                    individual user account.

                    * Set to `true` if you wish to choose Google Service Account
                    (System User Authentication). 

                    * Set this to `false` if you wish to authenticate using
                    3-legged OAuth. 

                    Default Value: `false`
                project_id:
                  type: string
                  description: >
                    __Project ID__: The Project ID to which the database you
                    wish to access belongs.
                json_creds:
                  type: object
                  description: >
                    __Service Account JSON credentials content__: This is the
                    content of the service account credentials JSON file
                    generated by Google Cloud IAM, which is added to the payload
                    as a JSON object.


                    __Required__ if `is_service_account` is `true`
                auth.type:
                  type: string
                  enum:
                    - OAUTH2
                  description: >
                    __End User Authentication Type__: This must be set to
                    `OAUTH2` if you are choosing the 3-legged OAuth
                    authentication mechanism.


                    __Required__ if `is_service_account` is `false`
                oauth2.client.id:
                  type: string
                  description: |
                    __Client ID__: The Client ID of your OAuth 2.0 client.

                    __Required__ if `is_service_account` is `false`
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: The Client Secret of your OAuth 2.0
                    client.


                    __Required__ if `is_service_account` is `false`
                oauth2.access.token.url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Access Token URL__: The OAuth 2.0 Token URL used for
                    fetching the token from the API token server. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.token.type.override:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.access.token.method:
                  type: string
                  enum:
                    - POST
                  description: >
                    __Access Token URL method__: The request method used for the
                    OAuth 2.0 Token URL. This must be `POST`.


                    __Required__ if `is_service_account` is `false`  
                vendor.name:
                  type: string
                  enum:
                    - bigquery
                  description: >
                    __Nexla OAuth 2.0 connector codename__: Unique codename for
                    the Nexla token refresh mechanism, which is used to identify
                    this connector. This must be `bigquery`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_type:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                vendor.auth_scheme:
                  type: string
                  enum:
                    - header
                  description: >
                    __Authentication Payload Mode__: Set how the OAuth 2.0
                    Client ID and Client Secret should be sent with the Token
                    URL. This must be set to `header`.


                    __Required__ if `is_service_account` is `false`  
                vendor.scopes:
                  type: string
                  enum:
                    - >-
                      https://www.googleapis.com/auth/bigquery
                      https://www.googleapis.com/auth/devstorage.read_write
                  description: >
                    __API Scopes__: Scopes that should be added to the OAuth
                    token calls. This should be
                    `https://www.googleapis.com/auth/bigquery
                    https://www.googleapis.com/auth/devstorage.read_write`.


                    __Required__ if `is_service_account` is `false`  
                vendor.refresh_url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Refresh Token URL__: The OAuth 2.0 Token Refresh URL that
                    is used for fetching a new access token using the current
                    access token and refresh token. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                vendor.has_token_expiration_ts:
                  type: boolean
                  enum:
                    - true
                  description: >
                    __Requires Auto-Refresh of Token__: Access tokens are
                    short-lived, and the platform should automatically
                    continuously refresh the token to retain a valid access
                    token. This must be `true`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Access token expiration time__: Set this to the expiration
                    time (in seconds) of the access token received when you made
                    the first token request as part of the 3-legged OAuth 2.0
                    token fetching sequence. This is usually `3599` for a
                    3-legged OAuth workflow.


                    __Required__ if `is_service_account` is `false`
                access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the the 3-legged
                    OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
                vendor.access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the the 3-legged
                    OAuth 2.0 token fetching sequence. Note that this is the
                    same as `access_token` above but is required in the payload
                    to allow Nexla to automatically continuously refresh tokens.


                    __Required__ if `is_service_account` is `false`
                vendor.refresh_token:
                  type: string
                  description: >
                    __Refresh Token__: Set this to the refresh token received
                    when you made the first token request as part of the the
                    3-legged OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
                gcs.location:
                  type: string
                  description: >
                    __GCS Location for staging data__: Before loading data
                    from/to Bigquery, we might need to stage the data in a
                    temporary GCS location. This temporary location is created
                    by the platform automatically if the user has permission to
                    create a bucket/path.


                    But you can override bucket creation and instead name a
                    specific GCS location where temporary staging files will be
                    created.
                temp.table.dataset:
                  type: string
                  description: >
                    __Temporary Dataset__: Before loading data from/to BigQuery
                    we might need to stage the data in a temporary dataset. This
                    temporary dataset is created by the platform automatically
                    if the user has permission to create a dataset.


                    However, you can override dataset creation and instead name
                    a specific existing dataset as the temporary dataset to be
                    used.
        - $ref: '#/components/schemas/file_data_credential'
    box_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - auth.type
                - oauth2.client.id
                - oauth2.client.secret
                - oauth2.access.token.url
                - oauth2.token.type.override
                - oauth2.access.token.method
                - vendor.name
                - vendor.token_type
                - vendor.auth_scheme
                - vendor.refresh_url
                - vendor.has_token_expiration_ts
                - vendor.token_expires_in
                - access_token
                - vendor.access_token
                - vendor.refresh_token
              properties:
                auth.type:
                  type: string
                  enum:
                    - OAUTH2
                  description: >
                    __End User Authentication Type__: This must be set to
                    `OAUTH2` if you are choosing the 3-legged OAuth
                    authentication mechanism.
                oauth2.client.id:
                  type: string
                  description: |
                    __Client ID__: The Client ID of your OAuth 2.0 client.
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: The Client Secret of your OAuth 2.0
                    client.
                oauth2.access.token.url:
                  type: string
                  enum:
                    - https://api.box.com/oauth2/token
                  description: >
                    __Access Token URL__: The OAuth 2.0 Token URL used for
                    fetching the token from the API token server. This must be
                    `https://api.box.com/oauth2/token`.
                oauth2.token.type.override:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.
                oauth2.access.token.method:
                  type: string
                  enum:
                    - POST
                  description: >
                    __Access Token URL method__: The request method used for the
                    OAuth 2.0 Token URL. This must be `POST`.
                vendor.name:
                  type: string
                  enum:
                    - box
                  description: >
                    __Nexla OAuth 2.0 connector codename__: Unique codename for
                    the Nexla token refresh mechanism, which is used to identify
                    this connector. This must be `box`.
                vendor.token_type:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.
                vendor.auth_scheme:
                  type: string
                  enum:
                    - query
                  description: >
                    __Authentication Payload Mode__: Set how the OAuth 2.0
                    Client ID and Client Secret should be sent with the Token
                    URL. This must be set to `query`.
                vendor.refresh_url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Refresh Token URL__: The OAuth 2.0 Token Refresh URL that
                    is used for fetching a new access token using the current
                    access token and refresh token. This must be
                    `https://api.box.com/oauth2/token`.
                vendor.has_token_expiration_ts:
                  type: boolean
                  enum:
                    - true
                  description: >
                    __Requires Auto-Refresh of Token__:  Access tokens are
                    short-lived, and the platform should automatically
                    continuously refresh the token to retain a valid access
                    token. This must be `true`.
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Access token expiration time__: Set this to the expiration
                    time (in seconds) of the access token received when you made
                    the first token request as part of the 3-legged OAuth 2.0
                    token fetching sequence. This is usually `3599` for a
                    3-legged OAuth workflow.
                access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the the 3-legged
                    OAuth 2.0 token fetching sequence.
                vendor.access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the the 3-legged
                    OAuth 2.0 token fetching sequence. Note that this is the
                    same as `access_token` above but is required in the payload
                    to allow Nexla to automatically continuously refresh tokens.
                vendor.refresh_token:
                  type: string
                  description: >
                    __Refresh Token__: Set this to the refresh token received
                    when you made the first token request as part of the the
                    3-legged OAuth 2.0 token fetching sequence.
        - $ref: '#/components/schemas/file_data_credential'
    cloudsql_mysql_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    `company.domain.com`. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database. 
        - $ref: '#/components/schemas/database_data_credential'
    cloudsql_postgres_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is in
                    the format `company.domain.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    cloudsql_sqlserver_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    __company.domain.com__. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the database to
                    which you wish to connect.
                database.field.applicationIntent:
                  type: string
                  enum:
                    - readonly
                    - readwrite
                  description: >
                    __Connection Mode / Application Intent__: You can restrict
                    database connectivity capabilities by specifying the
                    connection mode. Select __Read Only__ to connect to the
                    database in __readonly__ mode.


                    * `readonly`: Connect in read-only mode.


                    * `readwrite`: Connect in read-write mode.


                    Default value: `readwrite`           
        - $ref: '#/components/schemas/database_data_credential'
    stream_data_credential:
      type: object
      properties:
        credentials:
          type: object
          properties:
            has_ssh_tunnel:
              type: boolean
              description: >
                __Requires SSH Tunnel for access?__: If your server is not
                publicly accessible, Nexla enables connecting via an SSH tunnel.
                When using this method, Nexla will connect to a bastion host via
                SSH, and the server connection will occur from the SSH host.


                Default value: `false`
            tunnel.bastion.host:
              type: string
              description: >
                __SSH Tunnel Host__: To connect via an SSH tunnel, you need to
                use a bastion host running an SSH tunnel server with access to
                your database. Enter the SSH tunnel hostname or IP address of
                the bastion host.


                __Required__ if `has_ssh_tunnel` is `true`
            tunnel.bastion.port:
              type: integer
              description: >
                __SSH Tunnel Port__: Enter the port of the tunnel bastion host
                to which Nexla can connect.


                __Required__ if `has_ssh_tunnel` is `true`


                Default Value: `22`
            tunnel.bastion.user:
              type: string
              description: >
                __Username for tunnel__: As part of setting up the bastion host,
                you also need to create an SSH user for Nexla. Enter that
                username here. Usually, this is set to `nexla`.


                __Required__ if `has_ssh_tunnel` is `true`
    confluent_kafka_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - target.bootstrap.servers
                - security.protocol
                - sasl.jaas.username
                - sasl.jaas.password
              properties:
                target.bootstrap.servers:
                  type: string
                  description: >
                    __Kafka Bootstrap Servers__: Enter the addresses of the
                    Kafka brokers. These are usually in the form of Virtual IP
                    addresses.
                security.protocol:
                  type: string
                  enum:
                    - SASL_SSL
                  description: >
                    __Security Protocol__: Choose the appropriate security
                    protocol for your Kafka channels.


                    * `SASL_SSL`: SASL-authenticated SSL channel
                sasl.jaas.username:
                  type: string
                  description: >
                    __Confluent Cloud API Key__: Enter the API Key for the
                    Confluent Cloud cluster.
                sasl.jaas.password:
                  type: string
                  description: >
                    __Confluent Cloud API Secret__: Enter the API Secret
                    required to connect to the Confluent Cloud cluster.
                group.id.prefix:
                  type: string
                  description: >
                    __Consumer Group ID__: Enter the  Group ID of the group to
                    which Nexla consumers will belong.


                    This is usually set to `nexla-consumer`.
        - $ref: '#/components/schemas/stream_data_credential'
    databricks_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - ui.url_format
                - databricks.cloud.type
              properties:
                ui.url_format:
                  type: string
                  enum:
                    - jdbc_url
                    - http_path_parts
                  description: >
                    __URL Format__: You can enter the Databricks authentication
                    information as a JDBC URL or as parts that will be combined
                    by Nexla to create the connection string.
                url:
                  type: string
                  description: >
                    __JDBC URL__: Enter the JDBC URL of your Databricks
                    location. This should be in the form `jdbc:spark:/...`.

                    __Required__ if `ui.url_format` is `jdbc_url`.
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is in
                    the format `company.domain.com`. Do not include the
                    connection protocol.

                    __Required__ if `ui.url_format` is `http_path_parts`.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                    __Required__ if `ui.url_format` is `http_path_parts`.
                http_path:
                  type: string
                  description: >
                    __HTTP Path__: Enter the HTTP Path of the SQL Endpoint.

                    This is usually in the form
                    `sql/protocolv1/o/<id>/0916-102516-naves603` and is
                    available in __JDBC settings__ in your Databricks console.

                    __Required__ if `ui.url_format` is `http_path_parts`.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.

                    __Required__ if `ui.url_format` is `http_path_parts`.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.

                    __Required__ if `ui.url_format` is `http_path_parts`.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.

                    Usually, this is set to: `spark`.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the database to
                    which you wish to connect.

                    Usually, this is set to `default`.
                databricks.cloud.type:
                  type: string
                  enum:
                    - AWS
                    - Azure
                    - databricks
                    - GCP
                  description: >
                    __Databricks Cloud Type__: Select the cloud environment type
                    of your Databricks instance.

                    Usually, this is the Databricks cloud environment, but we
                    also support connecting to Databricks instances running in
                    other cloud environments.
                databricks.cloud.credentials.id:
                  type: integer
                  description: >
                    __Nexla Credential ID for temporary data staging__: Before
                    loading data to Databricks we need to stage the data
                    temporarily. In the default configuration, the staging data
                    is stored in a Nexla private location, but you can configure
                    the platform to stage data in your custom Cloud storage
                    location.

                    Enter the __Nexla Credential ID__ of your S3 or Azure Blob
                    storage account where you want Nexla to write temporary and
                    final data. Leave this blank if you want Nexla to handle
                    temporary data storage.

                    __Applicable__ if `databricks.cloud.type` is `AWS` or
                    `Azure`.

                    Ignore this property if you do not want to use your custom
                    data-staging area.
                databricks.temp.s3.bucket:
                  type: string
                  description: >
                    __S3 Path for Temporary Data Staging__: If you are choosing
                    to store temporary data in your own AWS S3 location, please
                    configure the S3 path where the temporary data should be
                    staged. Note that this path must be accessible to the Nexla
                    Credential ID entered in the previous field.

                    __Applicable and required__ only if `databricks.cloud.type`
                    is `AWS` and you are setting a valid credential ID for
                    `databricks.cloud.credentials.id`.
                databricks.destination.s3.bucket:
                  type: string
                  description: >
                    __S3 Path for Delta Tables__: If you are choosing to store
                    temporary data in your own AWS S3 location, please configure
                    the S3 path where the delta tables should be staged. Note
                    that this path must be to Nexla Credential ID provided
                    earlier.

                    Leave this blank for creating Delta tables in DBFS.

                    __Applicable and required__ only if `databricks.cloud.type`
                    is `AWS` and you are setting a valid credential ID for
                    `databricks.cloud.credentials.id`.
                databricks.temp.azure.bucket:
                  type: string
                  description: >
                    __Azure Path for Temporary Data Staging__: If you are
                    choosing to store temporary data in your own Azure Blob
                    location, please configure the path where the temporary data
                    should be created. Note that this path must be accessible to
                    the Nexla Credential ID entered in the previous field.

                    __Applicable and required__ only if `databricks.cloud.type`
                    is `Azure` and you are setting a valid credential ID for
                    `databricks.cloud.credentials.id`.
                databricks.destination.azure.bucket:
                  type: string
                  description: >
                    __Azure Path for Delta Tables__: If you are choosing to
                    store temporary data in your own Azure Blob location, please
                    configure the path where the delta tables should be created.
                    Note that this path must be accessible to the Nexla
                    Credential ID provided earlier.

                    Leave this blank for creating Delta tables in DBFS.

                    __Applicable and required__ only if `databricks.cloud.type`
                    is `Azure` and you are setting a valid credential ID for
                    `databricks.cloud.credentials.id`.
        - $ref: '#/components/schemas/database_data_credential'
    db2_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is in
                    the format `company.domain.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
        - $ref: '#/components/schemas/database_data_credential'
    delta_lake_azure_blb_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - azure_blb.auth.type
              properties:
                storage.account.name:
                  type: string
                  description: >
                    __Azure Storage Account Name__: The name of the storage
                    account that you wish to access.


                    __Applicable and required__ if `azure_blb.auth.type` is `SAS
                    Token` or `Storage Account Key`
                azure_blb.auth.type:
                  type: string
                  enum:
                    - SAS Token
                    - Connection String
                    - Storage Account Key
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow Azure access through different authentication
                    mechanisms. Select the type of Authentication method you
                    wish to use.


                    * `SAS Token` for Shared Access Signature Token
                    authentication.


                    * `Connection String` for Key Connection String
                    authentication.


                    * `Storage Account Key` for Storage Account Key
                    authentication.
                sas.token:
                  type: string
                  description: >
                    __Shared Access Signature Token__: Enter the shared access
                    signature token for the Azure storage that you wish to
                    access.


                    __Required__ if `azure_blb.auth.type` is `SAS Token`
                key.connection.string:
                  type: string
                  description: >
                    __Key Connection String__: Enter the Azure connection string
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_blb.auth.type` is `Connection String`
                storage.account.key:
                  type: string
                  description: >
                    __Storage Account Key__: Enter the Azure storage account key
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_blb.auth.type` is `Storage Account
                    Key`
        - $ref: '#/components/schemas/file_data_credential'
    delta_lake_azure_data_lake_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - storage.account.name
                - azure_dl.auth.type
              properties:
                storage.account.name:
                  type: string
                  description: >
                    __Azure Storage Account Name__: The name of the storage
                    account that you wish to access.
                azure_dl.auth.type:
                  type: string
                  enum:
                    - SAS Token
                    - Connection String
                    - Storage Account Key
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow Azure access through different authentication
                    mechanisms. Select the type of Authentication method you
                    wish to use.


                    * `SAS Token` for Shared Access Signature Token
                    authentication.


                    * `Connection String` for Key Connection String
                    authentication.


                    * `Storage Account Key` for Storage Account Key
                    authentication.
                sas.token:
                  type: string
                  description: >
                    __Shared Access Signature Token__: Enter the shared access
                    signature token for the Azure storage that you wish to
                    access.


                    __Required__ if `azure_dl.auth.type` is `SAS Token`
                key.connection.string:
                  type: string
                  description: >
                    __Key Connection String__: Enter the Azure connection string
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_dl.auth.type` is `Connection String`
                storage.account.key:
                  type: string
                  description: >
                    __Storage Account Key__: Enter the Azure storage account key
                    for the Azure storage that you wish to access.


                    __Required__ if `azure_dl.auth.type` is `Storage Account
                    Key`
        - $ref: '#/components/schemas/file_data_credential'
    delta_lake_s3_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - s3_auth_type
              properties:
                s3_auth_type:
                  type: string
                  enum:
                    - Access Key
                    - ARN
                    - Instance Role
                  description: >-
                    __Authentication Mechanism__ Credentials can be configured
                    to allow S3 access through different AWS permissions
                    mechanisms. Select the type of Authentication method you
                    wish to use.

                    * `Access Key` - Select this option if you wish to use AWS
                    Access and Secret keys for your S3 access.

                    * `ARN` - Select this option if you wish to use IAM ARN for
                    authentication.

                    * `Instance Role` - Select this option if you wish to access
                    S3 using an IAM Instance Role. 
                access_key:
                  type: string
                  description: |
                    __AWS Access Key__

                    __Required__ if `s3_auth_type` is `Access Key`
                secret_key:
                  type: string
                  description: |
                    __AWS Secret Key__

                    __Required__ if `s3_auth_type` is `Access Key`
                external_id:
                  type: string
                  description: >
                    __External Id__: The external ID if S3 has been configured
                    for federated access.


                    __Required__ if `s3_auth_type` is
                    `ARN`                                            
                region:
                  type: string
                  description: |
                    Region for AWS S3 Account.

                    Default value: `us-east-1`
                arn:
                  type: string
                  description: >
                    __IAM ARN__: The IAM Amazon Resource Name (ARN) for which
                    these permissions are applicable. This should be entered in
                    the format `arn:partition:service:region:account:resource`.
                test.path:
                  type: string
                  description: >
                    __S3 Path list access is limited to__: Set this property to
                    `<bucket-name>` or `<bucket-name>/<folder-name>` if your AWS
                    admin has restricted access to only a specific bucket or a
                    path inside a bucket.
                has_client_encryption:
                  type: boolean
                  description: >
                    __Enable Client Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    client-side encryption using the AWS Key Management System
                    (KMS). Set this option if KMS encryption is applicable.


                    Default value: `false`
                encryption_mode:
                  type: string
                  enum:
                    - EncryptionOnly
                    - AuthenticatedEncryption
                    - StrictAuthenticatedEncryption
                  description: >
                    __Client Side Encryption Mode__ : Select the type of KMS
                    encryption mode that is applicable for this credential.


                    __Required__ if `has_client_encryption` is `true`
                kms_key:
                  type: string
                  description: >
                    __Amazon KMS Key for Encryption__: The KMS Key used for
                    encrypting/decrypting objects. Please ensure that this user
                    has appropriate KMS permissions.


                    __Required__ if `has_client_encryption` is `true`
                sse.enabled:
                  type: boolean
                  description: >
                    __Enable Server Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    server-side encryption.


                    This can be achieved using either __Amazon S3-managed
                    encryption keys (SSE-S3)__ or the __AWS Key Management
                    Service (SSE-KMS)__. Set this option if server-side
                    encryption is applicable.


                    Default value: `false`      
                sse.kms_key.arn:
                  type: string
                  description: >
                    __Key ARN for SSE with KMS__: The Key ARN if you want
                    server-side encryption to be performed via the AWS Key
                    Management System. You can leave this blank if you want to
                    use Amazon S3-managed encryption keys.


                    __Required__ if `sse.enabled` is `true`
        - $ref: '#/components/schemas/file_data_credential'
    dropbox_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - access_token
              properties:
                access_token:
                  type: string
                  description: >
                    __Access Token__: Access token used to connect to your
                    Dropbox account. See the Dropbox developer documentation for
                    instructions on how to generate an access token. 
        - $ref: '#/components/schemas/file_data_credential'
    nosql_data_credential:
      type: object
      properties:
        credentials:
          type: object
    dynamodb_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - auth_type
              properties:
                auth_type:
                  type: string
                  enum:
                    - Access Key
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow access through different AWS permissions
                    mechanisms. Select the type of Authentication method you
                    wish to use.


                    - __Access Key__: Use your AWS Access Key and Secret Key to
                    authenticate.
                dynamodb.endpoint:
                  type: string
                  description: >
                    __DynamoDB Endpoint__: Endpoint for accessing your DynamoDB
                    instance. Usually of the form
                    `dynamodb.us-east-2.amazonaws.com`.


                    __Applicable and required__ if `auth_type` is `Access Key`.
                access.key:
                  type: string
                  description: |
                    __AWS Access Key__: Your AWS Access Key.

                    __Applicable and required__ if `auth_type` is `Access Key`.
                secret.key:
                  type: string
                  description: |
                    __AWS Secret Key__: Your AWS Secret Key.

                    __Applicable and required__ if `auth_type` is `Access Key`.
                dynamodb.region:
                  type: string
                  description: >
                    __Region__: AWS Region for DynamoDB. Defaults to
                    `us-east-1`.


                    __Applicable__ if `auth_type` is `Access Key`.
        - $ref: '#/components/schemas/nosql_data_credential'
    firebase_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              properties:
                is_service_account:
                  type: string
                  enum:
                    - true
                    - false
                  description: >
                    __Authentication Type__: We currently only support __System
                    User Authentication__ method as it is best suited for
                    accessing your own data and is tied to a service account
                    instead of an individual user account. Please contact your
                    Nexla support team if you need __End User Authentication__
                    mechanism.


                    * `true`: __System User Authentication__

                    * `false`: __End User Authentication__ (Currently not
                    supported)
                project_id:
                  type: string
                  description: >
                    __Project ID__: Enter the Project ID that the Firebase store
                    you wish to access belongs to.


                    __Applicable and required__ if `is_service_account` is
                    `false`.
                json_creds:
                  type: string
                  description: >
                    __Credentials File Content__: Enter the content of the JSON
                    file that contains the Firebase service account credentials.
                    This file is usually downloaded from the Firebase console.


                    __Applicable and required__ if `is_service_account` is
                    `true`.
        - $ref: '#/components/schemas/nosql_data_credential'
    firebolt_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: |
                    __Host__: Enter the hostname for your database.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.  
        - $ref: '#/components/schemas/database_data_credential'
    ftp_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - ftp.type
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the FTP server URL. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your FTP server.

                    This is usually 21 for FTP and 22 for secure FTP.
                ftp.type:
                  type: string
                  enum:
                    - ftp
                    - ftps
                    - sftp
                  description: >
                    __FTP Type__: Select the type of FTP protocol that is
                    applicable for this connection.
                anonymous:
                  type: boolean
                  description: >
                    __Anonymous Access?__: Select this option if the connection
                    should be made as an anonymous user.


                    Only applicable if `ftp.type` is `ftp` or `ftps`


                    Default value: `false`    
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your FTP
                    server.


                    Only applicable if `ftp.type` is `ftp` or `ftps` or
                    `anonymous` is `false`.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your FTP
                    server.


                    Only applicable if `ftp.type` is `ftp` or `ftps` or
                    `anonymous` is `false` and you are not using `private.key`
                    for authentication
                private.key:
                  type: string
                  description: >
                    __Private Key__: You can use a private key for
                    authentication instead of a password.


                    Only applicable if you are not using `password` for
                    authentication
                passphrase:
                  type: string
                  description: >
                    __Passphrase for Private Key__: Enter the passphrase for the
                    private key file if it was generated with one.


                    Only applicable if `ftp.type` is `sftp` and the
                    `private.key` has a passphrase
                ftp.mode:
                  type: string
                  enum:
                    - active
                    - passive.local
                    - passive.remote
                  description: >
                    __FTP mode__: Select whether the connection should be
                    established in active or passive FTP connection mode.
                    Usually, the default setting should be sufficient.


                    Default value: `passive.local` 
        - $ref: '#/components/schemas/file_data_credential'
    gcp_alloydb_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is in
                    the format `company.domain.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    gcp_spanner_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - is_service_account
                - project_id
                - json_creds
                - instance_id
                - schema_name
                - database_name
              properties:
                is_service_account:
                  type: boolean
                  description: >-
                    __Is Service Account Authentication?__ We currently only
                    support the __System User Authentication__ method, as it is
                    best suited for accessing your data and is tied to the
                    service account instead of the individual user account.
                    Please contact your Nexla support team if you need the __End
                    User Authentication__ mechanism.

                    * Set to `true` if you wish to choose Google Service Account
                    (System User Authentication). 
                project_id:
                  type: string
                  description: >
                    __Project ID__: Enter the Project ID to which the GCP
                    Spanner database that you wish to access belongs.
                json_creds:
                  type: object
                  description: >
                    __Service Account JSON credentials content__: This is the
                    content of the service account credentials JSON file
                    generated by Google Cloud IAM, which is added to the payload
                    as a JSON object.


                    __Required__ if `is_service_account` is `true`
                instance_id:
                  type: string
                  description: >
                    __Instance ID__: Enter the Instance ID to which the GCP
                    Spanner database that you wish to access belongs.
                schema_name:
                  type: string
                  description: >
                    Enter the Schema to which the GCP Spanner database that you
                    wish to access belongs. Leave this field blank to use the
                    default schema.
                database_name:
                  type: string
                  description: >
                    Enter the Database name of the GCP Spanner database that you
                    wish to access.
        - $ref: '#/components/schemas/database_data_credential'
    gcs_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - is_service_account
                - project_id
              properties:
                is_service_account:
                  type: boolean
                  description: >-
                    __Is Service Account Authentication?__ We support multiple
                    ways of authenticating your GCS account. We recommend using
                    the Google Service Account (System User Authentication)
                    method, as it is best suited for accessing your data and is
                    tied to the service account instead of the individual user
                    account.

                    * Set to `true` if you wish to choose Google Service Account
                    (System User Authentication). 

                    * Set this to `false` if you wish to authenticate using
                    3-legged OAuth. 

                    Default Value: `false`
                project_id:
                  type: string
                  description: >
                    __Project ID__: The Project ID to which the GCS paths you
                    wish to access belong.
                json_creds:
                  type: object
                  description: >
                    __Service Account JSON credentials content__: This is the
                    content of the service account credentials JSON file
                    generated by Google Cloud IAM, which is added to the payload
                    as a JSON object.


                    __Required__ if `is_service_account` is `true`
                auth.type:
                  type: string
                  enum:
                    - OAUTH2
                  description: >
                    __End User Authentication Type__: This must be set to
                    `OAUTH2` if you are choosing the 3-legged OAuth
                    authentication mechanism.


                    __Required__ if `is_service_account` is `false`
                oauth2.client.id:
                  type: string
                  description: |
                    __Client ID__: The Client ID of your OAuth 2.0 client.

                    __Required__ if `is_service_account` is `false`
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: The Client Secret of your OAuth 2.0
                    client.


                    __Required__ if `is_service_account` is `false`
                oauth2.access.token.url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Access Token URL__: The OAuth 2.0 Token URL used for
                    fetching the token from the API token server. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.token.type.override:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.access.token.method:
                  type: string
                  enum:
                    - POST
                  description: >
                    __Access Token URL method__: The request method used for the
                    OAuth 2.0 Token URL. This must be `POST`.


                    __Required__ if `is_service_account` is `false`  
                vendor.name:
                  type: string
                  enum:
                    - gcs
                  description: >
                    __Nexla OAuth 2.0 connector codename__: Unique codename for
                    the Nexla token refresh mechanism, which is used to identify
                    this connector. This must be `gcs`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_type:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                vendor.auth_scheme:
                  type: string
                  enum:
                    - header
                  description: >
                    __Authentication Payload Mode__: Set how the OAuth 2.0
                    Client ID and Client Secret should be sent with the Token
                    URL. This must be set to `header`.


                    __Required__ if `is_service_account` is `false`  
                vendor.scopes:
                  type: string
                  enum:
                    - https://www.googleapis.com/auth/devstorage.read_write
                  description: >
                    __API Scopes__: Scopes that should be added to the OAuth
                    token calls. This should be
                    `https://www.googleapis.com/auth/devstorage.read_write`.


                    __Required__ if `is_service_account` is `false`  
                vendor.refresh_url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Refresh Token URL__: The OAuth 2.0 Token Refresh URL used
                    for fetching a new access token using the current access
                    token and refresh token. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                vendor.has_token_expiration_ts:
                  type: boolean
                  enum:
                    - true
                  description: >
                    __Requires Auto-Refresh of Token__: GCS Access tokens are
                    short-lived, and the platform should automatically
                    continuously refresh the token to retain a valid access
                    token. This must be `true`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Access token expiration time__: Set this to the expiration
                    time (in seconds) of the access token received when you made
                    the first token request as part of the 3-legged OAuth 2.0
                    token fetching sequence. This is usually `3599` for a GCS
                    3-legged OAuth workflow.


                    __Required__ if `is_service_account` is `false`
                access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
                vendor.access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence. Note that this is the
                    same as `access_token` above but is required in the payload
                    to allow Nexla to automatically continuously refresh tokens.


                    __Required__ if `is_service_account` is `false`
                vendor.refresh_token:
                  type: string
                  description: >
                    __Refresh Token__: Set this to the refresh token received
                    when you made the first token request as part of the
                    3-legged OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
                test.path:
                  type: string
                  description: >
                    __GCS Path list access is limited to__ : Set this property
                    to `<bucket-name>` or `<bucket-name>/<folder-name>` if your
                    GCS admin has restricted access to only a specific bucket or
                    a path inside a bucket.
        - $ref: '#/components/schemas/file_data_credential'
    gdrive_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - is_service_account
                - project_id
              properties:
                is_service_account:
                  type: boolean
                  description: >-
                    __Is Service Account Authentication?__ We support multiple
                    ways of authenticating your account. We recommend using the
                    Google Service Account (System User Authentication) method,
                    as it is best suited for accessing your data and is tied to
                    the service account instead of the individual user account.

                    * Set to `true` if you wish to choose Google Service Account
                    (System User Authentication). 

                    * Set this to `false` if you wish to authenticate using
                    3-legged OAuth. 

                    Default Value: `false`
                project_id:
                  type: string
                  description: >
                    __Project ID__: The Project ID to which the GCS paths that
                    you wish to access belong.
                json_creds:
                  type: object
                  description: >
                    __Service Account JSON credentials content__: This is the
                    content of the service account credentials JSON file
                    generated by Google Cloud IAM, which is added to the payload
                    as a JSON object.


                    __Required__ if `is_service_account` is `true`
                auth.type:
                  type: string
                  enum:
                    - OAUTH2
                  description: >
                    __End User Authentication Type__: This must be set to
                    `OAUTH2` if you are choosing the 3-legged OAuth
                    authentication mechanism.


                    __Required__ if `is_service_account` is `false`
                oauth2.client.id:
                  type: string
                  description: |
                    __Client ID__: The Client ID of your OAuth 2.0 client.

                    __Required__ if `is_service_account` is `false`
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: The Client Secret of your OAuth 2.0
                    client.


                    __Required__ if `is_service_account` is `false`
                oauth2.access.token.url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Access Token URL__: The OAuth 2.0 Token URL used for
                    fetching the token from the API token server. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.token.type.override:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.access.token.method:
                  type: string
                  enum:
                    - POST
                  description: >
                    __Access Token URL method__: The request method used for the
                    OAuth 2.0 Token URL. This must be `POST`.


                    __Required__ if `is_service_account` is `false`  
                vendor.name:
                  type: string
                  enum:
                    - gdrive
                  description: >
                    __Nexla OAuth 2.0 connector codename__: Unique codename for
                    the Nexla token refresh mechanism, which is used to identify
                    this connector. This must be `gdrive`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_type:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                vendor.auth_scheme:
                  type: string
                  enum:
                    - header
                  description: >
                    __Authentication Payload Mode__: Set how the OAuth 2.0
                    Client ID and Client Secret should be sent with the Token
                    URL. This must be set to `header`.


                    __Required__ if `is_service_account` is `false`  
                vendor.scopes:
                  type: string
                  enum:
                    - https://www.googleapis.com/auth/drive
                  description: >
                    __API Scopes__: Scopes that should be added to the OAuth
                    token calls. This should be
                    `https://www.googleapis.com/auth/drive`.


                    __Required__ if `is_service_account` is `false`  
                vendor.refresh_url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Refresh Token URL__: The OAuth 2.0 Token Refresh URL that
                    is used for fetching a new access token using the current
                    access token and refresh token. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                vendor.has_token_expiration_ts:
                  type: boolean
                  enum:
                    - true
                  description: >
                    __Requires Auto-Refresh of Token__:  Access tokens are
                    short-lived, and the platform should automatically
                    continuously refresh the token to retain a valid access
                    token. This must be `true`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Access token expiration time__: Set this to the expiration
                    time (in seconds) of the access token received when you made
                    the first token request as part of the 3-legged OAuth 2.0
                    token fetching sequence. This is usually `3599` for a
                    3-legged OAuth workflow.


                    __Required__ if `is_service_account` is `false`
                access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
                vendor.access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence. Note that this is the
                    same as `access_token` above but is required in the payload
                    to allow Nexla to automatically continuously refresh tokens.


                    __Required__ if `is_service_account` is `false`
                vendor.refresh_token:
                  type: string
                  description: >
                    __Refresh Token__: Set this to the refresh token received
                    when you made the first token request as part of the
                    3-legged OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
        - $ref: '#/components/schemas/file_data_credential'
    google_pubsub_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - is_service_account
                - project_id
              properties:
                is_service_account:
                  type: boolean
                  description: >-
                    __Is Service Account Authentication?__ We support multiple
                    ways of authenticating your account. We recommend using the
                    Google Service Account (System User Authentication) method,
                    as it is best suited for accessing your data and is tied to
                    the service account instead of the individual user account.

                    * Set to `true` if you wish to choose Google Service Account
                    (System User Authentication). 

                    * Set this to `false` if you wish to authenticate using
                    3-legged OAuth. 

                    Default Value: `false`
                project_id:
                  type: string
                  description: >
                    __Project ID__: The Project ID to which the resources that
                    wish to access belong.
                json_creds:
                  type: object
                  description: >
                    __Service Account JSON credentials content__: This is the
                    content of the service account credentials JSON file
                    generated by Google Cloud IAM, which is added to the payload
                    as a JSON object.


                    __Required__ if `is_service_account` is `true`
                auth.type:
                  type: string
                  enum:
                    - OAUTH2
                  description: >
                    __End User Authentication Type__: This must be set to
                    `OAUTH2` if you are choosing the 3-legged OAuth
                    authentication mechanism.


                    __Required__ if `is_service_account` is `false`
                oauth2.client.id:
                  type: string
                  description: |
                    __Client ID__: The Client ID of your OAuth 2.0 client.

                    __Required__ if `is_service_account` is `false`
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: The Client Secret of your OAuth 2.0
                    client.


                    __Required__ if `is_service_account` is `false`
                oauth2.access.token.url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Access Token URL__: The OAuth 2.0 Token URL used for
                    fetching the token from the API token server. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.token.type.override:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                oauth2.access.token.method:
                  type: string
                  enum:
                    - POST
                  description: >
                    __Access Token URL method__: The request method used for the
                    OAuth 2.0 Token URL. This must be `POST`.


                    __Required__ if `is_service_account` is `false`  
                vendor.name:
                  type: string
                  enum:
                    - google_pubsub
                  description: >
                    __Nexla OAuth 2.0 connector codename__: The unique codename
                    for the Nexla token refresh mechanism, which is used to
                    identify this connector. This must be `google_pubsub`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_type:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request. This must be
                    `Bearer`.


                    __Required__ if `is_service_account` is `false`  
                vendor.auth_scheme:
                  type: string
                  enum:
                    - header
                  description: >
                    __Authentication Payload Mode__: Set how the OAuth 2.0
                    Client ID and Client Secret should be sent with the Token
                    URL. This must be set to `header`.


                    __Required__ if `is_service_account` is `false`  
                vendor.scopes:
                  type: string
                  enum:
                    - https://www.googleapis.com/auth/pubsub
                  description: >
                    __API Scopes__: Scopes that should be added to the OAuth
                    token calls. This should be
                    `https://www.googleapis.com/auth/pubsub`.


                    __Required__ if `is_service_account` is `false`  
                vendor.refresh_url:
                  type: string
                  enum:
                    - https://www.googleapis.com/oauth2/v4/token
                  description: >
                    __Refresh Token URL__: The OAuth 2.0 Token Refresh URL that
                    is used for fetching a new access token using the current
                    access token and refresh token. This must be
                    `https://www.googleapis.com/oauth2/v4/token`.


                    __Required__ if `is_service_account` is `false`  
                vendor.has_token_expiration_ts:
                  type: boolean
                  enum:
                    - true
                  description: >
                    __Requires Auto-Refresh of Token__:  Access tokens are
                    short-lived, and the platform should automatically
                    continuously refresh the token to retain a valid access
                    token. This must be `true`.


                    __Required__ if `is_service_account` is `false`  
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Access token expiration time__: Set this to the expiration
                    time (in seconds) of the access token received when you made
                    the first token request as part of the 3-legged OAuth 2.0
                    token fetching sequence. This is usually `3599` for a
                    3-legged OAuth workflow.


                    __Required__ if `is_service_account` is `false`
                access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
                vendor.access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence. Note that this is the
                    same as `access_token` above but is required in the payload
                    to allow Nexla to automatically continuously refresh tokens.


                    __Required__ if `is_service_account` is `false`
                vendor.refresh_token:
                  type: string
                  description: >
                    __Refresh Token__: Set this to the refresh token received
                    when you made the first token request as part of the
                    3-legged OAuth 2.0 token fetching sequence.


                    __Required__ if `is_service_account` is `false`
        - $ref: '#/components/schemas/stream_data_credential'
    hana_jdbc_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    `company.domain.com`. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database. 
        - $ref: '#/components/schemas/database_data_credential'
    hive_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - schema_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    `company.domain.com`. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.

                    Default value: `10000`
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                schema_name:
                  type: string
                  description: |
                    __Schema Name__: Enter the schema name for your database. 
        - $ref: '#/components/schemas/database_data_credential'
    jms_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - jms.vendor
                - url
                - username
                - password
              properties:
                jms.vendor:
                  type: string
                  enum:
                    - tibco
                    - activemq
                  description: >
                    __JMS Vendor__: Select the type of vendor for this JMS
                    connector.
                url:
                  type: string
                  description: >
                    __Server URL__: Enter the address of the JMS Server. This is
                    usually a Virtual IP address.
                username:
                  type: string
                  description: |
                    __Username__: Enter the username used to access this server.
                password:
                  type: string
                  description: |
                    __Password__: Enter the password used to access this server.
        - $ref: '#/components/schemas/stream_data_credential'
    kafka_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - target.bootstrap.servers
                - security.protocol
              properties:
                target.bootstrap.servers:
                  type: string
                  description: >
                    __Kafka Bootstrap Servers__: Enter the addresses of the
                    Kafka brokers. These are usually in the form of Virtual IP
                    addresses.
                security.protocol:
                  type: string
                  enum:
                    - PLAINTEXT
                    - SASL_PLAINTEXT
                    - SASL_SSL
                    - SSL
                  description: >
                    __Security Protocol__: Choose the appropriate security
                    protocol for your Kafka channels.


                    * `PLAINTEXT`: Un-authenticated, non-encrypted channel


                    * `SASL_PLAINTEXT`: SASL-authenticated non-encrypted channel


                    * `SASL_SSL`: SASL-authenticated SSL channel


                    * `SSL`: SSL channel
                sasl.jaas.config:
                  type: string
                  description: >
                    __Authentication Configuration (SASL JAAS format)__: Enter
                    the Java Authentication and Authorization Service (JAAS)
                    configuration to be used for SASL Authentication. This is
                    usually in the format
                    `org.apache.kafka.common.security.plain.PlainLoginModule
                    required username=<user_in_quotes>
                    password=<pwd_in_quotes>;`.


                    __Required__ if `security.protocol` is `SASL_PLAINTEXT` or
                    `SASL_SSL`
                group.id.prefix:
                  type: string
                  description: >
                    __Consumer Group ID__: Enter the  Group ID of the group to
                    which Nexla consumers will belong.


                    This is usually set to `nexla-consumer`.
        - $ref: '#/components/schemas/stream_data_credential'
    min_io_s3_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - nx_external_host
                - nx_external.auth.type
                - nx_external.auth.props
              properties:
                nx_external_host:
                  type: string
                  description: |
                    __MinIO Host__: The custom host URL for MinIO.
                nx_external.auth.type:
                  type: string
                  enum:
                    - min_io_s3
                  description: >
                    __Authentication Type__: The authentication mechanism for
                    MinIO.


                    * `min_io_s3`: Use this option to authenticate with MinIO
                    S3.
                nx_external.auth.props:
                  type: string
                  description: >
                    __MinIO S3 Credentials__: Authentication credentials as a
                    JSON string. Should include 'access_key_id' and
                    'secret_key'.
                access_key:
                  type: string
                  description: |
                    MinIO Access Key for accessing the MinIO S3 bucket.
                secret_key:
                  type: string
                  description: |
                    MinIO Secret Key for accessing the MinIO S3 bucket.
                test.path:
                  type: string
                  description: >
                    __S3 Path list access is limited to__: Set this property to
                    `<bucket-name>` or `<bucket-name>/<folder-name>` if your AWS
                    admin has restricted access to only a specific bucket or a
                    path inside a bucket.
                has_client_encryption:
                  type: boolean
                  description: >
                    __Enable Client Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    client-side encryption using the AWS Key Management System
                    (KMS). Set this option if KMS encryption is applicable.


                    Default value: `false`
                encryption_mode:
                  type: string
                  enum:
                    - EncryptionOnly
                    - AuthenticatedEncryption
                    - StrictAuthenticatedEncryption
                  description: >
                    __Client Side Encryption Mode__: Select the type of KMS
                    encryption mode that is applicable for this credential.


                    __Required__ if `has_client_encryption` is `true`
                kms_key:
                  type: string
                  description: >
                    __Amazon KMS Key for Encryption__: The KMS Key used for
                    encrypting/decrypting objects. Please ensure that this user
                    has appropriate KMS permissions.


                    __Required__ if `has_client_encryption` is `true`
                sse.enabled:
                  type: boolean
                  description: >
                    __Enable Server Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    server-side encryption.


                    This can be done using either __Amazon S3-managed encryption
                    keys (SSE-S3)__ or the __AWS Key Management Service
                    (SSE-KMS)__. Set this option if server-side encryption is
                    applicable.


                    Default value: `false`      
                sse.kms_key.arn:
                  type: string
                  description: >
                    __Key ARN for SSE with KMS__: The Key ARN if you want
                    server-side encryption to be performed via the AWS Key
                    Management System. You can leave this field blank if you
                    want to use Amazon S3-managed encryption keys.


                    __Required__ if `sse.enabled` is `true`
        - $ref: '#/components/schemas/file_data_credential'
    mongo_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              properties:
                ui.url_format:
                  type: string
                  enum:
                    - connection_url
                    - http_path_parts
                  description: >
                    __URL Format__: You can enter the MongoDB authentication
                    information as a MongoDB Java Connection URL (Version 3.4 or
                    later) or as parts that will be combined by Nexla to create
                    the connection string.


                    * `connection_url`: __MongoDB Connection URL__ - Enter the
                    MongoDB Java connection URL. For example, in MongoDB Atlas,
                    please select connect your application → Driver: Java →
                    version 3.4 or later.


                    * `http_path_parts`: __HTTP Path Parts__
                url:
                  type: string
                  description: >
                    __Connection URL__: Enter the MongoDB Connection URL of your
                    MongoDB instance location. This should be in the form
                    `mongodb://...`.


                    For example, in MongoDB Atlas, please select connect your
                    application → Driver: Java → version 3.4 or later.


                    Note that currently, we only support connection URLs that
                    direct to a specific database, so your connection string
                    must be in the form
                    `mongodb://<user>:<password>@.../<database>?ssl=true...`.


                    __Applicable and Required__ if `ui.url_format` is
                    `connection_url`.
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    __company.domain.com__. Do not include the connection
                    protocol.


                    __Applicable and Required__ if `ui.url_format` is
                    `http_path_parts`.
                port:
                  type: integer
                  description: >
                    __Port__: Enter the port number for your database.


                    Default value: `27017`.


                    __Applicable and Required__ if `ui.url_format` is
                    `http_path_parts`.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username for your database.


                    __Applicable and Required__ if `ui.url_format` is
                    `http_path_parts`.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password for your database.


                    __Applicable and Required__ if `ui.url_format` is
                    `http_path_parts`.
                database:
                  type: string
                  description: |
                    __Database__: Limit access to a specific database.

                    __Applicable__ if `ui.url_format` is `http_path_parts`.
        - $ref: '#/components/schemas/nosql_data_credential'
    mysql_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    `company.domain.com`. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
        - $ref: '#/components/schemas/database_data_credential'
    netsuite_jdbc_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - url
                - tba_enabled
              properties:
                url:
                  type: string
                  description: |
                    __URL__: The database connection URL for Netsuite.
                tba_enabled:
                  type: boolean
                  description: >
                    __Access using Token-Based Authentication?__ Enable this
                    checkbox to configure a token-based authentication
                    mechanism. See
                    https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/article_163239884825.html
                    for more information.


                    Default value: `false`
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.


                    __Applicable and required__  if `tba_enabled` is `false`
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.


                    __Applicable and required__  if `tba_enabled` is `false`
                account_id:
                  type: string
                  description: >
                    __NetSuite account ID__: Your NetSuite account ID. You can
                    find this value on the SuiteAnalytics Connect Driver
                    Download Page under Your Configuration.


                    __Applicable and required__  if `tba_enabled` is `true`
                consumer_key:
                  type: string
                  description: >
                    __Consumer key__: The consumer key for the integration
                    record. This string was created when you created the
                    integration record.


                    __Applicable and required__  if `tba_enabled` is `true`
                consumer_secret:
                  type: string
                  description: >
                    __Consumer Secret__: The consumer secret for the integration
                    record. This string was created when you created the
                    integration record.


                    __Applicable and required__  if `tba_enabled` is `true`
                token:
                  type: string
                  description: >
                    __Token__: This is a string identifier or ID of a token that
                    represents a unique combination of a user, a role, and an
                    integration record.


                    __Applicable and required__  if `tba_enabled` is `true`
                token_secret:
                  type: string
                  description: >
                    __Token Secret__: Token Secret generated when the Acess
                    Token was created.


                    __Applicable and required__  if `tba_enabled` is `true`
                server_zone_id:
                  type: string
                  description: >
                    __Server Zone ID__: A timestamp is needed to generate a
                    token password. This timestamp must be within plus or minus
                    five (+ or – 5) minutes of the server time. If your server
                    is not in the UTC zone, please specify the correct server
                    time zone.


                    Default value: `UTC`


                    __Applicable__  if `tba_enabled` is `true`
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    nexla_monitor_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
    oracle_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    `company.domain.com`. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    oracle_autonomous_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - oracle_wallet
                - username
                - password
              properties:
                oracle_wallet:
                  type: string
                  description: >
                    __Oracle Wallet__: Oracle Autonomous connections require a
                    wallet that contains a collection of files, including key
                    and other information required to connect to your database.

                      Add the content of your Oracle wallet file downloaded from the database. This wallet is a zip file. Encode the zip file content as a Base64-encoded string in the request.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    vector_db_data_credential:
      type: object
      properties:
        credentials:
          type: object
    pinecone_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - api_key
              properties:
                api_key:
                  type: string
                  description: |
                    __API Key__: Enter the API key for your Pinecone account.
        - $ref: '#/components/schemas/vector_db_data_credential'
    postgres_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is in
                    the format `company.domain.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    redshift_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually in the format
                    `[name].[id].[region].redshift.amazonaws.com`. Do not
                    include the connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables in
                    which you are interested.   
        - $ref: '#/components/schemas/database_data_credential'
    rest_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - auth.type
                - test.url
                - test.method
                - test.content.type
              properties:
                auth.type:
                  type: string
                  enum:
                    - NONE
                    - BASIC
                    - API_KEY
                    - TOKEN
                    - OAUTH1
                    - OAUTH2
                    - AWS_SIGNATURE
                    - gcp_service_account
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow API access through different rest connector
                    authentication mechanisms supported by the API. Select the
                    authentication mechanism that is best suited for your use
                    case.


                    __Tips__:


                    1. Select `NONE` if it is a public API. 


                    2. Select `NONE` and set appropriate `request.headers` if
                    the API requires hardcoded headers.


                    3. If the API requires API Key in header, while the option
                    above will work, we recommend selecting `API_KEY` and
                    setting appropriate options for how API Key is included in
                    Header.


                    3. Select `OAUTH2` for 2-legged or 3-legged Oauth2
                    Authentication. 


                    4. Choose appropriate settings if the API also requires
                    `JWT` or `HMAC` signature verification.


                    __Values__:

                    * `NONE`: __No Auth Mode__ Use this mode if the API does not
                    require any authentication, or if the authentication
                    information is sent as custom request headers or url query
                    parameters.


                    * `BASIC`: __Basic Auth__ - Use this mode for any API that
                    requires a verified username and password to be sent with
                    every request. This username password is sent as `Basic
                    <base-64 encoded username:password>` on the Authorization
                    request header.


                    * `API_KEY`: __Api Key__ - Use this mode for any API that a
                    key-value api key pair to be sent with every request, either
                    as a Request Header or a Query parameter.


                    * `TOKEN`: __Token__ - Use this mode for any API that
                    requires fetching a short-lived token before authenticated
                    calls can be made for other endpoints.


                    * `OAUTH1`: __OAuth 1.0__ - Use this mode for any API that
                    requires multi-step OAuth1.0 based authentication workflow.
                    Nexla supports 2-legged and 3-legged OAuth workflows and has
                    ability to automatically refresh short-lived tokens.


                    * `OAUTH2`: __OAuth 2.0__ - Use this mode for any API that
                    requires multi-step OAuth2.0 based authentication workflow.
                    Nexla supports 2-legged and 3-legged OAuth workflows and has
                    ability to automatically refresh short-lived tokens.


                    * `AWS_SIGNATURE`: __AWS Signature__ - Use this
                    authorization workflow for Amazon Web Services requests.
                    This is a special type of HMAC (Hash Message Authentication
                    Code) authentication specifically for AWS.


                    * `gcp_service_account`: __Google Service Account__ - Use
                    this authorization workflow for Google Service Account
                    authentication.
                basic.username:
                  type: string
                  description: >
                    __Username__: Enter the username field for basic
                    authentication. Nexla will automatically combine this with
                    the password and Base64-encode the pair.


                    __Applicable and required__ if `auth.type` is `BASIC` or
                    `TOKEN`
                basic.password:
                  type: string
                  description: >
                    __Password__: Enter the password field for basic
                    authentication. Nexla will automatically combine this with
                    the username and Base64-encode the pair.


                    __Applicable and required__ if `auth.type` is `BASIC` or
                    `TOKEN`
                api.key.include.mode:
                  type: string
                  enum:
                    - HEADER
                    - URL_PARAMETER
                  description: >
                    __Where to add api key on API requests__: Configure how the
                    api key should be included in subsequent requests.


                    __Applicable and required__ if `auth.type` is `API_KEY`
                api.key.auth.key:
                  type: string
                  description: >
                    __API Key Parameter Name__: If the API Key is sent as
                    __URL_PARAMETER__: Enter the URL query parameter name that
                    is used for sending the API Key as a URL parameter.


                    If the API Key is sent as __Header__: Enter the request
                    header name that should be used for sending the API Key.


                    __Applicable and required__ if `auth.type` is `API_KEY`
                api.key.auth.value:
                  type: string
                  description: >
                    __API Key Parameter Value__: If the API Key is sent as
                    __URL_PARAMETER__: Enter the value that should be sent with
                    the API Key Parameter Name query parameter.


                    If the API Key is sent as __Header__: Enter the Header value
                    that should be sent with the API Key Parameter Name request
                    header.



                    __Applicable and required__ if `auth.type` is `API_KEY`
                token.auth.url:
                  type: string
                  description: >
                    __Fetch Token URL: URL to get token__: Enter the Token URL
                    that should be accessed to fetch a token from the API token
                    server.


                    __Applicable and required__ if `auth.type` is `TOKEN`
                token.auth.method:
                  type: string
                  enum:
                    - GET
                    - POST
                    - PUT
                  description: >
                    __Fetch Token URL: HTTP method__: URL to get token__: Enter
                    the request method for the Token URL. This is usually
                    `POST`.


                    __Applicable and required__ if `auth.type` is `TOKEN`
                token.auth.token.header.name:
                  type: string
                  description: >
                    __Fetch Token URL: Header name for user/pwd__: Enter the
                    name of the request header if the token URL requires
                    authentication information like the username/password to be
                    sent in a header when requesting a token.


                    __Applicable and required__ if `auth.type` is `TOKEN`
                token.auth.body:
                  type: string
                  description: >
                    __Fetch Token URL: Request Body__: Enter the request body in
                    JSON-object format if the token URL requires a payload to be
                    sent when fetching a token.


                    __Applicable and required__ if `auth.type` is `TOKEN`
                token.auth.response.format:
                  type: string
                  enum:
                    - xml
                    - json
                    - plain
                  description: >
                    __Fetch Token URL: Response format__: Select the response
                    format of the Token URL request.


                    This is usually `json`


                    __Applicable and required__ if `auth.type` is `TOKEN`
                token.auth.token.path:
                  type: string
                  description: >
                    __Fetch Token URL Response: Path to Token__: Enter the path
                    of the token property in the response.


                    This should be a valid __JSON Path__ or __XPath__ input
                    depending on the __Fetch Token URL: Response format__



                    __Applicable and required__ if `auth.type` is `TOKEN` and
                    `token.auth.response.format` is `xml` or `json`
                token.auth.token.include.mode:
                  type: string
                  enum:
                    - HEADER
                    - URL_PARAMETER
                  description: >
                    __Where to add token on API requests__: Configure how the
                    generated token should be included in subsequent requests.


                    This is usually `HEADER`


                    __Applicable and required__ if `auth.type` is `TOKEN`
                token.auth.token.url.parameter:
                  type: string
                  description: >
                    __URL Parameter for Token in API Requests__: If the token is
                    sent as a __URL_PARAMETER__, enter the URL parameter name
                    used to send the token as a URL parameter.


                    __Applicable and required__ if `auth.type` is `TOKEN` and 
                    `token.auth.token.include.mode` is `URL_PARAMETER`
                token.auth.request.header.name:
                  type: string
                  description: >
                    __Header Name for Token in API Requests__: If the token is
                    sent as a __Header__, enter the header name used to send the
                    token.


                    __Applicable and required__ if `auth.type` is `TOKEN` and 
                    `token.auth.token.include.mode` is `HEADER`


                    Usually, this is `Authorization`
                token.auth.token.include.cookie:
                  type: boolean
                  description: >
                    __Send cookie in a header?__: If the
                    `token.auth.token.include.mode` is set to `Header`, the
                    platform can be configured to send a cookie together with a
                    token in a request header. Set this option if the vendor
                    requires a cookie for generating a token.              


                    __Applicable__ if `auth.type` is `TOKEN` and 
                    `token.auth.token.include.mode` is `HEADER`.


                    Default: `false`
                token.auth.request.header.prefix:
                  type: string
                  description: >
                    __Header Prefix for Token in API Requests__: If the token is
                    sent as a __Header__, enter the prefix (if applicable) that
                    should be prepended to the header value.


                    __Applicable and required__ if `auth.type` is `TOKEN` and 
                    `token.auth.token.include.mode` is `HEADER`.


                    Usually, this is `Bearer`.
                oauth1.token_exchange_type:
                  type: string
                  enum:
                    - 2-legged
                    - 3-legged
                  description: >
                    __Type of OAuth1 Exchange__: Choose whether the OAuth token
                    exchange should be 2-legged (i.e., server-server) or
                    3-legged (i.e., involving end-user authentication from the
                    UI).


                    __Note__: 3-legged OAuth clients require a Redirect URL when
                    setting up the client. Make sure you have set
                    `<your-nexla-ui-url>/oauth1Auth` as the redirect URL when
                    setting up the client. Replace  `<your-nexla-ui-url>` with
                    the root URL of your Nexla site.


                    __Applicable and required__ if `auth.type` is `OAUTH1`
                oauth1.request.url:
                  type: string
                  description: >
                    __URL for Request Token__: Enter the OAuth 1.0 Request URL
                    used for fetching the request token. This is the first step
                    of the 3-legged OAuth1.0 flow.


                    __Applicable and required__ if `auth.type` is `OAUTH1` and
                    `oauth1.token_exchange_type` is `3-legged`
                oauth1.request_url.req_url_params:
                  type: string
                  description: >
                    __(Optional) Request Token URL Parameters__: Enter any
                    optional parameters that should be attached to the Request
                    URL.


                    This should be in the form `key1=value1&key2=value2`. You
                    __do not__ need to include the `oauth_callback` and
                    `oauth_consumer_key`.


                    __Applicable__ if `auth.type` is `OAUTH1` and
                    `oauth1.token_exchange_type` is `3-legged`
                oauth1.auth.url:
                  type: string
                  description: >
                    __Authorization URL__: Enter the OAuth 1.0 Authorization URL
                    used to initiate user authorization. This is the second step
                    of the 3-legged OAuth1.0 flow.


                    __Applicable and required__ if `auth.type` is `OAUTH1` and
                    `oauth1.token_exchange_type` is `3-legged`
                oauth1.auth_url.auth_url_params:
                  type: string
                  description: >
                    __(Optional) Authorization URL Parameters__: Enter any
                    optional parameters that should be attached to the
                    Authorization URL.


                    This should be in the form `key1=value1&key2=value2`. You
                    __do not__ need to include properties that are autogenerated
                    or received in previous steps.


                    __Applicable__ if `auth.type` is `OAUTH1` and
                    `oauth1.token_exchange_type` is `3-legged`
                oauth1.token.url:
                  type: string
                  description: >
                    __Access Token URL__: Enter the OAuth 1.0 Token URL used to
                    convert the request token into an access token. This is the
                    final step of the 3-legged OAuth1.0 flow.


                    __Applicable and required__ if `auth.type` is `OAUTH1` and
                    `oauth1.token_exchange_type` is `3-legged`
                oauth1.token_url.token_url_params:
                  type: string
                  description: >
                    __(Optional) Access Token URL Parameters__: Enter any
                    optional parameters that should be attached to the Token
                    URL.


                    This should be in the form `0key1=value1&key2=value2`. You
                    __do not__ need to include properties that are autogenerated
                    or received in previous steps.


                    __Applicable__ if `auth.type` is `OAUTH1` and
                    `oauth1.token_exchange_type` is `3-legged`
                oauth1.signature.method:
                  type: string
                  enum:
                    - PLAINTEXT
                    - HMAC-SHA1
                    - HMAC-SHA256
                  description: >
                    __Signature Method__: Some API vendors require requests to
                    be signed with a dynamic signature algorithm. Select the
                    signature method that should be used to sign the requests.


                    Default Value: `PLAINTEXT`


                    __Applicable and required__ if `auth.type` is `OAUTH1`
                oauth1.consumer.key:
                  type: string
                  description: >
                    __Consumer Key__: Enter the consumer key for your OAuth 1.0
                    client.


                    __Applicable and required__ if `auth.type` is `OAUTH1`
                oauth1.consumer.secret:
                  type: string
                  description: >
                    __Consumer Secret__: Enter the consumer secret for your
                    OAuth 1.0 client.


                    __Applicable and required__ if `auth.type` is `OAUTH1`
                oauth1.access.token:
                  type: string
                  description: >
                    __Access Token__: Enter the access token for your OAuth 1.0
                    client.


                    __Applicable and required__ if `auth.type` is `OAUTH1`
                oauth1.access.token.secret:
                  type: string
                  description: >
                    __Access Token Secret__: Enter the access token secret for
                    your OAuth 1.0 client.


                    __Applicable and required__ if `auth.type` is `OAUTH1`
                oauth1.extra.parameters:
                  type: string
                  description: >
                    __OAuth1 Advanced Configuration (JSON)__: Enter any other
                    advanced configuration parameters like Realm, Version, etc.
                    that might be required. This information should be entered
                    as a valid JSON object.


                    Default Value: `{}`


                    __Applicable__ if `auth.type` is `OAUTH1`
                oauth2.token_exchange_type:
                  type: string
                  description: >
                    __Type of OAuth2 Exchange__: Choose whether the OAuth token
                    exchange should be 2-legged (i.e., server-server) or
                    3-legged (i.e., involving end-user authentication from the
                    UI).


                    __Note__: 3-legged OAuth clients require a Redirect URL when
                    setting up the client. Make sure you have set
                    `<your-nexla-ui-url>/oauth2Auth` as the redirect URL when
                    setting up the client. Replace `<your-nexla-ui-url>` with
                    the root URL of this site.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                oauth2.client.id:
                  type: string
                  description: >
                    __Client ID__: Enter the Client ID for your OAuth 2.0
                    client.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: Enter the Client Secret for your OAuth
                    2.0 client.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                oauth2.auth.url:
                  type: string
                  description: >
                    __Authorization URL__: Enter the OAuth 2.0 Authorization URL
                    used to initiate user authorization. This is the first step
                    of the 3-legged OAuth1.0 flow.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `oauth2.token_exchange_type` is `3-legged`
                oauth2.auth_url.auth_url_params:
                  type: string
                  description: >
                    __(Optional) Authorization Parameters__: Enter any optional
                    parameters that should be attached to the Authorization URL.


                    This should be in the form `key1=value1&key2=value2`. You
                    __do not__ need to include properties like the
                    __client_id__, __grant_type__, or __client_secret__.


                    __Applicable__ if `auth.type` is `OAUTH2` and
                    `oauth2.token_exchange_type` is `3-legged`
                oauth2.access.token.url:
                  type: string
                  description: >
                    __Access Token URL__: Enter the OAuth 2.0 Token URL used for
                    fetching tokens from the API token server.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                oauth2.token_url.token_url_params:
                  type: string
                  description: >
                    __(Optional) Access Token URL Parameters__: Enter any
                    optional parameters that should be attached to the
                    Authorization URL.


                    This should be in the form `key1=value1&key2=value2`. You
                    __do not__ need to include properties like the
                    __client_id__, __grant_type__, or __client_secret__.


                    __Applicable__ if `auth.type` is `OAUTH2` and
                    `oauth2.token_exchange_type` is `3-legged`
                oauth2.token.type.override:
                  type: string
                  description: >
                    __Token Type__: Enter the token type that should be used
                    when attaching the OAuth2.0 token to the request.


                    This is usually set to `Bearer` to indicate a Bearer token,
                    although some API vendors might use a different name or
                    case.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                oauth2.access.token.method:
                  type: string
                  enum:
                    - GET
                    - POST
                  description: >
                    __Access Token URL method__: Enter the request method used
                    for the OAuth 2.0 Token URL. This is usually `POST`.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                oauth2.client.auth.scheme:
                  type: string
                  enum:
                    - header
                    - form
                    - query
                  description: >
                    __Authentication Payload Mode__: Select how the OAuth2
                    Client ID and Client Secret should be sent with the Token
                    URL.


                    * `header`: __Encoded Header__ - The OAuth client ID and
                    secret information is attached to the Authentication header
                    as a Base-64 encoded pair.


                    * `form`: __Form Data__ - The OAuth client ID and secret
                    information are attached in the form of data payload
                    parameters.


                    *  `query`: __Query Parameters__ - The OAuth client ID and
                    secret information are attached to the Token query as query
                    parameters.


                    __Applicable and required__ if `auth.type` is `OAUTH2`.
                    Usually, this is `header`.
                oauth2.auth.body:
                  type: string
                  description: >
                    __OAuth2: Token Request Body__: Nexla automatically includes
                    standard OAuth2 token URL payload properties like
                    __grant_type__, __client_id__ and __client_secret__.
                    However, sometimes, OAuth servers require additional custom
                    payload properties to be sent with the token URL request.


                    Enter these __additional__ properties in the form of a JSON
                    dictionary.

                     __Applicable__ if `auth.type` is `OAUTH2`and `oauth2.token_exchange_type` is `2-legged`
                oauth2.auth.headers:
                  type: string
                  description: >
                    __OAuth2: Token Request Headers__: Sometimes OAuth servers
                    require additional custom headers to be sent with the token
                    URL request.


                    Add any additional request headers that must be sent as part
                    of token obtaining request. Please input as comma-separated
                    values e.g header1:value1,header2:value2.

                     __Applicable__ if `auth.type` is `OAUTH2`and `oauth2.token_exchange_type` is `2-legged`
                oauth2.access.token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence.


                    __Applicable and required__ if `auth.type` is `OAUTH2`
                vendor.has_token_expiration_ts:
                  type: boolean
                  description: >
                    __Requires Auto-Refresh of Token__: Enable this option if
                    the access tokens are short-lived and the platform should
                    automatically continuously refresh the token to retain a
                    valid access token.

                     __Applicable __ if `auth.type` is `OAUTH2` 

                     Default value: `false`
                vendor.name:
                  type: string
                  description: >
                    __Nexla OAuth 2.0 connector codename__: Codename for the
                    Nexla token refresh mechanism, which is used to identify
                    this connector. Give any string value if this is a custom
                    OAuth2.0 connector.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `vendor.has_token_expiration_ts` is `true`
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Access token expiration time__: Set this to the expiration
                    time (in seconds) of the access token received when you made
                    the first token request as part of the 3-legged OAuth 2.0
                    token fetching sequence. This is usually `3599` for a GCS
                    3-legged OAuth workflow.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `vendor.has_token_expiration_ts` is `true` 
                vendor.token_type:
                  type: string
                  description: >
                    __Token Type__: Enter the token type that should be used
                    when attaching the OAuth2.0 token to the request.


                    This is usually set to `Bearer` to indicate a Bearer token,
                    although some API vendors might use a different name or
                    case.

                     __Applicable __ if `auth.type` is `OAUTH2` and `oauth2.token_exchange_type` is `3-legged`
                vendor.scopes:
                  type: string
                  description: >
                    __(Optional) API Scopes__: Enter any additional scopes that
                    should be added to the OAuth token calls. These should be
                    added as space-separated values (`scope1 scope2 scope3`).
                    Nexla will automatically attach them to the request as the
                    `scope` payload property.
                vendor.refresh_url:
                  type: string
                  description: >
                    __Refresh Token URL__: Enter the OAuth 2.0 Token Refresh URL
                    used for fetching a new access token using the current
                    access token and refresh token. This is usually the same as
                    the OAuth2.0 Token URL.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `vendor.has_token_expiration_ts` is `true`
                vendor.auth_scheme:
                  type: string
                  enum:
                    - header
                    - form
                    - query
                  description: >
                    __Authentication Payload Mode__: Select how the OAuth2
                    Client ID and Client Secret should be sent with the Token
                    URL.


                    * `header`: __Encoded Header__ - The OAuth client ID and
                    secret information are attached to the Authentication header
                    as a Base-64 encoded pair.


                    * `form`: __Form Data__ -  The OAuth client ID and secret
                    information are attached in the form of data payload
                    parameters.


                    *  `query`: __Query Parameters__ - The OAuth client ID and
                    secret information are attached to the Token query as query
                    parameters.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `vendor.has_token_expiration_ts` is `true` 
                vendor.access_token:
                  type: string
                  description: >
                    __Access Token__: Set this to the access token received when
                    you made the first token request as part of the 3-legged
                    OAuth 2.0 token fetching sequence. Note that this is the
                    same as `access_token` above but is required in the payload
                    to allow Nexla to automatically continuously refresh tokens.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `vendor.has_token_expiration_ts` is `true`
                vendor.refresh_token:
                  type: string
                  description: >
                    __Refresh Token__: Set this to the refresh token received
                    when you made the first token request as part of the
                    3-legged OAuth 2.0 token fetching sequence.


                    __Applicable and required__ if `auth.type` is `OAUTH2` and
                    `vendor.has_token_expiration_ts` is `true`
                aws.access.key:
                  type: string
                  description: >
                    __AWS Access Key__: The access key id of the Access Key pair
                    that is used for verifying the identity of the requesting
                    user.


                    __Applicable and required__ if `auth.type` is
                    `AWS_SIGNATURE`.
                aws.secret.key:
                  type: string
                  description: >
                    __AWS Secret Key__: The access secret of the Access Key pair
                    that is used for verifying the identity of the requesting
                    user.


                    __Applicable and required__ if `auth.type` is
                    `AWS_SIGNATURE`.
                aws.region:
                  type: string
                  description: >
                    __AWS Region__: The region that is receiving the request.


                    __Applicable and required__ if `auth.type` is
                    `AWS_SIGNATURE`.
                aws.service:
                  type: string
                  description: >
                    __Service Name__: The service that is receiving the request.


                    __Applicable and required__ if `auth.type` is
                    `AWS_SIGNATURE`.          
                aws.session.token:
                  type: string
                  description: >
                    __Session Token__: Optional session token if the request
                    requires temporary security credentials. This is added to
                    the request as `x-amz-access-token` request header.


                    __Applicable__ if `auth.type` is `AWS_SIGNATURE`.
                gcp.service.account.credentials.json:
                  type: string
                  description: >
                    __Google Service Account Credentials JSON__: Enter the
                    content of the Service Content JSON file that was was
                    generated by Google Cloud IAM. This should be a valid JSON
                    object


                    __Applicable and required__ if `auth.type` is
                    `gcp_service_account`.
                gcp.service.account.oauth.scopes:
                  type: string
                  description: >
                    __Google Service Account OAuth Scopes__: Enter the OAuth 2.0
                    Scopes for Google APIs when using GCP Service Account
                    authentication. This should be a comma separated string of
                    one or more scopes.


                    __Applicable__ if `auth.type` is `gcp_service_account`.
                skip.validation:
                  type: boolean
                  description: >
                    __Skip Credential Validation__: Turn this option on to skip
                    validation of credential when the credential is being
                    created. Note that credential validation is still done when
                    the credential is used as part of a source/destination.
                    However, sometimes some APIs don't have a good endpoint that
                    can be used for just testing if the credential information
                    is accurate or not. This optional property helps avoid
                    setting `test.url` properties for such API vendors.


                    __Default__: `false`
                test.url:
                  type: string
                  description: >
                    __Credential Validation: URL__: Enter a URL from this API
                    vendor that should be used to check whether or not the
                    authentication mechanism works.


                    1. This does not need to be the same URL as the final
                    endpoint that you wish to use.


                    2. We recommend using an endpoint that does not incur a
                    noticeable response delay from the API server. For example,
                    fetch only one item if accessing an endpoint that sends an
                    array of items.


                    3. Use any public endpoint if you want to bypass credential
                    validation.


                    __Applicable and required__ if `skip.validation` is `false`
                    or not specified.          
                test.method:
                  type: string
                  enum:
                    - GET
                    - POST
                  description: >
                    __Credential Validation: API Method__: Enter the API method
                    used to execute the __Credential Validation: URL__. Usually,
                    you should set this to GET for record fetching.


                    __Applicable and required__ if `skip.validation` is `false`
                    or not specified.          
                test.body:
                  type: string
                  description: >
                    __Credential Validation: Request Body__: Enter the request
                    body in JSON-object format if the __Credential Validation:
                    URL__ requires a payload.


                    __Applicable and required__ if `skip.validation` is `false`
                    or not specified.          
                test.content.type:
                  type: string
                  enum:
                    - application/atom+xml
                    - application/x-www-form-urlencoded
                    - application/json
                    - application/json;charset=UTF-8
                    - application/octet-stream
                    - application/pdf
                    - application/problem+json
                    - application/problem+json;charset=UTF-8
                    - application/problem+xml
                    - application/rss+xml
                    - application/stream+json
                    - application/xhtml+xml
                    - application/xml
                  description: >
                    Credential Validation: Content type


                    Usually, this is `application/json`.


                    __Applicable and required__ if `skip.validation` is `false`
                    or not specified.          
                request.headers:
                  type: string
                  description: >
                    __Additional Request Headers__: Add any additional request
                    headers that must be sent as part of every request. Please
                    input these headers as comma-separated values. E.g.,
                    `header1:value1,header2:value2`.
                ignore.ssl.cert.validation:
                  type: boolean
                  description: >
                    __Ignore SSL certificate validation?__: Enable this option
                    if you need to allow an insecure SSL server connection by
                    bypassing the SSL certificate validation of the API
                    endpoint.


                    This is only needed if the API vendor's SSL Certificate has
                    expired.


                    Default value: `false`
                jwt.enabled:
                  type: boolean
                  description: >
                    __Enable JWT Authentication?__: Sometimes, API vendors
                    require JWT-based authorization as an added security layer
                    in addition to the normal authentication methods. For
                    example, vendors requiring __OAuth authentication__ might
                    use the additional __JWT assertion__ part of the OAuth
                    specification. 


                    Select this option and configure the associated properties
                    only if the API vendor requires this authentication
                    mechanism.


                    Default value: `false`
                jwt.auth.url:
                  type: string
                  description: >
                    __JWT: Token URL__: Enter the token URL that must be called
                    to initiate JWT authentication.


                    __Required__ if `jwt.enabled` is `true`
                jwt.auth.body:
                  type: string
                  description: >
                    __JWT: Token URL Request Body__: Enter the request body for
                    the JWT token URL. This must be entered as a valid JSON
                    object.


                    You can use the `{token}` macro to dynamically substitute
                    the JWT value.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.auth.content.type:
                  type: string
                  enum:
                    - application/atom+xml
                    - application/x-www-form-urlencoded
                    - application/json
                    - application/json;charset=UTF-8
                    - application/octet-stream
                    - application/pdf
                    - application/problem+json
                    - application/problem+json;charset=UTF-8
                    - application/problem+xml
                    - application/rss+xml
                    - application/stream+json
                    - application/xhtml+xml
                    - application/xml
                  description: >
                    __JWT: Token URL Content type__: Enter the content type for
                    the JWT Token URL.


                    Usually, this is `application/x-www-form-urlencoded`.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.auth.response.format:
                  type: string
                  enum:
                    - xml
                    - json
                    - plain
                  description: >
                    __JWT: Token Response Format__: Enter the response format of
                    the JWT Token URL request. 


                    This is usually `json` or `xml`.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.auth.token.path:
                  type: string
                  description: >
                    __JWT: Path to Token__: Enter the path of the token property
                    in the response.


                    This should be a valid __JSON Path__ or __XPath__ input
                    depending on the __JWT: Token Response Format__.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.auth.token.type.path:
                  type: string
                  description: >
                    __JWT: Path to Token Type__: Enter the path of the
                    token-type property in the response.


                    This should be a valid __JSON Path__ or __XPath__ input
                    depending on the __JWT: Token Response Format__.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.token.include.mode:
                  type: string
                  enum:
                    - HEADER
                    - URL_PARAMETER
                  description: >
                    __JWT: Token Include Mode__: Configure how the generated JWT
                    token should be included in subsequent requests.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.token.url.parameter:
                  type: string
                  description: >
                    __JWT: Token URL parameter__: If the __Token Include Mode__
                    is __URL_PARAMETER__, enter the URL parameter name used to
                    send the JWT token as a URL parameter.


                    __Applicable__ if `jwt.enabled` is `true` and
                    `jwt.token.include.mode` is `URL_PARAMETER`
                jwt.token.header:
                  type: string
                  description: >
                    __JWT: Token Header Name__: If the __Token Include Mode__ is
                    __Header__, enter the request header name used to send the
                    JWT token as a header.


                    __Applicable__ if `jwt.enabled` is `true` and
                    `jwt.token.include.mode` is `HEADER`
                jwt.token.header.type:
                  type: string
                  description: >
                    __JWT: Token Header Type Prefix__: If the __Token Include
                    Mode__ is __Header__, enter the prefix (if applicable) that
                    should be prepended to the header value.
                jwt.claim.expiration.sec:
                  type: integer
                  description: >
                    __JWT: Token Expiration Duration(sec)__: Enter the duration
                    in seconds over which the JWT token is valid.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.token.secret:
                  type: string
                  description: >
                    __JWT: Token Secret__: Enter the secret key used to sign the
                    JWT request and payload.


                    This is not always required.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.token.algorithm:
                  type: string
                  enum:
                    - NONE
                    - HS256
                    - HS384
                    - HS512
                    - RS256
                    - RS384
                    - RS512
                    - ES256
                    - ES384
                    - ES512
                    - PS256
                    - PS384
                    - PS512
                  description: >
                    __JWT: Signature Algorithm__: Select the algorithm used to
                    generate the JWT token signature.


                    This is usually `HS256`.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.claim.scope:
                  type: string
                  description: >
                    __JWT: Scope Claim__: Enter the value of the scope claim
                    used for token generation.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.claim.audience:
                  type: string
                  description: >
                    __JWT: Audience Claim__: Enter the value of the audience
                    claim used for token generation.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.claim.issuer:
                  type: string
                  description: >
                    __JWT: Issuer Claim__: Enter the value of the issuer claim
                    used for token generation.


                    __Applicable__ if `jwt.enabled` is `true`
                jwt.claim.extra.json:
                  type: string
                  description: >
                    __JWT: Extra Claims__: In addition to the standard claims of
                    __audience__, __scope__ and __issuer__, you can also
                    configure extra claims that must be verified.


                    Enter any extra claims here. The input should be entered in
                    the form of a valid JSON object.


                    __Applicable__ if `jwt.enabled` is `true`
                hmac.enabled:
                  type: boolean
                  description: >
                    __Enable HMAC Signature Based Authentication?__: Select this
                    mode if the API vendor requires requests to be signed with a
                    Signature generated using a custom HMAC algorithm.


                    Provide details about the signature-generation algorithm in
                    the associated input fields.


                    Default value: `false`
                hmac.api.key:
                  type: string
                  description: >
                    __HMAC: API Key__: Enter the API key that will be used to
                    sign requests. This is provided by the API vendor.


                    __Applicable__ if `hmac.enabled` is `true`
                hmac.api.secret:
                  type: string
                  description: >
                    __HMAC: API Secret__: API vendors often require an API
                    secret to also be used for HMAC signature authentication.
                    Check the vendor's API documentation for more information.


                    __Applicable__ if `hmac.enabled` is `true`
                hmac.func:
                  type: string
                  description: >
                    __HMAC: Signature Generator Function__: Enter the signature
                    generator function that will generate the appropriate
                    signature for each request.


                    We currently support the __Base64-Encoded Scala function__
                    for generating HMAC signatures.


                    Please contact your Nexla Account Manager for assistance
                    with this input.


                    __Applicable__ if `hmac.enabled` is `true`
                ui.cert_signed:
                  type: boolean
                  description: >
                    __Sign Requests with Certificates?__: Select this mode if
                    the API vendor requires requests to be signed with a shared
                    certificate.


                    Provide details about the certificate in the associated
                    input fields.


                    Default value: `false`
                client.p12:
                  type: string
                  description: >
                    __Client Certificate in P12 format__: Enter the content of
                    the P12-formatted certificate file that will be used to sign
                    the API requests.


                    The P12 file typically consists of the private key and
                    certificate chain. You can open the file in any text editor
                    and copy its content here.



                    __Applicable and required__ if `ui.cert_signed` is `true`
                client.p12.password:
                  type: string
                  description: >
                    __P12 PassPhrase__: Enter the passphrase associated with the
                    certificate file.


                    __Applicable__ if `ui.cert_signed` is `true`
    s3_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - s3_auth_type
              properties:
                s3_auth_type:
                  type: string
                  enum:
                    - Access Key
                    - ARN
                    - Instance Role
                  description: >-
                    __Authentication Mechanism__ Credentials can be configured
                    to allow S3 access through different AWS permissions
                    mechanisms. Select the type of Authentication method you
                    wish to use.

                    * `Access Key` - Select this option if you wish to use AWS
                    Access and Secret keys for your S3.

                    * `ARN` - Select this option if you wish to use IAM ARN for
                    authentication.

                    * `Instance Role` - Select this option if you wish to access
                    S3 using an IAM Instance Role. 
                access_key:
                  type: string
                  description: |
                    __AWS Access Key__

                    __Required__ if `s3_auth_type` is `Access Key`
                secret_key:
                  type: string
                  description: |
                    __AWS Secret Key__

                    __Required__ if `s3_auth_type` is `Access Key`
                external_id:
                  type: string
                  description: >
                    __External Id__: The external ID if S3 has been configured
                    for federated access.


                    __Required__ if `s3_auth_type` is
                    `ARN`                                            
                region:
                  type: string
                  description: |
                    Region for AWS S3 Account.

                    Default value: `us-east-1`
                arn:
                  type: string
                  description: >
                    __IAM ARN__: The IAM Amazon Resource Name (ARN) for which
                    these permissions are applicable. This should be entered in
                    the format `arn:partition:service:region:account:resource`.
                test.path:
                  type: string
                  description: >
                    __S3 Path list access is limited to__: Set this property to
                    `<bucket-name>` or `<bucket-name>/<folder-name>` if your AWS
                    admin has restricted access to only a specific bucket or a
                    path inside a bucket.
                has_client_encryption:
                  type: boolean
                  description: >
                    __Enable Client Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    client-side encryption using the AWS Key Management System
                    (KMS). Set this option if KMS encryption is applicable.


                    Default value: `false`
                encryption_mode:
                  type: string
                  enum:
                    - EncryptionOnly
                    - AuthenticatedEncryption
                    - StrictAuthenticatedEncryption
                  description: >
                    __Client Side Encryption Mode__: Select the type of KMS
                    encryption mode that is applicable for this credential.


                    __Required__ if `has_client_encryption` is `true`
                kms_key:
                  type: string
                  description: >
                    __Amazon KMS Key for Encryption__: The KMS Key used for
                    encrypting/decrypting objects. Please ensure that this user
                    has appropriate KMS permissions.


                    __Required__ if `has_client_encryption` is `true`
                sse.enabled:
                  type: boolean
                  description: >
                    __Enable Server Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    server-side encryption.


                    This can be done using either __Amazon S3-managed encryption
                    keys (SSE-S3)__ or the __AWS Key Management Service
                    (SSE-KMS)__. Set this option if server-side encryption is
                    applicable.


                    Default value: `false`      
                sse.kms_key.arn:
                  type: string
                  description: >
                    __Key ARN for SSE with KMS__: The Key ARN if you want
                    server-side encryption to be performed via the AWS Key
                    Management System. You can leave this field blank if you
                    want to use Amazon S3-managed encryption keys.


                    __Required__ if `sse.enabled` is `true`
        - $ref: '#/components/schemas/file_data_credential'
    s3_iceberg_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - s3_auth_type
              properties:
                s3_auth_type:
                  type: string
                  enum:
                    - Access Key
                    - ARN
                    - Instance Role
                  description: >
                    __Authentication Mechanism__

                    Credentials can be configured to allow S3 access through
                    different AWS permissions mechanisms. Select the type of
                    Authentication method you wish to use.


                    * `Access Key` - Select this option if you wish to use AWS
                    Access and Secret keys for your S3.

                    * `ARN` - Select this option if you wish to use IAM ARN for
                    authentication.

                    * `Instance Role` - Select this option if you wish to access
                    S3 using an IAM Instance Role.
                access_key_id:
                  type: string
                  description: |
                    __AWS Access Key__
                    __Required__ if `s3_auth_type` is `Access Key`
                secret_key:
                  type: string
                  description: |
                    __AWS Secret Key__
                    __Required__ if `s3_auth_type` is `Access Key`
                arn:
                  type: string
                  description: >
                    __IAM ARN__: The IAM Amazon Resource Name (ARN) for which
                    these permissions are applicable. This should be entered in
                    the format `arn:partition:service:region:account:resource`.
                external_id:
                  type: string
                  description: >
                    __External Id__: The external ID if S3 has been configured
                    for federated access.

                    __Required__ if `s3_auth_type` is `ARN`
                region:
                  type: string
                  description: |
                    Region for AWS S3 Account.
                    Default value: `us-east-1`
                test.path:
                  type: string
                  description: >
                    __S3 Path list access is limited to__: Set this property to
                    `<bucket-name>` or `<bucket-name>/<folder-name>` if your AWS
                    admin has restricted access to only a specific bucket or a
                    path inside a bucket.
                has_client_encryption:
                  type: boolean
                  description: >
                    __Enable Client Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    client-side encryption using the AWS Key Management System
                    (KMS). Set this option if KMS encryption is applicable.

                    Default value: `false`
                encryption_mode:
                  type: string
                  enum:
                    - EncryptionOnly
                    - AuthenticatedEncryption
                    - StrictAuthenticatedEncryption
                  description: >
                    __Client Side Encryption Mode__: Select the type of KMS
                    encryption mode that is applicable for this credential.

                    __Required__ if `has_client_encryption` is `true`
                kms_key:
                  type: string
                  description: >
                    __Amazon KMS Key for Encryption__: The KMS Key used for
                    encrypting/decrypting objects. Please ensure that this user
                    has appropriate KMS permissions.

                    __Required__ if `has_client_encryption` is `true`
                sse.enabled:
                  type: boolean
                  description: >
                    __Enable Server Side Encryption?__: The platform can be
                    configured to encrypt/decrypt S3 objects that require
                    server-side encryption.

                    This can be done using either __Amazon S3-managed encryption
                    keys (SSE-S3)__ or the __AWS Key Management Service
                    (SSE-KMS)__. Set this option if server-side encryption is
                    applicable.

                    Default value: `false`
                sse.kms_key.arn:
                  type: string
                  description: >
                    __Key ARN for SSE with KMS__: The Key ARN if you want
                    server-side encryption to be performed via the AWS Key
                    Management System. You can leave this field blank if you
                    want to use Amazon S3-managed encryption keys.

                    __Required__ if `sse.enabled` is `true`
        - $ref: '#/components/schemas/file_data_credential'
    sharepoint_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - oauth2.token_exchange_type
                - tenant_id
              properties:
                oauth2.token_exchange_type:
                  type: string
                  enum:
                    - 3-legged
                    - 2-legged
                  description: >
                    __Authentication Type__: Select the type of OAuth2
                    authentication mechanism you wish to use.


                    * `3-legged`: Use 3-legged OAuth for authentication.

                    * `2-legged`: Use 2-legged OAuth for authentication.
                tenant_id:
                  type: string
                  description: |
                    __Tenant ID__: The Tenant ID for your SharePoint account.
                access_token:
                  type: string
                  description: >
                    __Access Token__: Click the button above to fetch a new
                    token.


                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.name:
                  type: string
                  enum:
                    - sharepoint
                  description: |
                    __API Vendor__: The API vendor for SharePoint.

                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.token_type:
                  type: string
                  description: |
                    __Vendor Token Type__: The token type for the vendor.

                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.access_token:
                  type: string
                  description: |
                    __Vendor Access Token__: The access token for the vendor.

                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.refresh_token:
                  type: string
                  description: |
                    __Vendor Refresh Token__: The refresh token for the vendor.

                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.last_refreshed_at:
                  type: string
                  description: >
                    __Vendor Refresh Time UTC__: The last refresh time for the
                    vendor token.


                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.has_token_expiration_ts:
                  type: boolean
                  description: >
                    __Vendor info contains expiration__: Indicates whether the
                    vendor token contains expiration information.


                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.token_expires_in:
                  type: integer
                  description: >
                    __Vendor Token Expiration Time__: The expiration time for
                    the vendor token.


                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                vendor.other_info:
                  type: string
                  description: >
                    __Other Vendor Info__: Additional information for the
                    vendor.


                    __Required__ if `oauth2.token_exchange_type` is `3-legged`
                oauth2.client.id:
                  type: string
                  description: |
                    __Client ID__: The Client ID of your OAuth 2.0 client.

                    __Required__ if `oauth2.token_exchange_type` is `2-legged`
                oauth2.client.secret:
                  type: string
                  description: >
                    __Client Secret__: The Client Secret of your OAuth 2.0
                    client.


                    __Required__ if `oauth2.token_exchange_type` is `2-legged`
                auth.type:
                  type: string
                  enum:
                    - OAUTH2
                  description: |
                    __Authentication Type__: The type of authentication used.

                    Default Value: `OAUTH2`
                oauth2.access.token.method:
                  type: string
                  enum:
                    - POST
                  description: >
                    __Access Token URL method__: The request method used for the
                    OAuth 2.0 Token URL.


                    Default Value: `POST`
                oauth2.client.auth.scheme:
                  type: string
                  enum:
                    - form
                  description: >
                    __Client Authentication Scheme__: The authentication scheme
                    used for the OAuth 2.0 client.


                    Default Value: `form`
                oauth2.token.type.override:
                  type: string
                  enum:
                    - Bearer
                  description: >
                    __Token Type__: The token type that should be used when
                    attaching the OAuth2.0 token to the request.


                    Default Value: `Bearer`
                skip.validation:
                  type: boolean
                  description: |
                    __Skip Validation__: Indicates whether to skip validation.

                    Default Value: `false`
                test.content.type:
                  type: string
                  description: |
                    __Test Content Type__: The content type used for testing.

                    Default Value: `application/json`
                test.method:
                  type: string
                  description: |
                    __Test Method__: The request method used for testing.

                    Default Value: `GET`
                test.url:
                  type: string
                  description: |
                    __Test URL__: The URL used for testing.

                    Recommended Value: `https://graph.microsoft.com/v1.0/sites`
                vendor.scopes:
                  type: string
                  description: >
                    __API Scopes__: The scopes that should be added to the OAuth
                    token calls.


                    Recommended Value: `https://graph.microsoft.com/.default`
        - $ref: '#/components/schemas/file_data_credential'
    snowflake_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - snowflake.auth.type
                - username
                - database_name
                - warehouse_name
                - schema_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually in the format
                    `<account_name>.snowflakecomputing.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                snowflake.auth.type:
                  type: string
                  enum:
                    - basic
                    - key_pair
                  description: >
                    __Snowflake Authentication Type__: Credentials can be
                    configured to allow Snowflake access through different
                    Snowflake permissions mechanisms. Select the type of
                    authentication method you wish to use.


                    * `basic`: __Basic Authentication__: Select this option if
                    you wish to use the Username and Password for Snowflake
                    access.


                    * `key_pair`: __Key Pair Authentication__: Select this
                    option if you wish to use the Key Pair authentication
                    mechanism to connect to your Snowflake account.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.


                    __Applicable and required__ if `snowflake.auth.type` is
                    `basic`
                snowflake.privateKey:
                  type: string
                  description: >
                    __Private Key__: Enter the file content of the private key
                    file as a `base64` encoded string. To retrieve the file
                    content, open the PEM file in any text editor, and copy over
                    its content as the payload. Then `base64`-encode that
                    content before adding it to the payload.


                    __Applicable and required__ if `snowflake.auth.type` is
                    `key_pair`
                snowflake.privateKey.passphrase:
                  type: string
                  description: >
                    __Passphrase for Private Key__: If the private key file was
                    generated with a passphrase, please enter the passphrase
                    here.


                    __Applicable__ if `snowflake.auth.type` is `key_pair` 
                warehouse_name:
                  type: string
                  description: >
                    __Warehouse__: The Snowflake warehouse to which you wish to
                    connect.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the database to
                    which you wish to connect.
                database.field.role:
                  type: string
                  description: >
                    __Access Control Rolet__: Snowflake uses roles to control
                    access to objects in the system. Roles are granted access
                    privileges for objects in the system.

                      Usually, you can leave this field blank. However, if your Snowflake configuration requires a special, non-default role to be applied to access the objects in which you are interested, you can set the Role here.           
        - $ref: '#/components/schemas/database_data_credential'
    snowflake_dcr_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - snowflake.auth.type
                - username
                - database_name
                - warehouse_name
                - schema_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually in the format
                    `<account_name>.snowflakecomputing.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                snowflake.auth.type:
                  type: string
                  enum:
                    - basic
                    - key_pair
                  description: >
                    __Snowflake Authentication Type__: Credentials can be
                    configured to allow Snowflake access through different
                    Snowflake permissions mechanisms. Select the type of
                    authentication method you wish to use.


                    * `basic`: __Basic Authentication__: Select this option if
                    you wish to use the Username and Password for Snowflake
                    access.


                    * `key_pair`: __Key Pair Authentication__: Select this
                    option if you wish to use the Key Pair authentication
                    mechanism to connect to your Snowflake account.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.


                    __Applicable and required__ if `snowflake.auth.type` is
                    `basic`
                snowflake.privateKey:
                  type: string
                  description: >
                    __Private Key__: Enter the file content of the private key
                    file as a `base64` encoded string. To retrieve the file
                    content, open the PEM file in any text editor, and copy over
                    its content as the payload. Then `base64`-encode that
                    content before adding it to the payload.


                    __Applicable and required__ if `snowflake.auth.type` is
                    `key_pair`
                snowflake.privateKey.passphrase:
                  type: string
                  description: >
                    __Passphrase for Private Key__: If the private key file was
                    generated with a passphrase, please enter the passphrase
                    here.


                    __Applicable__ if `snowflake.auth.type` is `key_pair` 
                warehouse_name:
                  type: string
                  description: >
                    __Warehouse__: The Snowflake warehouse to which you wish to
                    connect.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the database to
                    which you wish to connect.
                database.field.role:
                  type: string
                  description: >
                    __Access Control Rolet__: Snowflake uses roles to control
                    access to objects in the system. Roles are granted access
                    privileges for objects in the system.

                      Usually, you can leave this field blank. However, if your Snowflake configuration requires a special, non-default role to be applied to access the objects in which you are interested, you can set the Role here.           
        - $ref: '#/components/schemas/database_data_credential'
    soap_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - auth.type
                - test.url
              properties:
                auth.type:
                  type: string
                  enum:
                    - NONE
                    - BASIC
                  description: >
                    __Authentication Mechanism__: Credentials can be configured
                    to allow API access through different authentication
                    mechanisms supported by the API. 
                basic.username:
                  type: string
                  description: >
                    __Username__: Enter the username field for basic
                    authentication. Nexla will automatically combine this with
                    the password and Base64-encode the pair.


                    __Required__ if `auth.type` is `BASIC`
                basic.password:
                  type: string
                  description: >
                    __Password__: Enter the password field for basic
                    authentication. Nexla will automatically combine this with
                    the username and Base64-encode the pair.


                    __Required__ if `auth.type` is `BASIC`
    sqlserver_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    __company.domain.com__. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the database to
                    which you wish to connect.
                database.field.applicationIntent:
                  type: string
                  enum:
                    - readonly
                    - readwrite
                  description: >
                    __Connection Mode / Application Intent__: You can restrict
                    database connectivity capabilities by specifying the
                    connection mode. Select __Read Only__ to connect to the
                    database in __readonly__ mode.


                    * `readonly`: Connect in read-only mode.


                    * `readwrite`: Connect in read-write mode.


                    Default value: `readwrite`           
        - $ref: '#/components/schemas/database_data_credential'
    sybase_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is in
                    the format `company.domain.com`. Do not include the
                    connection protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
                schema_name:
                  type: string
                  description: >
                    __Schema Name__: Enter the schema name for the tables you
                    are interested in. 


                    Leave this input empty `` if you wish to access tables that
                    do not belong to any schema.
        - $ref: '#/components/schemas/database_data_credential'
    teradata_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - host
                - port
                - username
                - password
                - database_name
              properties:
                host:
                  type: string
                  description: >
                    __Host__: Enter the hostname for your database. This is
                    usually an IP address or text in the format
                    __company.domain.com__. Do not include the connection
                    protocol.
                port:
                  type: integer
                  description: |
                    __Port__: Enter the port used to access your database.
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.
                database_name:
                  type: string
                  description: >
                    __Database Name__: Enter the database name if you want to
                    connect to a specific database.
        - $ref: '#/components/schemas/database_data_credential'
    tibco_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - jms.vendor
                - url
                - username
                - password
              properties:
                jms.vendor:
                  type: string
                  enum:
                    - tibco
                    - activemq
                  description: >
                    __JMS Vendor__: Select the type of vendor for this JMS
                    connector.
                url:
                  type: string
                  description: >
                    __Server URL__: Enter the address of the JMS Server. This is
                    usually a Virtual IP address.
                username:
                  type: string
                  description: |
                    __Username__: Enter the username used to access this server.
                password:
                  type: string
                  description: |
                    __Password__: Enter the password used to access this server.
        - $ref: '#/components/schemas/stream_data_credential'
    webdav_data_credential:
      allOf:
        - $ref: '#/components/schemas/data_credential'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                  description: >
                    __WebDAV Server URL__: Enter the server URL for accessing
                    the WebDAV server. This should be a fully formatted URL that
                    includes the connection protocol.
                anonymous:
                  type: boolean
                  description: >
                    __Anonymous access?__: Set this to `true` if the connection
                    should be made as an anonymous user.


                    Default value: `false`
                username:
                  type: string
                  description: >
                    __Username__: Enter the username used to access your
                    database.


                    __Applicable and required__ if `anonymous` is `false`
                password:
                  type: string
                  description: >
                    __Password__: Enter the password used to access your
                    database.


                    __Applicable and required__ if `anonymous` is
                    `false`            
        - $ref: '#/components/schemas/file_data_credential'
    probe_tree_common:
      type: object
      properties:
        status:
          type: string
          enum:
            - ok
          description: >
            Response status code from the third-party storage system to which
            this credential connects. `Ok` indicates that the request resulted
            in a valid response from the storage system.
        message:
          type: string
          enum:
            - Ok
          description: >
            Message string indicating response validity from the underlying
            storage system. `Ok` indicates that the request resulted in a valid
            response from the storage system.

            Errors are returned as relevant message strings indicating the
            failure reasons.
        connection_type:
          type: string
          description: |
            __Connector Type__: Connector codename.
      discriminator:
        propertyName: connection_type
        mapping:
          azure_blb: '#/components/schemas/file_probe_tree'
          azure_data_lake: '#/components/schemas/file_probe_tree'
          box: '#/components/schemas/file_probe_tree'
          delta_lake_azure_blb: '#/components/schemas/file_probe_tree'
          delta_lake_azure_data_lake: '#/components/schemas/file_probe_tree'
          delta_lake_s3: '#/components/schemas/file_probe_tree'
          dropbox: '#/components/schemas/file_probe_tree'
          ftp: '#/components/schemas/file_probe_tree'
          gcs: '#/components/schemas/file_probe_tree'
          gdrive: '#/components/schemas/file_probe_tree'
          min_io_s3: '#/components/schemas/file_probe_tree'
          s3: '#/components/schemas/file_probe_tree'
          s3_iceberg: '#/components/schemas/file_probe_tree'
          sharepoint: '#/components/schemas/file_probe_tree'
          webdav: '#/components/schemas/file_probe_tree'
          as400: '#/components/schemas/database_probe_tree'
          aws_athena: '#/components/schemas/database_probe_tree'
          azure_synapse: '#/components/schemas/database_probe_tree'
          bigquery: '#/components/schemas/database_probe_tree'
          databricks: '#/components/schemas/database_probe_tree'
          db2: '#/components/schemas/database_probe_tree'
          firebolt: '#/components/schemas/database_probe_tree'
          gcp_alloydb: '#/components/schemas/database_probe_tree'
          gcp_spanner: '#/components/schemas/database_probe_tree'
          hana_jdbc: '#/components/schemas/database_probe_tree'
          hive: '#/components/schemas/database_probe_tree'
          mysql: '#/components/schemas/database_probe_tree'
          netsuite_jdbc: '#/components/schemas/database_probe_tree'
          oracle: '#/components/schemas/database_probe_tree'
          oracle_autonomous: '#/components/schemas/database_probe_tree'
          postgres: '#/components/schemas/database_probe_tree'
          redshift: '#/components/schemas/database_probe_tree'
          snowflake: '#/components/schemas/database_probe_tree'
          sqlserver: '#/components/schemas/database_probe_tree'
          sybase: '#/components/schemas/database_probe_tree'
          teradata: '#/components/schemas/database_probe_tree'
          dynamodb: '#/components/schemas/nosql_probe_tree'
          firebase: '#/components/schemas/nosql_probe_tree'
          mongo: '#/components/schemas/nosql_probe_tree'
    file_probe_tree:
      allOf:
        - $ref: '#/components/schemas/probe_tree_common'
        - type: object
          properties:
            object:
              type: object
              description: >
                This object reports the folder-file structure in a nested JSON
                format for visualizing the file storage hierarchy tree.


                The unique name/identifier of any element in the storage system
                is set as the key of the relevant node. Each node entry contains
                the following:

                1. a `type` property that defines whether the element is a
                `folder`, `file`, or `meta` (Nexla probe response meta-data).

                2. the top-level node has a special `meta` key that contains
                response metadata (of the type `meta`) and a key that indicates
                the name/unique ID of the root folder.
                  - for storage systems like `s3` that have a bucket concept, the top-level keys are all bucket names to which this credential has access.
                  - for storage systems like `gdrive` that have a unique ID and synthetic display names, the keys represent unique IDs instead of folder names.
                  - for storage systems like `ftp`, `dropbox`, and `box` that do not have buckets, the top-level entry is `/` to signify the credential root folder. 
                2. a `value` property that defines the children of that node. 
                  - For a folder, the `value` is an object, with each subfolder and file as an entry.
                  - For a file, the `value` is an empty object `{}` because files do not have any children.
                3. `file`-type nodes have `created_at`, `updated_at`, and `size`
                properties that indicate the corresponding values for that file.

                4. For Goole Drive-type systems, wherein the storage assigns a
                unique identifier instead of constraining the display name to be
                unique, the `value` object contains a `display_name` property to
                indicate the name of that entry.


                __Example__ Sample value of `output` in the probe tree response:

                ```

                {
                  "/": {
                    "type": "folder",
                    "value": {
                      "subfolder_1": {
                        "type": "folder",
                        "value": {
                          "subfolder_1a": {
                            "type": "folder"
                            "value": {}
                          }
                        },
                      "subfolder_2": {
                        "type": "folder",
                        "value": {
                          "subfolder_2a": {
                            "type": "folder"
                            "value": {}
                          },
                          "file_1": {
                            "type": "file",
                            "created_at": 1664998398000,
                            "updated_at": 1664998398000,
                            "size": 152,
                            "value": {}
                          }
                        },
                      }
                  }
                ```  
              properties:
                folder_name:
                  type: object
                  description: >
                    Name or unique identifier of the folder/subfolder. This
                    value might be `/` at the root of the hierarchy for some
                    storage types, like `dropbox` and `ftp`.
                  properties:
                    type:
                      type: string
                      enum:
                        - folder
                      description: >
                        The type `folder` indicates that this property is the
                        name of a folder.
                    display_name:
                      type: string
                      description: >
                        This value indicates the display name of this folder and
                        is only present for storage systems like `gdrive`, in
                        which display names are not unique. 
                    value:
                      type: object
                      description: |
                        List of subfolders and files in this folder.
                      properties:
                        file_name:
                          type: object
                          description: |
                            Name of the file.
                          properties:
                            type:
                              type: string
                              enum:
                                - file
                            created_at:
                              type: integer
                              description: |
                                File creation time in epoch time (milliseconds).
                            updated_at:
                              type: integer
                              description: >
                                File modification time (most recent) in epoch
                                time (milliseconds).
                            size:
                              type: integer
                              description: |
                                File size in bytes. 
                            display_name:
                              type: string
                              description: >
                                This value indicates the display name of the
                                file and is only present for storage systems
                                like `gdrive`, in which display names are not
                                unique.
                meta:
                  type: object
                  description: >
                    A special metadata object that indicates the relevant
                    response Nexla metadata for probe responses. This is only
                    present at the root level.
                  properties:
                    type:
                      type: string
                      enum:
                        - meta
                    value:
                      type: object
    database_probe_tree:
      allOf:
        - $ref: '#/components/schemas/probe_tree_common'
        - type: object
          properties:
            object:
              type: object
              description: >
                This object reports the database-table-column structure in a
                nested JSON format for visualizing the database hierarchy tree.


                The unique name/identifier of any element in the storage system
                is set as the key of the relevant node. Each node entry contains
                the following:

                1. a `type` property that defines whether the element is a
                `database`, `table`, or `column`.

                2. a `value` property that defines the children of that node. 
                  - For a database, the `value` is an object, with each table included as a property of the object.
                  - For a table, the `value` is an array of objects, with each object matching a column of the database.
                  - Column objects do not have any `value` property because columns do not have any children.
                3. `column`-type nodes have `name`, `primaryKey` and
                `defaultValue` properties that define the column properties.


                __Example__ Sample value of `output` in the probe tree response.

                ```

                {
                  "DEMO_DB": {
                    "type": "database",
                    "value": {
                      "DEMO_TABLE": {
                        "type": "table",
                        "value": [
                          {
                            "name": "CREATIONDATE",
                            "primaryKey": false,
                            "type": "VARCHAR",
                            "defaultValue": null
                          },
                          {
                            "name": "PROJECTNAME",
                            "primaryKey": false,
                            "type": "VARCHAR",
                            "defaultValue": null
                          },
                          {
                            "name": "PROJECTYEAR",
                            "primaryKey": false,
                            "type": "VARCHAR",
                            "defaultValue": null
                          }
                        ]
                      }
                  }
                ```  
              properties:
                db_name_1:
                  type: object
                  description: |
                    Name of database.
                  properties:
                    type:
                      type: string
                      enum:
                        - database
                      description: >
                        The type `database` indicates that this property is the
                        name of a database.
                    value:
                      type: object
                      description: |
                        List of tables in the database.
                      properties:
                        table_name_1:
                          type: object
                          description: |
                            Name of the table.
                          properties:
                            type:
                              type: string
                              enum:
                                - table
                            value:
                              type: array
                              items:
                                type: object
                                description: >
                                  An array of objects, wherein each object is a
                                  column in the database.
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - column
                                  name:
                                    type: string
                                    description: |
                                      Name of the column.
                                  primaryKey:
                                    type: boolean
                                    description: >
                                      Whether or not this column is a primary
                                      key for the table. 
                                  defaultValue:
                                    type:
                                      - 'null'
                                      - string
                                      - number
                                    description: >
                                      Whether or not the column has a default
                                      value.               
    nosql_probe_tree:
      allOf:
        - $ref: '#/components/schemas/probe_tree_common'
        - type: object
          properties:
            object:
              type: object
              description: >
                This object reports the database-collection structure in nested
                JSON format for visualizing the database hierarchy tree.


                The unique name/identifier of any element in the storage is set
                as the key of the relevant node. Each node entry contains the
                following:

                1. a `type` property that defines whether the element is a
                `database` or `collection`.

                2. a `value` property that defines the children of that node. 
                  - For a database, the `value` is an object, with each collection as a property of the object.
                  - For a collection, this is an empty object (`{}`), as the platform does not list documents inside the collection as part of this response. Use the `probe/sample` endpoint to obtain sample documents from the collection. 

                __Example__ Sample value of `output` in the probe tree response:

                ```

                {
                  "DEMO_DB": {
                    "type": "database",
                    "value": {
                      "demo collection_1": {
                        "type": "collection",
                        "value": {}
                      },
                      "demo collection_2": {
                        "type": "collection",
                        "value": {}
                      }                

                  }
                ```  
              properties:
                db_name_1:
                  type: object
                  description: |
                    Name of the database.
                  properties:
                    type:
                      type: string
                      enum:
                        - database
                      description: >
                        The type `database` indicates that this property is the
                        name of a database,
                    value:
                      type: object
                      description: |
                        List of collections in the database.
                      properties:
                        collection_name_1:
                          type: object
                          description: |
                            Name of the collection.
                          properties:
                            type:
                              type: string
                              enum:
                                - collection
                            value:
                              type: object
                              enum:
                                - {}
    ConnectorTypeFile:
      type: string
      enum:
        - azure_blb
        - azure_data_lake
        - box
        - delta_lake_azure_blb
        - delta_lake_azure_data_lake
        - delta_lake_s3
        - dropbox
        - ftp
        - gcs
        - gdrive
        - min_io_s3
        - s3
        - s3_iceberg
        - sharepoint
        - webdav
    ConnectorTypeDatabase:
      type: string
      enum:
        - as400
        - aws_athena
        - azure_synapse
        - bigquery
        - cloudsql_mysql
        - cloudsql_postgres
        - cloudsql_sqlserver
        - databricks
        - db2
        - firebolt
        - gcp_alloydb
        - gcp_spanner
        - hana_jdbc
        - hive
        - mysql
        - netsuite_jdbc
        - oracle
        - oracle_autonomous
        - postgres
        - redshift
        - snowflake
        - snowflake_dcr
        - sqlserver
        - sybase
        - teradata
    ConnectorTypeNoSql:
      type: string
      enum:
        - dynamodb
        - firebase
        - mongo
    ConnectorTypeKafka:
      type: string
      enum:
        - confluent_kafka
        - google_pubsub
        - jms
        - kafka
        - tibco
    ConnectorTypeVectorDB:
      type: string
      enum:
        - pinecone
    FlowChildNode:
      type: object
      properties:
        id:
          type: integer
        parent_node_id:
          type: integer
          description: |
            The flow id of the flow node this node is a direct descendant of.
        origin_node_id:
          type: integer
          description: |
            The flow id of the flow node at the root of this flow chain.      
        data_source_id:
          type: integer
          format: nullable
          description: >
            The ID of the data source this flow node is linked to if this is a
            flow node for a data source.
        data_set_id:
          type: integer
          format: nullable
          description: >
            The ID of the Nexset this flow node is linked to if this is flow
            node for a Nexset. 
        data_sink_id:
          type: integer
          format: nullable
          description: >
            The ID of the data sink this flow node is linked to if this is a
            flow node for a data sink.         
        children:
          type: array
          description: |
            Each element is a flow node that is directly linked to this node.
    FlowOriginNode:
      type: object
      properties:
        id:
          type: integer
        parent_node_id:
          type: integer
          format: nullable
          description: >
            Flow id of the parent flow node if this node is not the root node in
            the flow chain. This will usually be `null` as most flow definitions
            will originate in the node for `data_source`. 
        origin_node_id:
          type: integer
          description: |
            Flow id of the root node in the flow chain.           
        data_source_id:
          type: integer
          format: nullable
          description: >
            The ID of the data source this flow node is linked to if this is a
            flow node for a data source.
        data_set_id:
          type: integer
          format: nullable
          description: >
            The ID of the Nexset this flow node is linked to if this is flow
            node for a Nexset. 
        data_sink_id:
          type: integer
          format: nullable
          description: >
            The ID of the data sink this flow node is linked to if this is a
            flow node for a data sink.                             
        shared_origin_node_id:
          type: integer
          format: nullable
        status:
          type: string
        project_id:
          type: integer
          format: nullable
        flow_type:
          type: string
        ingestion_mode:
          type: string
        name:
          type: string
        description:
          type: string
        children:
          type: array
          description: >
            Each element of this array is a flow node that is directly linked to
            this flow node.
          items:
            $ref: '#/components/schemas/FlowChildNode'
    FlowNodes:
      type: array
      items:
        $ref: '#/components/schemas/FlowOriginNode'
    FlowElements:
      type: object
      properties:
        code_containers:
          type: array
          description: |
            All code containers that are linked to flow nodes in this response.
          items:
            type: object
            properties:
              id:
                type: integer
              owner_id:
                type: integer
              org_id:
                type: integer
              name:
                type: string
              description:
                type:
                  - 'null'
              data_credentials_id:
                type:
                  - 'null'
              public:
                type: boolean
              managed:
                type: boolean
              reusable:
                type: boolean
              resource_type:
                type: string
              output_type:
                type: string
              code_type:
                type: string
              code_encoding:
                type: string
              access_roles:
                type: array
              tags:
                type: array
              copied_from_id:
                type: integer
              created_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
            additionalProperties: false
        data_sources:
          type: array
          description: >
            All data sources that are linked to flow nodes in this
            response.      
          items:
            type: object
            properties:
              id:
                type: integer
              owner_id:
                type: integer
              org_id:
                type: integer
              flow_node_id:
                type: integer
              origin_node_id:
                type: integer
              name:
                type: string
              description:
                type:
                  - 'null'
              status:
                type: string
              data_credentials_id:
                type:
                  - integer
                  - 'null'
              data_sink_id:
                type:
                  - integer
                  - 'null'
              auto_generated:
                type: boolean
              managed:
                type: boolean
              source_type:
                type: string
              connector_type:
                type: string
              connection_type:
                type: string
              template_config:
                type: object
              vendor:
                type:
                  - 'null'
              access_roles:
                type: array
              tags:
                type: array
              copied_from_id:
                type:
                  - integer
                  - 'null'
              created_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
            additionalProperties: false
        data_sets:
          type: array
          description: >
            All Nexsets that are linked to flow nodes in this
            response.            
          items:
            type: object
            properties:
              id:
                type: integer
              owner_id:
                type: integer
              org_id:
                type: integer
              flow_node_id:
                type: integer
              origin_node_id:
                type: integer
              name:
                type: string
              description:
                type: string
              status:
                type: string
              data_source_id:
                type:
                  - integer
                  - 'null'
              parent_data_set_id:
                type:
                  - integer
                  - 'null'
              code_container_id:
                type:
                  - integer
                  - 'null'
              data_sink_ids:
                type: array
              public:
                type: boolean
              managed:
                type: boolean
              access_roles:
                type: array
              tags:
                type: array
              copied_from_id:
                type:
                  - integer
                  - 'null'
              created_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
            additionalProperties: false
        data_sinks:
          type: array
          description: |
            All data sinks that are linked to flow nodes in this response.      
          items:
            type: object
            properties:
              id:
                type: integer
              owner_id:
                type: integer
              org_id:
                type: integer
              flow_node_id:
                type: integer
              origin_node_id:
                type: integer
              name:
                type: string
              description:
                type:
                  - 'null'
              status:
                type: string
              data_credentials_id:
                type: integer
              data_set_id:
                type: integer
              data_source_id:
                type:
                  - integer
                  - 'null'
              managed:
                type: boolean
              sink_type:
                type: string
              connector_type:
                type: string
              connection_type:
                type: string
              template_config:
                type: object
              vendor:
                type:
                  - 'null'
              access_roles:
                type: array
              tags:
                type: array
              copied_from_id:
                type:
                  - 'null'
              created_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
            additionalProperties: false
        data_credentials:
          type: array
          description: |
            All credentials that are referenced by flow nodes in this response.
          items:
            type: object
            properties:
              id:
                type: integer
              owner_id:
                type: integer
              org_id:
                type: integer
              name:
                type: string
              description:
                type:
                  - 'null'
              credentials_type:
                type: string
              verified_status:
                type: string
              managed:
                type: boolean
              template_config:
                type: object
              vendor:
                type:
                  - 'null'
              access_roles:
                type: array
              tags:
                type: array
              copied_from_id:
                type:
                  - 'null'
              created_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
            additionalProperties: false
        shared_data_sets:
          type: array
          description: >
            Metadata about the parent Nexset any relevant origin flow node is a
            descendant of. This is only relevant for flow nodes that originate
            in a shared Nexset instead of a data source.
        orgs:
          type: array
          items:
            $ref: '#/components/schemas/org'
        users:
          type: array
          items:
            $ref: '#/components/schemas/owner'
        projects:
          type: array
          description: >
            All projects that any of the flows in this flow response are linked
            to.
          items:
            type: object
            properties:
              id:
                type: integer
              owner_id:
                type: integer
              org_id:
                type: integer
              name:
                type: string
              description:
                type: string
              access_roles:
                type: array
    data_source:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        data_credentials_id:
          type: integer
          description: >
            __Credential ID__: Nexla data credential that contains all
            authentication information for this source.


            Note that this is not applicable for `file_upload`, `nexla_rest` and
            `email` sources but is required for all other connectors.
        source_type:
          type: string
          description: |
            __Connector Type__: Connector codename.
      discriminator:
        propertyName: source_type
        mapping:
          as400: '#/components/schemas/as400_data_source'
          aws_athena: '#/components/schemas/aws_athena_data_source'
          azure_blb: '#/components/schemas/azure_blb_data_source'
          azure_data_lake: '#/components/schemas/azure_data_lake_data_source'
          azure_synapse: '#/components/schemas/azure_synapse_data_source'
          bigquery: '#/components/schemas/bigquery_data_source'
          box: '#/components/schemas/box_data_source'
          cloudsql_mysql: '#/components/schemas/cloudsql_mysql_data_source'
          cloudsql_postgres: '#/components/schemas/cloudsql_postgres_data_source'
          cloudsql_sqlserver: '#/components/schemas/cloudsql_sqlserver_data_source'
          confluent_kafka: '#/components/schemas/confluent_kafka_data_source'
          databricks: '#/components/schemas/databricks_data_source'
          db2: '#/components/schemas/db2_data_source'
          dropbox: '#/components/schemas/dropbox_data_source'
          dynamodb: '#/components/schemas/dynamodb_data_source'
          file_upload: '#/components/schemas/file_upload_data_source'
          firebase: '#/components/schemas/firebase_data_source'
          firebolt: '#/components/schemas/firebolt_data_source'
          ftp: '#/components/schemas/ftp_data_source'
          gcp_alloydb: '#/components/schemas/gcp_alloydb_data_source'
          gcp_spanner: '#/components/schemas/gcp_spanner_data_source'
          gcs: '#/components/schemas/gcs_data_source'
          gdrive: '#/components/schemas/gdrive_data_source'
          google_pubsub: '#/components/schemas/google_pubsub_data_source'
          hana_jdbc: '#/components/schemas/hana_jdbc_data_source'
          hive: '#/components/schemas/hive_data_source'
          jms: '#/components/schemas/jms_data_source'
          kafka: '#/components/schemas/kafka_data_source'
          min_io_s3: '#/components/schemas/min_io_s3_data_source'
          mongo: '#/components/schemas/mongo_data_source'
          mysql: '#/components/schemas/mysql_data_source'
          netsuite_jdbc: '#/components/schemas/netsuite_jdbc_data_source'
          nexla_monitor: '#/components/schemas/nexla_monitor_data_source'
          nexla_rest: '#/components/schemas/nexla_rest_data_source'
          oracle: '#/components/schemas/oracle_data_source'
          oracle_autonomous: '#/components/schemas/oracle_autonomous_data_source'
          pinecone: '#/components/schemas/pinecone_data_source'
          postgres: '#/components/schemas/postgres_data_source'
          redshift: '#/components/schemas/redshift_data_source'
          rest: '#/components/schemas/rest_data_source'
          s3: '#/components/schemas/s3_data_source'
          s3_iceberg: '#/components/schemas/s3_iceberg_data_source'
          sharepoint: '#/components/schemas/sharepoint_data_source'
          snowflake: '#/components/schemas/snowflake_data_source'
          soap: '#/components/schemas/soap_data_source'
          sqlserver: '#/components/schemas/sqlserver_data_source'
          sybase: '#/components/schemas/sybase_data_source'
          teradata: '#/components/schemas/teradata_data_source'
          tibco: '#/components/schemas/tibco_data_source'
          webdav: '#/components/schemas/webdav_data_source'
    WithoutCDCSupport:
      type: object
      properties:
        source_config:
          type: object
          required:
            - start.cron
            - db_query_mode
          properties:
            start.cron:
              type: string
              description: >
                __Scheduling Frequency__: The interval at which Nexla should
                scan this source for new data. This must be in the form of a
                cron expression.
              example: 0 0 22 10 11 ? 2022
            db_query_mode:
              type: string
              enum:
                - Default
                - Query
              description: >
                __Database Fetch Mode__: Database connectors are designed to
                support self-serve capabilities for use cases ranging from
                simple table ingestion to ingestion based on complex custom
                queries. 


                * `Default`: Equivalent to running a simple (but optimized)
                SELECT clause on any database table, along with some additional
                customizations for filtering rows. 


                * `Query`: Execute data fetching based on a custom database
                query using the syntax and convention supported by the
                underlying database/warehouse.
            query:
              type: string
              description: >
                __Query__: Set the Query to be executed during each ingestion
                cycle.


                __Required__ if `db_query_mode` is `Query`
            database:
              type: string
              description: >
                __Database__: Database whose table needs to be scanned for
                data. 


                __Required__ if `db_query_mode` is `Default`
            table:
              type: string
              description: |
                __Table__: Table that needs to be scanned for data. 

                __Required__ if `db_query_mode` is `Default`
            mode:
              type: string
              enum:
                - none
                - incrementing
                - timestamp
                - incrementing,timestamp
              description: >
                __Table Scan Mode__: The default configuration of Table Mode is
                set to read all data in a table in each ingestion cycle, which
                is equivalent to a running `SELECT` clause on the table.
                However, when the table contains much more historical data than
                you wish to scan, you can instruct the platform to begin loading
                from a specific __id__ (stored in a numeric column),
                __timestamp__ (stored in a date-time column) or __both id and
                timestamp__.


                You can use the relevant Table Scan Mode to address this use
                case of partial loading from a table.


                Note that this can also be achieved by writing a properly
                structured query in Query Mode.


                Only applicable if `db_query_mode` is `Default`

                Default Value: `none`


                * `none`: Read the whole table


                * `incrementing`: Start reading from a specific ID


                * `timestamp`: Start reading from a specific timestamp


                * `incrementing,timestamp`: Start reading from a specific ID and
                timestamp
            incrementing.column.name:
              type: string
              description: >
                __ID Column__: The ID column that should be used for executing
                partial data loading from the selected table. This must be a
                numeric column.


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `incrementing` or `incrementing,timestamp`
            incrementing.load.from:
              type: string
              description: >
                __Starting ID__: The starting ID value of __ID Column__ from
                which the platform should start ingesting data.


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `incrementing` or `incrementing,timestamp`
            timestamp.column.name:
              type: string
              description: >
                __Timestamp Column__: The timestamp column that should be used
                for executing partial data loading from the selected table. This
                must be a date-time column.


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `timestamp` or `incrementing,timestamp`
            timestamp.load.from:
              anyOf:
                - type: integer
                - type: string
                  format: date-time
              description: >
                __Starting Timestamp__: The timestamp value of the __Timestamp
                Column__ from which the platform should start ingesting data.
                This must be a UNIX epoch- (milliseconds) or ISO-formatted date
                value (e.g., 2016-01-01T12:13:14).


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `timestamp` or `incrementing,timestamp`
            commit.on.read:
              type: string
              format: boolean
              enum:
                - 'false'
                - 'true'
              description: >
                __Perform Database Commit after Read?__: You can instruct the
                platform to execute a database commit if the query includes
                statements that should also be committed to the database after
                ingestion. This is typically not the case, so most of the time,
                the value should be left as false.


                Only applicable if `db_query_mode` is `Query`


                Default Value: `"false"`
    as400_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    aws_athena_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    file_data_source:
      type: object
      properties:
        source_config:
          type: object
          required:
            - start.cron
            - path
          properties:
            start.cron:
              type: string
              description: >
                __Scheduling Frequency__: The interval at which Nexla should
                scan this source for new files. This must be in the form of a
                cron expression.
              example: 0 0 22 10 11 ? 2022
            path:
              type: string
              description: >
                __Path to Scan__: The path of the folder to be scanned for new
                data.
            advanced_settings:
              type: string
              enum:
                - Auto Detect
                - Custom Text Format
                - XML
                - JSON
                - EDI
                - Log File
                - ORC
                - AVRO
                - Parquet
                - Excel
                - Fixed Width
                - PDF
                - Unstructured
                - SWIFT
                - Raw File Data
              description: >
                __Choose a pre-built File Processor__: Select a file processor
                that best matches the format of your files. The platform offers
                several built-in options to handle various file types and
                formats. You can also combine these with custom file parsing
                code for more advanced use cases.


                The platform's default configurations of automatically detecting
                Nexsets from file content are primarily driven by parsing
                appropriately based on file extensions.



                However, you can override the default parsing and further
                customize how the files are processed by selecting appropriate
                File Content Format choices.


                Some common scenarios are - 


                1. Files without extensions to indicate what type of parser
                should be applied


                2. Compressed Zip or Tar files. 

                Select Custom Text Format, and the platform will automatically
                un-compress and parse the un-compressed files based on those
                settings.

                3. Text files with fixed-width or custom column delimiters

                4. CSV files without a header row. The platform will
                automatically assign attribute names as __attribute1__,
                __attribute2__, etc.

                5. Structured files in which some lines have to be skipped
                before processing rows

                6. Files in which the name extension does not match the desired
                parser (e.g., JSON content in a .dat file)

                7. Files for which some customization has to be applied to
                designate how the default extension parser treats data.


                * `Auto Detect`: (Automatic) Automatically detect how to parse
                each file. Select this option for most use cases, even if the
                source contains files in more than one format. The platform will
                automatically detect the file format ( AVRO, CSV, EDI, Excel,
                JSON, ORC, Parquet, TSV, XML, etc.) based on the file
                extensions.

                * `Custom Text Format`: (Custom Text Parser) Force all files to
                be parsed as custom text files.

                * `XML`: (XML Parser) Force all files to be parsed as
                XML-formatted files.

                * `JSON`: (JSON Parser) Force all files to be parsed as
                JSON-formatted files.

                * `EDI`: (EDI Parser) Force all files to be parsed as
                EDI-formatted files.

                * `Log File`: (Log File Parser) Force all files to be parsed as
                Log File-formatted files.

                * `ORC`: (ORC Parser) Force all files to be parsed as
                ORC-formatted files.

                * `AVRO`: (AVRO Parser) Force all files to be parsed as AVRO
                files.

                * `Parquet`: (Parquet Parser) Force all files to be parsed as
                Parquet files.

                * `Excel`: (Excel Parser) Force all files to be parsed as Excel
                files.

                * `Fixed Width`: (Fixed Width File Parser) Force all files to be
                parsed as fixed-width files.  

                * `PDF`: (PDF Parser) Force all files to be parsed as PDF files.

                * `Unstructured`: (Unstructured.io Parser) This file parsing
                options leverages Unstructured.io's AI to parse unstructured
                data. Choose this option if you want customizations to how the
                files are parsed and Automatic parsing is not sufficient.

                * `SWIFT`: (SWIFT File Parser) This file parser is useful when
                all the files are SWIFT file. Choose this option if you want
                customizations to how the files are parsed and Automatic parsing
                is not sufficient.

                * `Raw File Data`: (Override with Custom File Processor) Use
                this option if you want to bypass Nexla's native parsers and
                only want to use custom file processors for parsing file
                content.
            overriden.extensions:
              type: string
              enum:
                - '*:txt'
                - '*:xml'
                - '*:json'
                - '*:edi'
                - '*:log'
                - '*:orc'
                - '*:avro'
                - '*:parquet'
                - '*:xlsx'
                - '*:fw'
                - '*:pdf'
                - '*:unstructured'
                - '*:swift'
              description: >
                __Force Files to detect to:__ Configure this setting to make the
                platform ignore file extensions and instead parse files as if
                they had a different extension.

                  For example, if the files have a `.dat` extension but contain JSON content, set this to `*:json`, and the platform will process the files as if they were JSON files.

                  __Required__ if `advanced_settings` is anything other than `Auto Detect`

                * `*:txt` if `advanced_settings` is `XML`

                * `*:xml` if `advanced_settings` is `JSON`

                * `*:json` if `advanced_settings` is `XML`

                * `*:edi` if `advanced_settings` is `EDI`

                * `*:log` if `advanced_settings` is `Log File`

                * `*:orc` if `advanced_settings` is `ORC`

                * `*:avro` if `advanced_settings` is `AVRO`

                * `*:parquet` if `advanced_settings` is `Parquet`

                * `*:xlsx` if `advanced_settings` is  `Excel`

                * `*:fw` if `advanced_settings` is `Fixed Width`

                * `*:pdf` if `advanced_settings` is `PDF`

                * `*:unstructured` if `advanced_settings` is `Unstructured`

                * `*:swift` if `advanced_settings` is `SWIFT`
            csv.delimiter:
              type: string
              description: >
                __Text Delimiter__: Delimiters are used to automatically split
                each row of data into multiple attributes. Select one of these
                common delimiters, or enter the character that you wish to use
                as a delimiter.


                Only applicable if `advanced_settings` is `Custom Text Format`

                Default Value: `,`


                Common Values: 

                * `,`: Comma

                * `\t`: Tab

                * `\\n`: Newline

                * `;`: Semicolon

                * `|`: Pipe

                * `^`: Caret
            csv.quote.char:
              type: string
              description: >
                __Text Qualifier Character__: Usually, text in one row is
                separated into multiple attributes based on the delimiter. A
                qualifier character is used to wrap together the text that
                should be treated as one attribute even if it includes
                occurrences of the delimiter.\\n\\n Leave this field blank if
                you wish to use the default qualifier `"`. For example, most CSV
                file generators use `"` as the qualifier; thus, `"one,two"` can
                be one attribute.


                Only applicable if `advanced_settings` is `Custom Text Format`

                Default Value: `"`
            csv.schema.detection:
              type: string
              description: >
                __Schema Attribute Detection Mode__: Configure this option to
                control how the platform should set Nexset schema attribute
                names for each column of data. Set this option to __generated__
                if your file does not have a row that should be treated as the
                header row, and the platform will assign attribute names like
                `attribute1` and `attribute2`.


                Only applicable if `advanced_settings` is `Custom Text Format`

                Default Value: `header`


                * `header`: Select this option if the file contains a header
                row. Detected Nexset attribute names will be derived from the
                column names in the header row.


                * `generated`: Select this option if the file does not contain a
                header row. Nexla will automatically assign attribute names to
                each column of data.
            csv.skip.first.lines:
              type: integer
              description: >
                __Skip Lines at the Head__: The platform can be configured to
                skip the first few lines of each file before it starts ingesting
                data into records. Set this option if a fixed number of rows in
                each file should be ignored.


                Only applicable if `advanced_settings` is `Custom Text Format`

                Default Value: `0`
            excel.schema.detection:
              type: string
              enum:
                - header
                - generated
              description: >
                __Schema Attribute Detection Mode__: Configure this option to
                control how the platform should set Nexset schema attribute
                names for each column of data. Set this option to __generated__
                if your file does not contain a row that should be treated as
                the header row, and the platform will assign attribute names
                like `attribute1` and `attribute2`.


                Only applicable if `advanced_settings` is `Excel`

                Default Value: `header`


                * `header`: Select this option if the file contains a header
                row. Detected Nexset attribute names will be derived from the
                column names in the header row.


                * `generated`: Select this option if the file does not contain a
                header. Nexla will automatically assign attribute names to each
                column of data.
            sheets:
              type: string
              description: >
                __(Optional) Data Records Cell Range__: Configure the relevant
                cell range if you want only specific cells in your sheets to be
                scanned.


                This is an optional field. Leave the field blank if you want all
                cells to be ingested. You can specify multiple ranges by using
                comma-separated values.


                For example, `sheet1!A1:B5,sheet2!C2:D5` will ingest cells
                `A1:B5` from `sheet 1` and cells `C2:D5` from `sheet2`.


                Only applicable if `advanced_settings` is set to `Excel`
            excel.range.additional:
              type: string
              description: >
                __(Optional) Metadata Cell Range__: By setting the `Data Records
                Cell Range` above you have configured the part of file that
                should be ingested by Nexla as individual records.


                But sometimes, you might want some common data in the file
                outside those cells that should be included in each record. Set
                this field to the approprite cells path format and Nexla will
                include those attributes in each ingested record.


                1. General format is
                `<sheetname>_<attributecell>:<valuecell>|...|<attributecellN>:<valuecellN>`


                2. Split attribute cell from value cell by using `:` delimiter
                (`<attributecell>:<valuecell>`)


                3. Split different key-value pairs by using `|` delimiter
                (`<attributecell_1>:<valuecell_1>|<attributecell_2>:<valuecell_2>`)


                4. Specify sheetname following with `_` to read from the
                specific sheet.


                5. Do not specify sheetname if you want to read from first
                single sheet by default.


                Only applicable if `advanced_settings` is set to `Excel`  
                   
            excel.skip.merged.cells:
              type: boolean
              description: >
                __Skip Merged cells?__: The platform can be configured to skip
                merged cells when it is ingesting data into records. Select this
                option if you want merged cells to be skipped.


                Only applicable if `advanced_settings` is set to `Excel`

                Default Value: `false`
            json.mode:
              type: string
              enum:
                - row
                - entire.file
              description: >
                __JSON Ingestion Mode__: JSON text files generated by data
                processing systems are often saved in JSON Line format, in which
                each row in the file is a valid JSON object instead of the
                entire file being a valid JSON object.


                Only applicable if `advanced_settings` is set to `JSON`

                * `row`: Each row is a separate JSON object.

                * `entire.file`: The entire file is a valid JSON object.
            json.path:
              type: string
              description: >
                __JSON Path To Data (when Ingestion Mode = entire.file)__: When
                JSON Ingestion Mode is set to `entire.file`, you can configure
                the platform to only ingest part of the JSON object.


                Set this path in JSON Path format to configure the area of the
                file from this Source that should be processed.


                Only applicable if `advanced_settings` is set to `JSON` and
                `json.mode` is `entire.file`
            json.path.additional:
              type: string
              description: >
                __Path to Additional JSON data__: Setting the `JSON Path to
                Data` above configures the part of the data file that should be
                ingested by Nexla as individual records.


                However, sometimes, you might want some common data in the file
                that is located outside of the entered JSON Path to be included
                in each record. Set this field to the appropriate file content
                in JSON path format, and Nexla will include that attribute in
                each ingested record.


                Only applicable if `advanced_settings` is set to `JSON` and
                `json.mode` is `entire.file`
            xml.mode:
              type: string
              enum:
                - row
                - entire.file
              description: >
                __XML Ingestion Mode__: XML files generated by data processing
                systems are often saved such that each row of the file is a
                valid XML object instead of the entire file being a valid XML
                object.


                Only applicable if `advanced_settings` is set to `XML` 


                * `row`: Each row is a separate XML object.

                * `entire.file`: Entire file is a valid XML object.
            xml.xpath:
              type: string
              description: >
                __XPath to Data (when Ingestion Mode = entire.file)__: When XML
                Ingestion Mode is set to `entire.file` you can configure the
                platform to only ingest part of the XML object. 


                Set this path in XPath format to configure the area of the file
                from this Source that should be processed.


                Only applicable if `advanced_settings` is set to `XML`  and
                `xml.mode` is set to `entire.file`
            xml.xpath.additional:
              type: string
              description: >
                __Path to Additional XML data__: Setting the `XPath to Data`
                above configures the part of the data file that should be
                ingested by Nexla as individual records.


                However, sometimes, you might want some common data in the file
                that is located outside of the entered XPath to be included in
                each record. Set this field to the appropriate file content in
                XPath format, and Nexla will include that attribute in each
                ingested record.


                Only applicable if `advanced_settings` is set to `XML`  and
                `xml.mode` is set to `entire.file`
            edi.xpath:
              type: string
              description: >
                __EDI XPath__: Set the path (in XPath format) to the area of the
                file that should be processed as EDI content. Note that this
                option is necessary when the entire file isn't a valid EDI file
                and only a portion of the file content is valid EDI content


                Only applicable if `advanced_settings` is set to `EDI`
            grok.pattern:
              type: string
              enum:
                - '%{SYSLOGBASE}'
                - '%{COMBINEDAPACHELOG}'
                - '%{NAGIOSLOGLINE}'
                - '%{POSTGRESQL}'
                - '%{REDISLOG}'
                - '%{JAVASTACKTRACEPART}'
              description: >
                __Grok Pattern__: Each line of a log file is parsed into
                multiple attributes by applying a Grok Pattern.


                Grok works by combining text patterns into something that
                matches your logs. Select one of these predefined patterns, or
                write your own custom Grok Pattern that should be applied when
                parsing log files.


                Only applicable if `advanced_settings` is set to `Log File`
            field.lengths:
              type: string
              description: >
                __Length of Each Field in File__: Enter the length of each field
                in the file. This should be entered as a comma-separated list of
                numbers, for ex: `10,12,8,15,20`.


                __Required__ and __applicable__ only if `advanced_settings` is
                set to `Fixed Width`. 
            fixed.width.schema.detection.mode:
              type: string
              enum:
                - header
                - generated
              description: >
                __Schema Attribute Detection Mode__: Configure this option to
                control how the platform should set Nexset schema attribute
                names for each column of data.


                * `header`: Select this option if the file contains a header
                row. Detected Nexset attribute names will be derived from the
                column names in the header row.


                * `generated`: Select this option if the file does not contain a
                header row. Nexla will automatically assign attribute names to
                each column of data.


                __Applicable__ only if `advanced_settings` is set to `Fixed
                Width`.
            padding.character:
              type: string
              description: >
                __Padding Character__: Choose or type the character that acts as
                the separator between fields. For ex: `_`. 


                Only applicable if `advanced_settings` is `Fixed Width`

                Default: single space ` `


                Common Values: 

                * ` `: Single Space

                * `` : No Padding

                * `,`: Comma

                * `\\t`: Tab

                * `\\n`: Newline

                * `;`: Semicolon

                * `|`: Pipe

                * `^`: Caret     
            line.separator.detection.enabled:
              type: boolean
              description: >
                __Auto detect line separators?__: Set this option on if you wish
                the platform to automatically detect line separators in the
                document. 


                Only applicable if `advanced_settings` is `Fixed Width`

                Default: true                                  
            line.separator:
              type: string
              description: >
                __Line Separation Character__: Specify the character that should
                be recognized by the platform as an indicator of a new line. 


                Only applicable if `advanced_settings` is `Fixed Width` and
                `line.separator.detection.enabled` is set to `true`.


                Default:  `\\n`


                Common Values: 

                * `\\t`: Tab

                * `\\n`: Newline
            remove.quotes.forced:
              type: boolean
              description: >
                __Remove Quote Characters?__: Set this option to true if you
                wish the platform to force remove quotes from strings where it
                is safe to do so. 


                Only applicable if `advanced_settings` is `Fixed Width`.

                Default: false 
            quote.char:
              type: string
              description: >
                __Quote Character__: Set the character to be treated as a quote
                character. This is relevant if the Remove Quotes Character
                setting is enabled.


                Leave this field blank if you wish to use the default qualifier
                `"` 


                Only applicable if `advanced_settings` is `Fixed Width` and
                `remove.quotes.forced` is set to `true`.  
            scalar.coercion:
              type: boolean
              description: >
                __Force Scalar Coercion of String Values?__: Set this option on
                if you wish to force coercion of string values to scalar types. 


                Only applicable if `advanced_settings` is `Fixed Width`

                Default: true
            fixed.width.skip.first.lines:
              type: integer
              description: >
                __Skip Lines at the Head__: The platform can be configured to
                skip the first few lines of each file before it starts ingesting
                data into records. Set this option if a fixed number of rows in
                each file should be ignored.


                Only applicable if `advanced_settings` is `Fixed Width`

                Default Value: `0`
            fixed.width.skip.last.lines:
              type: integer
              description: >
                __Skip Lines at the Tail__: The platform can be configured to
                skip the last few lines of each file before it starts ingesting
                data into records. Set this option if a fixed number of rows in
                each file should be ignored.


                Only applicable if `advanced_settings` is `Fixed Width`

                Default Value: `0`
            pdf.parsing.strategy:
              type: string
              enum:
                - text
                - semi-auto
                - auto-1
                - auto-2
                - image
              description: >
                __Parsing mode__: Choose the mode for extracting text from the
                PDF Files.


                The `text` strategy is used to extract the textual layer from
                the PDF file. It will emit one record per page. The `semi-auto`
                strategy uses hints to extract structured data from the PDF
                file.


                * `text`: This strategy is used to extract the textual layer
                from the PDF file. It will emit one record per page with two
                attributes: `type` with value `text`, and `text` with value
                equal to extracted content of entire page.


                * `semi-auto`: This strategy uses hints to extract structured
                data from the PDF file.


                * `auto-1`: (auto-textract) This strategy uses Textract for
                parsing PDF file.


                * `auto-2`: (auto-tesseract) This strategy uses Tesseract for
                parsing PDF file.


                * `image`: (image) This strategy exports each page as a
                Base64-encoded PNG image.


                __Applicable__ only if `advanced_settings` is set to `PDF`.
            pdf.rendering.strategy:
              type: string
              enum:
                - default
                - embedded
                - extended
                - table.as.message
                - document.as.message
              default: default
              description: >
                __Page Metadata Inclusion Mode__: Choose the mode for including
                page metadata in the generated content. This is relevant if you
                are generating embeddings from the source and wish to include
                information like page number in the embedded content.


                * `default`: (Default: Exclude From Data) This strategy is used
                to extract the textual layer from the PDF file. It will emit one
                record per page with two attributes: `type` with value `text`,
                and `text` with value equal to extracted content of entire page.


                * `embedded`:(Embedded: Include With Embeddings) Choose this
                option if you wish to include page metadata in embeddings. This
                is only relevant if you have opted into generating embeddings.


                * `extended`: (Extended: Include Without Embeddings)  Choose
                this option if you wish to include page metadata in the
                generated content when embeddings are not generated.


                * `table.as.message`: (Message Per Table) Choose this option if
                you wish to emit one message per table in the document. This
                option is useful if your processing logic requires table-level
                granularity.


                * `document.as.message`: (File Content as Message) Choose this
                option if you wish to emit one message for entire file. This
                option is useful if your processing logic requires file-level
                granularity.


                __Applicable__ only if `advanced_settings` is set to `PDF`.
            pdf.parsing.emitTextBlocks:
              type: boolean
              description: >
                __Extract Text Blocks?__: When parsing a PDF file only table
                blocks are extracted. This option allows you to extract
                additional text blocks between table blocks as record.


                __Applicable__ only if `advanced_settings` is set to `PDF` and
                `pdf.parsing.strategy` is `semi-auto`. 


                Default: true 
            pdf.document.password:
              type: string
              description: >
                __(Optional) Document Password__: Enter the password for opening
                and processing the PDF files if they are password protected.


                __Applicable__ only if `advanced_settings` is set to `PDF`.
            pdf.parsing.emptyValuePlaceholder:
              type: string
              description: >
                __Placeholder Text for empty values__: Set the text placeholder
                to be used if a cell in the parsed table is empty.


                __Applicable__ only if `advanced_settings` is set to `PDF`. 


                Default: `(blank)` 
            pdf.parsing.tables:
              type: string
              description: >
                __Configuration Settings for Extracting Tables__:  Set this
                property with all configuration settings required for extracting
                Nexla records from different slices of structured data in the
                file. This property must be a valid JSON object, with some or
                all of the keys listed below.


                1. `columns`: This must be an array of column names in the
                table. This is the only **required** property in this object.
                Column names should be listed from left to right or top to
                bottom. There are two special values : `(blank)` for a column
                without a name in the table and `(column)` or `(column=Desired
                Name)` for empty columns.


                2. `forceBoldHeaders`: A boolean that defaults to false. If
                true, this property only treats headers that are in bold as
                attribute names.


                3. `forceFullWidth`: A boolean that defaults to true. If true,
                the parser uses entire page width as table width, else the
                parser tries to treat least possible width as table width.


                4. `header`: Configures whether columns are defined horizontaly
                (value `ROW`) or vertically (value `COLUMN`).


                5. `tupleNumber`: An integer value if the header mode is set to
                COLUMN and the table does not take up entire page width.


                6. `spacing`: A double data type used for tuning for complex
                documents. Defaults to 2.5 



                __Applicable and required__ if `advanced_settings` is set to
                `PDF` and `pdf.parsing.strategy` is `semi-auto`. 


                Example: `[{\n\t\"columns\": [  ]\n}]`
            pdf.parsing.auto-1.outputText:
              type: boolean
              description: >
                __Extract Text Blocks?__: Set this option to true if you wish to
                extrack text blocks from the PDF file. 


                __Applicable__ only if `advanced_settings` is set to `PDF` and
                `pdf.parsing.strategy` is `auto-1`.


                Default Value: `true`
            pdf.parsing.auto-1.outputTables:
              type: boolean
              description: >
                __Extract Table Blocks?__: Set this option to true if you wish
                to extract table blocks from the PDF file. 


                __Applicable__ only if `advanced_settings` is set to `PDF` and
                `pdf.parsing.strategy` is `auto-1`.


                Default Value: `true`
            pdf.parsing.image.scale:
              type: string
              description: >
                __Image Scale__: Set the scale factor for the image.


                __Applicable__ only if `advanced_settings` is set to `PDF` and
                `pdf.parsing.strategy` is `image`.


                Default Value: `1.25`
            unstructured.gz.uncompressed.content.type:
              type: string
              enum:
                - application/pdf
              description: >
                __Content Type for Compressed Files__: In case the files in your
                file system are compressed files, set this to the content type
                of the files after uncompression.


                * `application/pdf`: Set this if the files are compressed PDF
                files.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured`.
            unstructured.encoding:
              type: string
              description: >
                __Content Encoding Method__: Set this to the content encoding
                method that should be used for decoding text input.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured`.
            unstructured.include.page.breaks:
              type: boolean
              default: false
              description: >
                __Include Page Breaks?__: Set this option to true if you wish to
                include page breaks in the extracted content.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured`.
            unstructured.pdf.infer.table.structure:
              type: boolean
              default: false
              description: >
                __Infer Table Structure In PDFs?__: Set this to true if you wish
                to include 'text_as_html' metadata for table elements within
                PDFs.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured`.
            unstructured.chunking.strategy:
              type: string
              enum:
                - ''
                - by_title
              description: >
                __Chunking Strategy__: Set this to the strategy for chunking the
                returned elements. Leave it blank for default strategy.


                * ``: Default strategy.

                * `by_title`: Chunk by title.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured`.
            unstructured.multipage.sections:
              type: boolean
              default: true
              description: >
                __Allow Sections to Span Multiple Pages__: Set this to true for
                allowing sections to span multiple pages. This is only
                applicable if chunking strategy has been set.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured` and `unstructured.chunking.strategy` is set to
                `by_title`.
            unstructured.combine.under.n.chars:
              type: integer
              default: 500
              description: >
                __Minimum # of characters for combing elements__: Set this to
                minimum number of characters in a section until which elements
                should be combined.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured` and `unstructured.chunking.strategy` is set to
                `by_title`.
            unstructured.new.after.n.chars:
              type: integer
              default: 1500
              description: >
                __(Soft) Maximum # of characters in a section__: Set this to
                (soft) maximum number of characters that can be present in a
                section. This is a soft maximum. A new section will be created
                soon after / before this number is hit.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured` and `unstructured.chunking.strategy` is set to
                `by_title`.
            unstructured.max.characters:
              type: integer
              default: 1500
              description: >
                __(Hard) Maximum # of characters in a section__: Set this to
                (hard) maximum number of characters that can be present in a
                section.


                __Applicable__ only if `advanced_settings` is set to
                `Unstructured` and `unstructured.chunking.strategy` is set to
                `by_title`.
            lenient:
              type: boolean
              default: true
              description: >
                __Is lenient?__: Indicates whether the parser is permissive or
                not. Defaults to true, meaning the parser will do a best effort
                to read as much from the message content as possible regardless
                of the content and block boundaries beeing valid or not.


                __Applicable__ only if `advanced_settings` is set to `SWIFT`.


                Default Value: `true`
            parse.text.block:
              type: boolean
              default: true
              description: >
                __Should Parse Text Block?__: Set this to true you if you wish
                the text block (block 4) to be parsed.


                __Applicable__ only if `advanced_settings` is set to `SWIFT`.


                Default Value: `true`
            parse.trailer.block:
              type: boolean
              default: true
              description: >
                __Should Parse Trailer Block?__: Set this to true you if you
                wish the trailer block (block 5) to be parsed.


                __Applicable__ only if `advanced_settings` is set to `SWIFT`.


                Default Value: `true`
            parse.user.block:
              type: boolean
              default: true
              description: >
                __Should Parse User Block?__: Set this to true you if you wish
                the user block to be parsed.


                __Applicable__ only if `advanced_settings` is set to `SWIFT`.


                Default Value: `true`
            post.processor:
              type: boolean
              default: false
              description: >
                __Generate Embeddings?__: Set this to true if you want Nexla to
                generate embeddings while processing these files. This is useful
                for RAG workflows where the file content needs to be added to a
                Vector Database.


                __Applicable__ only if `advanced_settings` is set to `Custom
                Text Format` or `PDF`.


                Default Value: `false`
            runtime_data_credentials_id:
              type: integer
              description: >
                __Runtime Data Credentials For LLM__: Set the Nexla Credential
                Id for the OpenAI API that should be used for generating
                embeddings.


                __Applicable and required__ only if `post.processor` is set to
                `true`.
            model:
              type: string
              description: >
                __Embedding Model__: Set the model that should be used for
                generating embeddings.


                __Applicable and required__ only if `post.processor` is set to
                `true`.


                Example: `text-embedding-ada-002`
            property:
              type: string
              description: >
                __Attribute for embeddings__: Set the data property that should
                be used for generating embeddings. For example, if your input
                data has a property called `text` that you wish to use for
                embeddings, set this value to `text`.


                __Applicable and required__ only if `post.processor` is set to
                `true`.


                Example: `text`
            chunk_threshold:
              type: integer
              default: 1000
              description: >
                __Chunking Limit__: Set the size segments that the parsed text
                should be broken down to.


                __Applicable__ only if `post.processor` is set to `true`.


                Default Value: `1000`
            ignore.files.older.than.ms:
              type: integer
              format: epoch
              description: >
                __Only read files modified after:__ Set this property to
                indicate whether the platform should skip the ingestion of some
                files based on the file modification date.


                Note that the platform always keeps track of whether or not a
                file has been processed. Therefore, changes to a previously
                ingested (or ignored) file that cause a change in its
                modification date do result in the file being processed again.


                Default value: ''
            path_exclusions:
              type: boolean
              description: >
                __Customize Paths to be Scanned/Ignored__: Once you have
                selected a root bucket/folder/path to be scanned for data, you
                can further indicate specific path patterns to be scanned or
                ignored within the selected pattern.


                Enable this setting and configure the relevant path patterns if
                you want the platform to scan (or ignore) all sub-folders or
                files that match a pattern.


                Default Value: `false`
            whitelist.pathmatchers:
              type: string
              description: >
                __Paths to be scanned Eg. **/Done/__: Configure a path pattern
                if you want to only scan sub-folders or files that match a
                pattern. For example, enter `**/ABC/*` if you would like to only
                scan files in the subfolder ABC.


                **Note**:

                1. Patterns must match the **Apache Ant Path Pattern**. See
                [Apache Ant Path
                Documentation](https://ant.apache.org/manual/dirtasks.html) for
                examples.

                2. Patterns must start from the root of the location accessible
                to the credentials.

                3. You will still need to select a base folder (root or a
                subfolder). Only pattern matches that are inside the selected
                base folder will be scanned.

                 Only applicable if  `path_exclusions` is `true`
            blacklist.pathmatchers:
              type: string
              description: >
                __Paths NOT to be scanned. E.g., **/archives/__: Configure a
                path pattern if you do __NOT__ want to scan sub-folders or files
                that match a pattern. For example, enter `**/ABC/*` if you would
                like to ignore files that are in the subfolder ABC.

                **Note** 

                1. Patterns must match the **Apache Ant Path Pattern**. See
                [Apache Ant Path
                Documentation](https://ant.apache.org/manual/dirtasks.html) for
                examples.

                2. Patterns must start from the root of the location accessible
                to the credentials.

                3. You will still need to select a base folder (root or a
                subfolder). Only pattern matches that are inside the selected
                base folder will be ignored.


                Only applicable if  `path_exclusions` is `true`
            timezone:
              type: string
              description: |
                __Timezone for Path Format__
                Only applicable if  `path_exclusions` is `true`
            schema.detection.once:
              type: boolean
              description: >
                __Force a Single Schema__: The platform's automatic Nexset
                detection mechanism ensures that similar files are always
                processed as the same Nexset, even if the file extensions are
                different.


                However, sometimes, it might be beneficial to bypass Nexset
                detection and enforce a single schema. Use this setting to force
                the platform to only detect one Nexset for this Source.


                For example, you might want to force a single schema in the
                following scenarios:

                1. Your business case requirement is time-sensitive to any
                processing latencies, and you know that the data will always be
                in the same structure. While the Schema Detector does not incur
                a large overhead per file, for high file volumes, bypassing this
                additional processing might result in noticeable improvement.

                2. You know that files should always be processed as the same
                Nexset, but there is a high likelihood of sparse data. As the
                Detector might not find significant overlap in the case of
                sparse data, enforcing a single schema will ensure that the
                detector will only grow the Nexset, regardless of the presence
                or absence of overlapping.


                Default Value: `false`
            allowGrouping:
              type: boolean
              description: >
                __Enable Grouping__: Set this option and associated settings if
                you have files in which rows of data need to be combined based
                on the value of a key.


                For example, this is useful if you have CSV files with a column
                __order_number__ in addition to other columns of information
                about that order, and instead of including each row as a unique
                record, you want a Nexset in which all orders with the same
                number are concatenated as one record at the time of ingestion.
                To produce a Nexset with the record structure including the
                attribute __order_number__ and another attribute
                __order_details__, with an array of objects containing the
                values of the other columns, you can set __order_number__ as the
                __Grouping Key Attribute__ and __order_details__ as the
                __Grouped Field Name__.


                Default Value: `false`
            group.by.keys:
              type: string
              description: >
                __Grouping Key Attribute__: The name of the column/attribute
                based on which grouping needs to be performed.


                For example, if you have CSV files with a column
                __order_number__ in addition to other columns of information
                about that order and grouping needs to be performed based on the
                column __order_number__, set the value in this box to
                __order_number__. Data will now be grouped by the
                __order_number__.


                Required and only applicable if ` allowGrouping` is `true`.    
            group.field.name:
              type: string
              description: >
                __Grouped Field Name__: Enter the attribute name for the grouped
                object in the resulting Nexset.


                For example, if you have CSV files with a column
                __order_number__ in addition to other columns of information
                about that order, and grouping needs to be performed based on
                the __order_number__, set this input to __order_details__. The
                resulting Nexset will contain the attribute __order_details__,
                which will include an array of objects containing the content of
                each row of grouped data.


                Required and only applicable if ` allowGrouping` is `true`.
                      
            group.publish.null.key:
              type: string
              description: >
                __Publish value of null key in grouping__: You can configure how
                the platform should process rows of data in which the Grouping
                Key Attribute is missing.


                Turn on this setting, and the platform will assign such rows to
                a Grouping Key Attribute with the value `null`. Turn off this
                setting, and the platform will ignore such rows.


                Only applicable if ` allowGrouping` is `true`
    azure_blb_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    azure_data_lake_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    azure_synapse_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    bigquery_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    box_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    WithCDCSupport:
      type: object
      properties:
        source_config:
          type: object
          required:
            - start.cron
            - db_query_mode
          properties:
            start.cron:
              type: string
              description: >
                __Scheduling Frequency__: The interval at which Nexla should
                scan this source for new data. This must be in the form of a
                cron expression.
              example: 0 0 22 10 11 ? 2022
            db_query_mode:
              type: string
              enum:
                - Default
                - Query
              description: >
                __Database Fetch Mode__: Database connectors are designed to
                support self-serve capabilities for use cases ranging from
                simple table ingestion to ingestion based on complex custom
                queries. 


                * `Default`: Equivalent to running a simple (but optimized)
                SELECT clause on any database table, along with some additional
                customizations for filtering rows. 


                * `Query`: Execute data fetching based on a custom database
                query using the syntax and convention supported by the
                underlying database/warehouse.
            query:
              type: string
              description: >
                __Query__: Set the Query to be executed during each ingestion
                cycle.


                __Required__ if `db_query_mode` is `Query`
            database:
              type: string
              description: >
                __Database__: Database whose table needs to be scanned for
                data. 


                __Required__ if `db_query_mode` is `Default`
            table:
              type: string
              description: |
                __Table__: Table that needs to be scanned for data. 

                __Required__ if `db_query_mode` is `Default`
            mode:
              type: string
              enum:
                - none
                - incrementing
                - timestamp
                - incrementing,timestamp
              description: >
                __Table Scan Mode__: The default configuration of Table Mode is
                set to read all data in a table in each ingestion cycle, which
                is equivalent to a running `SELECT` clause on the table.
                However, when the table contains much more historical data than
                you wish to scan, you can instruct the platform to begin loading
                from a specific __id__ (stored in a numeric column),
                __timestamp__ (stored in a date-time column) or __both id and
                timestamp__.


                You can use the relevant Table Scan Mode to address this use
                case of partial loading from a table.


                Note that this can also be achieved by writing a properly
                structured query in Query Mode.


                Only applicable if `db_query_mode` is `Default` and
                `cdc.enabled` is `false`

                Default Value: `none`


                * `none`: Read the whole table


                * `incrementing`: Start reading from a specific ID


                * `timestamp`: Start reading from a specific timestamp


                * `incrementing,timestamp`: Start reading from a specific ID and
                timestamp
            incrementing.column.name:
              type: string
              description: >
                __ID Column__: The ID column that should be used for executing
                partial data loading from the selected table. This must be a
                numeric column.


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `incrementing` or `incrementing,timestamp`
            incrementing.load.from:
              type: string
              description: >
                __Starting ID__: The starting ID value of __ID Column__ from
                which the platform should start ingesting data.


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `incrementing` or `incrementing,timestamp`
            timestamp.column.name:
              type: string
              description: >
                __Timestamp Column__: The timestamp column that should be used
                for executing partial data loading from the selected table. This
                must be a date-time column.


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `timestamp` or `incrementing,timestamp`
            timestamp.load.from:
              anyOf:
                - type: integer
                - type: string
                  format: date-time
              description: >
                __Starting Timestamp__: The timestamp value of the __Timestamp
                Column__ from which the platform should start ingesting data.
                This must be a UNIX epoch- (milliseconds) or ISO-formatted date
                value (e.g., 2016-01-01T12:13:14).


                Only applicable if `db_query_mode` is `Default` and `mode` is
                `timestamp` or `incrementing,timestamp`
            commit.on.read:
              type: string
              format: boolean
              enum:
                - 'false'
                - 'true'
              description: >
                __Perform Database Commit after Read?__: You can instruct the
                platform to execute a database commit if the query includes
                statements that should also be committed to the database after
                ingestion. This is typically not the case, so most of the time,
                the value should be left as false.


                Only applicable if `db_query_mode` is `Query`


                Default Value: `"false"`
            cdc.enabled:
              type: boolean
              description: >
                __Enable Change Data Capture (CDC)__: Select this option if you
                would like the platform to monitor database transaction logs to
                determine data ingestion.


                Note that your DBA will need to grant necessary Change Data
                Capture permissions to allow Nexla to access transaction logs.
                Contact Nexla support for relevant instructions.


                If limitations that prevent you from enabling CDC controls on
                your database are in place, you can still set up this source for
                incremental ingestion by disabling this option and instead
                selecting incremental table ingestion rules.


                Default value: `false`


                __Applicable__ if `db_query_mode` is `Default`
            cdc.snapshot.enabled:
              type: boolean
              description: >
                __CDC: Ingest Initial Snapshot__: Choose this option if you want
                to perform a one-time historical load of all data in the table
                during the first ingestion from the source. If this option is
                disabled, only events observed after the source is first
                activated will be processed.


                Default value: `false`


                __Applicable__ if `db_query_mode` is `Default` and `cdc.enabled`
                is `true`
            cdc.capture.delete:
              type: boolean
              description: >
                __CDC: Track Deletions__: Choose this option if you also need to
                track deletions.


                You might want this option enabled if you intend to link this
                source to a destination that needs to be kept in sync with the
                source by tracking and removing any rows that have been deleted.


                With this option enabled, the detected Nexset will include a
                Nexset record for each deletion event. This record will always
                contain a `nexla_op` attribute with the value `DELETE`.
                Additionally, it will include either the primary key of the
                deleted row or, if the table contains no primary key columns,
                the content of the entire row.


                Default value: `false`


                __Applicable__ if `db_query_mode` is `Default` and `cdc.enabled`
                is `true`
    cloudsql_mysql_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    cloudsql_postgres_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    cloudsql_sqlserver_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    stream_data_source:
      type: object
      properties:
        source_config:
          type: object
          required:
            - start.cron
            - parser.type
          properties:
            start.cron:
              type: string
              description: >
                __Scheduling Frequency__: The interval at which Nexla should
                scan this source for new files. This must be in the form of a
                cron expression.
              example: 0 0 22 10 11 ? 2022
            parser.type:
              type: string
              enum:
                - json
                - csv
                - tsv
                - txt
                - xml
              description: >
                __Data Format__: Select the data format parser for the data in
                the topic. This is usually JSON.
    confluent_kafka_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/stream_data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - topic
              properties:
                topic:
                  type: string
                  description: |
                    __Topic__: Select the topic for your data.
                offset.mode:
                  type: string
                  enum:
                    - earliest
                    - from_date
                    - latest
                    - manual
                  description: >
                    __Offset Mode__: You can configure the default offset mode
                    to be used for reading data from the topic.


                    Usually set to `earliest`
                start.from.date:
                  type: string
                  description: >
                    __Consume Data From Date__: You can choose to configure this
                    source for reading data from a specific date. Enter the
                    starting date for data ingestion.


                    __Required__ if `offset.mode` is `from_date`
                start.from.offsets:
                  type: string
                  description: >
                    __Consume Data From Offset__: You can choose to configure
                    this source for reading data from a specific offset. Enter
                    the starting offset for data ingestion.


                    __Required__ if `offset.mode` is `manual`
                parser.type:
                  type: string
                  enum:
                    - json
                    - csv
                    - tsv
                    - txt
                    - xml
                    - avro
                  description: >
                    __Data Format__: Select the data format parser for the data
                    in the topic. This is usually JSON.              
                key.deserializer:
                  type: string
                  description: >
                    __Key Deserializer__: Enter the type of key deserializer
                    that should be used to read keys from the Kafka topic. This
                    is usually in the form
                    `org.apache.kafka.common.serialization.StringDeserializer`.


                    Recommended default value: 

                    - `org.apache.kafka.common.serialization.StringDeserializer`
                    if `parser.type` is `csv`, `tsv`, `txt`, `xml`, or `json`

                    -
                    `org.apache.kafka.common.serialization.ByteArrayDeserializer`
                    if `parser.type` is `avro`
                value.deserializer:
                  type: string
                  description: >
                    __Value Deserializer__: Enter the type of value deserializer
                    that should be used to read from the Kafka topic. This is
                    usually in the form
                    `org.apache.kafka.common.serialization.StringDeserializer`.


                    Recommended default value: 

                    - `org.apache.kafka.common.serialization.StringDeserializer`
                    if `parser.type` is `csv`, `tsv`, `txt`, `xml`, or `json`

                    -
                    `org.apache.kafka.common.serialization.ByteArrayDeserializer`
                    if `parser.type` is `avro`
                serialization.variant:
                  type: string
                  description: >
                    __Serialization Variant__: Set the variant of serializer for
                    processing data. This is required for AVRO parser. Typically
                    this should be set to `confluent`.


                    __Applicable__ if `parser.type` is `avro`
    databricks_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    db2_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    dropbox_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    nosql_data_source:
      type: object
      properties:
        source_config:
          type: object
          required:
            - start.cron
            - collection
            - mode
          properties:
            start.cron:
              type: string
              description: >
                __Ingestion Frequency__: The interval at which Nexla should scan
                this source for new data. This must be in the form of a cron
                expression.
              example: 0 0 22 10 11 ? 2022
            database:
              type: string
              description: >
                __Database__: The database whose collection needs to be scanned
                for data.


                __Required__ if the `data_credentials` access for this
                destination is not limited to one database.
            collection:
              type: string
              description: >
                __Collection__: The collection that needs to be scanned for
                data.
            mode:
              type: string
              enum:
                - default
                - timestamp
                - query
              description: >
                __Filter Collections__: Instead of reading all the documents in
                a collection in each ingestion cycle, you can instruct the
                platform to ingest only some documents.


                In some scenarios, when the collection contains much more
                historical data than you wish to scan, you might want to
                instruct the platform to begin loading from a specific
                __timestamp__. You can also write your filter queries to set
                rules based on which documents from the collection should be
                ingested.


                - `default`: Read all documents in the collection.

                - `timestamp`: Start reading from a specific timestamp.

                - `query`: Filter using Query.
              default: default
            timestamp.key:
              type: string
              description: >
                __Timestamp Attribute__: Set the document metadata attribute
                that should be used to execute partial data loading from the
                selected collection. This must be an attribute containing a
                date-time value, such as `created_at`.


                __Applicable and required__ if `mode` is `timestamp`.
            timestamp.load.from:
              type: string
              description: >
                __Starting Timestamp__: Set the timestamp value of the
                __Timestamp Key__ from which the platform should start ingesting
                data. This must be a UNIX epoch (milliseconds) or ISO-formatted
                date-time value (e.g., 2016-01-01T12:13:14).


                __Applicable and required__ if `mode` is `timestamp`.
            timestamp.load.to:
              type: string
              description: >
                __Ending Timestamp__: Set the timestamp value of the __Timestamp
                Key__ at which the platform should end ingesting data. This must
                be a UNIX epoch (milliseconds) or ISO-formatted date-time value
                (e.g., 2016-01-01T12:13:14).


                __Applicable__ if `mode` is `timestamp`.
    dynamodb_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/nosql_data_source'
        - type: object
          properties:
            source_config:
              type: object
              properties:
                dynamodb.filter.expression:
                  type: string
                  description: >
                    __DynamoDB Filter Expression__: Enter a valid DynamoDB Query
                    expression to filter collections.


                    See
                    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.FilterExpression
                    for information about the Filter Expression structure.


                    Example: `#name = :name_value`.


                    __Applicable and required__ if `mode` is `query`.
                dynamodb.filter.attributes.values:
                  type: string
                  description: >
                    __Filter Expression: Attribute Values__: Set attribute
                    values for attributes that are used in your filter
                    expression.


                    See
                    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.FilterExpression
                    for information about the Filter Expression structure.


                    For example, for the above expression, this value is
                    `{":name_value":{"S":"My Name"}}`.


                    __Applicable__ if `mode` is `query`.
                dynamodb.filter.attributes.names:
                  type: string
                  description: >
                    __Filter Expression: Attribute Names__: Set attribute names
                    for attributes that are used in your filter expression.


                    See
                    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.FilterExpression
                    for information about the Filter Expression structure.


                    For example, for the above expression, this value is
                    `{"#name":"name_column"}`.


                    __Applicable__ if `mode` is `query`.
    file_upload_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    firebase_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/nosql_data_source'
        - type: object
          properties:
            source_config:
              type: object
              properties:
                firebase.query:
                  type: string
                  description: >
                    __Query Expression__: Set the Query to be executed during
                    each ingestion cycle. The query content should be a valid
                    JSON object in Nexla Firebase query DSL. Please contact
                    Nexla support for tips on writing valid queries.


                    Example: `{"filters": [ { "fieldName": "name", "operator":
                    "EQUAL", "fieldType": "string", "stringValue": "test" }]}`
                    results in documents containing a `name` property with the
                    value `test`.


                    __Applicable and required__ if `mode` is `query`.
    firebolt_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    ftp_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    gcp_alloydb_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    gcp_spanner_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
        - type: object
          properties:
            source_config:
              type: object
              properties:
                enable.spanner.data.boost:
                  type: boolean
                  description: >
                    __Enable Spanner Data Boost?__: Set this option to True if
                    you want to leverage Spanner Data Boost capability for this
                    source. Note that the service account used in the credential
                    must have `spanner.databases.useDataBoost` IAM permission
                    for successfully running the query with Data Boost.


                    Default: `false`
    gcs_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    gdrive_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    google_pubsub_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/stream_data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - subscription
              properties:
                subscription:
                  type: string
                  description: |
                    __Subscription__: Select the subscription for your data.
                offset.mode:
                  type: string
                  enum:
                    - earliest
                    - from_date
                    - latest
                    - manual
                  description: >
                    __Offset Mode__: You can configure the default offset mode
                    used to read data from the topic.


                    Usually set to `earliest`
                start.from.date:
                  type: string
                  description: >
                    __Consume Data From Date__: You can choose to configure this
                    source for reading data from a specific date. Enter the
                    starting date for data ingestion.


                    __Required__ if `offset.mode` is `from_date`
                start.from.offsets:
                  type: string
                  description: >
                    __Consume Data From Offset__: You can choose to configure
                    this source for reading data from a specific offset. Enter
                    the starting offset for data ingestion.


                    __Required__ if `offset.mode` is `manual`
                key.deserializer:
                  type: string
                  description: >
                    __Key Deserializer__: Enter the type of key deserializer
                    that should be used for reading keys from the topic. This is
                    usually in the form
                    `org.apache.kafka.common.serialization.StringDeserializer`.


                    Default value:
                    `org.apache.kafka.common.serialization.StringDeserializer`
                value.deserializer:
                  type: string
                  description: >
                    __Value Deserializer__: Enter the type of value deserializer
                    that should be used for reading from the topic. This is
                    usually in the form
                    `org.apache.kafka.common.serialization.StringDeserializer`.


                    Default value:
                    `org.apache.kafka.common.serialization.StringDeserializer`
    hana_jdbc_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    hive_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    jms_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/stream_data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - source.type
                - source.name
              properties:
                source.type:
                  type: string
                  enum:
                    - topic
                    - queue
                  description: >
                    __Type of Source__: Select whether the source is a `topic`
                    or `queue`.
                source.name:
                  type: string
                  description: >
                    __Topic or Queue Name__: Configure the topic or queue from
                    which data needs to be ingested.
    kafka_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/stream_data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - topic
              properties:
                topic:
                  type: string
                  description: |
                    __Topic__: Select the topic for your data.
                offset.mode:
                  type: string
                  enum:
                    - earliest
                    - from_date
                    - latest
                    - manual
                  description: >
                    __Offset Mode__: You can configure the default offset mode
                    to be used for reading data from the topic.


                    Usually set to `earliest`
                start.from.date:
                  type: string
                  description: >
                    __Consume Data From Date__: You can choose to configure this
                    source for reading data from a specific date. Enter the
                    starting date for data ingestion.


                    __Required__ if `offset.mode` is `from_date`
                start.from.offsets:
                  type: string
                  description: >
                    __Consume Data From Offset__: You can choose to configure
                    this source for reading data from a specific offset. Enter
                    the starting offset for data ingestion.


                    __Required__ if `offset.mode` is `manual`
                key.deserializer:
                  type: string
                  description: >
                    __Key Deserializer__: Enter the type of key deserializer
                    that should be used to read keys from the Kafka topic. This
                    is usually in the form
                    `org.apache.kafka.common.serialization.StringDeserializer`.


                    Default value:
                    `org.apache.kafka.common.serialization.StringDeserializer`
                value.deserializer:
                  type: string
                  description: >
                    __Value Deserializer__: Enter the type of value deserializer
                    that should be used to read from the Kafka topic. This is
                    usually in the form
                    `org.apache.kafka.common.serialization.StringDeserializer`.


                    Default value:
                    `org.apache.kafka.common.serialization.StringDeserializer`
    min_io_s3_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    mongo_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/nosql_data_source'
        - type: object
          properties:
            source_config:
              type: object
              properties:
                mongo.query.expression:
                  type: string
                  description: >
                    __Query Expression__: Set the Mongo query expression to be
                    executed during each ingestion cycle. See
                    https://www.mongodb.com/docs/compass/current/query/filter/
                    for tips on constructing a valid query.


                    Example: `{$query: {name: 'John'}, $orderby: {name: -1}}`.


                    __Applicable and required__ if `mode` is `query`.
    mysql_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    netsuite_jdbc_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    rest_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - url.template
                - method
                - response.format
              properties:
                url.template:
                  type: string
                  description: >
                    __Set API URL__: Set the URL you wish to fetch data from.

                    Check out the __URL Macros__ section below for details on
                    adding Nexla macros to the API URL. Nexla will automatically
                    convert the macros into values when executing the API calls.
                method:
                  type: string
                  enum:
                    - GET
                    - POST
                    - PUT
                  description: >
                    __Method__: HTTP method used for this rest endpoint. This
                    will usually be `GET`, `POST`, or `PUT`.
                date.format:
                  type: string
                  enum:
                    - yyyy-MM-dd
                    - MM/dd
                    - yy
                    - yyyy
                    - MM
                    - MMM
                    - MMMM
                    - hh
                    - hh:mm
                    - HH
                    - HH:mm
                    - DD
                    - eeee
                    - ssss
                    - yyyy-MM-dd'T'HH:mm:ss'Z'
                  description: >
                    __Date Format for Date/Time Macro__: Format of date-time
                    that Nexla date-time macros like `now` will be converted to.

                    Default value: `yyyy-MM-dd`


                    Supported formats:

                    * `yyyy-MM-dd`: Year-Month-Date. Example: 2022-01-01

                    * `MM/dd`: Month/Date. Example: 01/01

                    * `yy`: Year (2-digit). Example: 22


                    * `yyyy`: Year (4-digit). Example: 2022

                    * `MM`: Month (2-digit). Example: 01

                    * `MMM`: Month (3-letter abbreviation). Example: Jan

                    * `MMMM`: Month (full name). Example: January

                    * `hh`: Hour in am/pm (12-hour format). Example: 01

                    * `HH`: Hour in 24-hour format. Example: 13

                    * `hh:mm`: Hour:Minute in am/pm (12-hour format). Example:
                    01:00

                    * `HH:mm`: Hour:Minute in 24-hour format. Example: 13:00

                    * `DD`: Day in the year. Example: 001

                    * `eeee`: Unix epoch time in seconds. Example: 1640995200

                    * `ssss`: Unix epoch time in milliseconds. Example:
                    1640995200000

                    * `yyyy-MM-dd'T'HH:mm:ss'Z'`: ISO 8601 format. Example:
                    2022-01-01T13:00:00Z
                date.time.unit:
                  type: string
                  enum:
                    - yyyy
                    - MM
                    - dd
                    - HH
                    - mm
                    - ss
                  description: >
                    __Time Unit for Operations__: The unit of date or time for
                    performing mathematical operations on Nexla date-time macro.


                    Supported units:

                    * `yyyy`: Year

                    * `MM`: Month

                    * `dd`: Date

                    * `HH`: Hour

                    * `mm`: Minute

                    * `ss`: Second


                    Default value: `dd`
                body.template:
                  type: string
                  description: >
                    __Request Body__: Enter the payload that should be attached
                    while making this request.

                    Note:

                    1. Enter a __valid JSON object__.

                    2. Just like in the URL, you can use Nexla macros here too.
                response.format:
                  type: string
                  enum:
                    - xml
                    - json
                  description: |
                    __Response format__: API response format.
                    Default value: `json`
                response.data.path:
                  type: string
                  description: >
                    __Set path to data in response__: Specify path to data in
                    API response.

                    You can choose which part of the API response should be
                    treated as relevant data by Nexla. For example, when pulling
                    a list of items from a REST API endpoint, the API will
                    usually return an array of records along with some metadata.
                    You can configure this field such that Nexla can treat each
                    element of that array as a record.

                    For JSON API response, please specify the JSON Path to point
                    to the object or array you want Nexla to consider as
                    relevant data, and for XML API use XPATH.

                    For example, JSONPath could be `$.data[*]` if the response
                    has an array named data at the top level. Select one of the
                    smart tokens generated when you test the API, or try out
                    JSON Path examples at
                    [https://jsonpath.com](https://jsonpath.com).
                response.data.path.additional:
                  type: string
                  description: >
                    __Path to metadata in response__: Specify path to metadata
                    in response (Optional).

                    By choosing Path to Data in Response above you had defined
                    which part of the API response should be treated by Nexla as
                    a record. But sometimes there can be API response data
                    outside that path to data that you also wish to include in
                    each record. Set this property if you wish to include that
                    common metadata in each record.

                    For JSON API response, please specify the JSON Path to point
                    to the object or array you want Nexla to consider as
                    relevant data, and for XML API use XPATH. Try out JSON Path
                    examples at [https://jsonpath.com](https://jsonpath.com).
                request.headers:
                  type: string
                  description: >
                    __Request Headers__: Add any optional request headers that
                    must be sent as part of this request. You do not need to
                    repeat headers already present in credentials. Please input
                    as comma-separated values e.g
                    `header1:value1,header2:value2`.
                map.id:
                  type: string
                  description: >
                    __Add Lookups to supported macros__: You can use values of a
                    column in a Nexla lookup as a macro for API URL. Select the
                    lookup you wish to use for generating API macros.
                iteration.type:
                  type: string
                  enum:
                    - paging.incrementing
                    - paging.incrementing.offset
                    - paging.next.token
                    - paging.next.url
                    - link.header
                    - response.id.number
                    - response.id.string
                    - response.next.token
                    - response.next.url
                    - data.map.key.queue
                    - async.poll
                    - body.as.file
                    - static.url
                  description: >
                    __Iteration type__: Set instructions for how the connector
                    should iterate requests over multiple pages in this step
                    before moving on to the next step.

                    * `paging.incrementing`: Page number-based pagination.

                    * `paging.incrementing.offset`: Offset-based pagination.

                    * `paging.next.token`: Pagination based on the next token in
                    the response.

                    * `paging.next.url`: Pagination based on the next URL in the
                    response.

                    * `link.header`: Pagination based on the next page link in
                    the response headers.

                    * `response.id.number`: Pagination based on a numeric ID in
                    the response objects.

                    * `response.id.string`: Pagination based on a string ID in
                    the response objects.

                    * `response.next.token`: Pagination based on the next token
                    in the response.

                    * `response.next.url`: Pagination based on the next URL in
                    the response.

                    * `data.map.key.queue`: Iteration type for defining Nexla
                    lookups needed by this source.

                    * `async.poll`: Iteration type for polling an asynchronous
                    job.

                    * `body.as.file`: Iteration type for processing an API
                    response as a file.

                    * `static.url`: No iterations.
                param.id:
                  type: string
                  description: >
                    __URL parameter for ID / Token / Page__: Enter the URL
                    parameter name that is used to set the id / page number /
                    token for this type of iteration.

                    __Applicable and required__ if `iteration.type` is
                    `paging.incrementing`, `paging.next.token`,
                    `response.id.number`, or `response.id.string`.
                start.page.from:
                  type: integer
                  description: >
                    __Start From Page__: Set the starting value for the URL page
                    number parameter. Nexla will automatically iterate through
                    subsequent pages of data till there is no more data to be
                    fetched.

                    __Applicable__ if `iteration.type` is `paging.incrementing`.
                end.page.to:
                  type: integer
                  description: >
                    __Stop After Page No__: You can configure the platform to
                    stop fetching after receiving a specific page number. Leave
                    blank to fetch all relevant data.

                    __Applicable__ if `iteration.type` is `paging.incrementing`.
                param.page.size:
                  type: string
                  description: >
                    __URL Param for Items per page__: Enter the URL parameter
                    name that is used to set the number of items that are
                    returned in each page.

                    __Applicable__ if `iteration.type` is `paging.incrementing`
                    or `paging.incrementing.offset`.
                page.expected.rows:
                  type: integer
                  description: >
                    __Items Per Page__: Set the value for the number of items to
                    be fetched in a page of data.

                    __Applicable__ if `iteration.type` is `paging.incrementing`
                    or `paging.incrementing.offset`.
                link:
                  type: string
                  description: >
                    __Response Header containing Next Page URL__: Set the name
                    of the response header that contains the next page URL.
                    Often API developers send this data in the `Link` header.

                    __Applicable__ if `iteration.type` is `link.header`.
                param.offset:
                  type: string
                  description: >
                    __URL Param For Offset__: Enter the URL parameter name that
                    is used to set the offset for this type of iteration.

                    __Applicable and required__ if `iteration.type` is
                    `paging.incrementing.offset`.
                start.offset.from:
                  type: integer
                  description: >
                    __Start From Offset__: Set the starting value of offset that
                    should be used for the first request.

                    __Applicable__ if `iteration.type` is
                    `paging.incrementing.offset`.
                end.offset.to:
                  type: integer
                  description: >
                    __Stop After Offset__: You can configure the platform to
                    stop fetching after receiving a specific offset. Leave blank
                    to fetch all relevant data.

                    __Applicable__ if `iteration.type` is
                    `paging.incrementing.offset`.
                request.parallelism.count:
                  type: integer
                  description: >
                    __Parallel Requests__: You can configure multiple requests
                    to be executed in parallel by changing this number.

                    __Applicable__ if `iteration.type` is `paging.incrementing`.

                    Default value: `1`.
                response.next.token.data.path:
                  type: string
                  description: >
                    __Path to next token__: Choose which part of the API
                    response should be treated as relevant token for the next
                    request. This must be a valid __JSON Path__ (for JSON
                    responses) or __XPath__ (for XML responses).

                    __Applicable__ if `iteration.type` is `paging.next.token`.
                end.token.to:
                  type: string
                  description: >
                    __Stop After Token__: You can configure the platform to stop
                    fetching after receiving a specific token. Leave blank to
                    fetch all relevant data.

                    __Applicable__ if `iteration.type` is `paging.next.token`.
                response.next.url.data.path:
                  type: string
                  description: >
                    __Path to next URL__: Choose which part of the API response
                    should be treated as relevant URLs for the next request.
                    This must be a valid __JSON Path__ (for JSON responses) or
                    __XPath__ (for XML responses).

                    __Applicable__ if `iteration.type` is `paging.next.url`.
                end.url.to:
                  type: string
                  description: >
                    __Stop After URL__: You can configure the platform to stop
                    fetching after receiving a specific URL. Leave blank to
                    fetch all relevant data.

                    __Applicable__ if `iteration.type` is `paging.next.url`.
                start.id.from:
                  type: string
                  description: >
                    __Start ID from__: Set the starting value of ID that should
                    be used for the first request.

                    __Applicable__ if `iteration.type` is `response.id.number`
                    or `response.id.string`.
                end.id.to:
                  type: integer
                  description: >
                    __Stop After ID__: You can configure the platform to stop
                    fetching after receiving a specific ID. Leave blank to fetch
                    all relevant data.

                    __Applicable__ if `iteration.type` is `response.id.number`
                    or `response.id.string`.
                response.id.field.name:
                  type: string
                  description: >
                    __ID Name__: Specify Path to ID in API response.

                    Choose which part of the API response should be treated as
                    relevant IDs for the next request. This must be a valid
                    __JSON Path__ (for JSON responses) or __XPath__ (for XML
                    responses).

                    __Applicable__ if `iteration.type` is `response.id.number`
                    or `response.id.string`.
                param.id.inclusive:
                  type: boolean
                  description: >
                    __Next ID Inclusive?__: Set this to true if the highest ID
                    in the current response should be used as the starting ID
                    for fetching the next page of data.

                    __Applicable__ if `iteration.type` is `response.id.number`.
                async.iteration.path:
                  type: string
                  description: >
                    __Job Status Param__: Specify Path to Job Status information
                    in API response.

                    Choose which part of the API response should be treated as
                    the relevant property for evaluating the status of the
                    asynchronous job. This must be a valid __JSON Path__ (for
                    JSON responses) or __XPath__ (for XML responses).

                    __Applicable__ if `iteration.type` is `async.poll`.
                async.iteration.value:
                  type: string
                  description: >
                    __Job Completion Value__: Set the value of __Job Status
                    Param__ that would indicate completion of the asynchronous
                    job.

                    __Applicable__ if `iteration.type` is `async.poll`.
                file.response.format:
                  type: string
                  enum:
                    - csv
                    - json
                    - txt
                    - xml
                  description: >
                    __Data Format of Response File__: When an API endpoint
                    returns a file in response (or response body is plain text
                    that should be parsed as a file), the platform can be
                    configured to parse the response content accordingly.
                    Configure the type of parsing that should be applied for
                    generating the Nexset.

                    __Applicable__ if `iteration.type` is `body.as.file`.

                    Default value: `csv`.
                start.cron:
                  type: string
                  description: >
                    __Fetch Data__: The interval at which Nexla should scan this
                    source for new data. This must be in the form of a cron
                    expression.

                    Example: `0 0 22 10 11 ? 2022`.
    nexla_monitor_data_source:
      allOf:
        - $ref: '#/components/schemas/rest_data_source'
    nexla_rest_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - webhook.auth_type
                - hash.enabled
                - schema.detection.once
              properties:
                webhook.auth_type:
                  type: string
                  enum:
                    - Nexla API Key
                    - Payload Hash
                  description: >
                    __Webhook Authorization Type__: Webhooks are usually
                    authorized via a Nexla API key. 


                    An additional layer of authorization can be enabled via
                    Hash-Based Message Authentication Code(HMAC). Some third
                    parties send a hash along with the payload. In such cases,
                    Nexla can validate that the incoming call was generated by
                    the authorized partner. Set the HMAC properties that will be
                    used by Nexla for validation against the incoming hash. 


                    Default Value: `Nexla API Key`
                schema.detection.once:
                  type: boolean
                  description: >
                    Set this to `true` if you want to enforce the detection of
                    only one Nexset.


                    Set this to `false` to instruct the platform to monitor each
                    call to the webhook for changes in the Nexset schema.


                    Default value: `true` 
                hash.enabled:
                  type: boolean
                  description: >
                    Set to `true` to support incoming webhook authentication via
                    the payload hash.


                    Default value: `false`
                hash_algorithm:
                  type: string
                  enum:
                    - HmacSHA1
                    - HmacSHA256
                    - HmacSHA384
                    - HmacSHA512
                    - HmacMD5
                  description: >
                    __Hashing Algorithm__: The hash algorithm used to generate
                    the hash during payload hashing.


                    __Required__ if `hash.enabled` is `true`
                hash_request_param:
                  type: string
                  description: >
                    Parameter/header name in the incoming request containing the
                    hash.


                    __Required__ if `hash.enabled` is `true`
                hash_secret_key:
                  type: string
                  description: |
                    The hash secret key for payload hashing.

                    __Required__ if `hash.enabled` is `true`
    oracle_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    oracle_autonomous_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    vector_db_data_source:
      type: object
      properties:
        source_config:
          type: object
          required:
            - start.cron
          properties:
            start.cron:
              type: string
              description: >
                __Scheduling Frequency__: The interval at which Nexla should
                scan this source for new data. This must be in the form of a
                cron expression.
              example: 0 0 22 10 11 ? 2022
    pinecone_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/vector_db_data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - database
                - query_type
              properties:
                database:
                  type: string
                  description: >
                    __Index__: Specify the name of the index to be queried
                    within the selected Pinecone database.
                collection:
                  type: string
                  description: >
                    __Namespace__: Set the namespace to query within the
                    selected Pinecone database.

                    You can use the default namespace or specify a custom
                    namespace.
                  default: ''
                query_type:
                  type: string
                  description: >
                    __Query Type__: Define the type of operation to perform,
                    such as fetching vectors,

                    performing similarity search, or retrieving vectors by ID.

                    - `fetch_vectors` (Fetch Vectors): Retrieve vectors from the
                    Pinecone database.

                    - `similarity_search` (Similarity Search): Retrieve similar
                    vectors to a given vector.

                    - `fetch_ids` (Fetch IDs): Retrieve vectors by their unique
                    identifiers.
                  default: similarity_search
                  enum:
                    - fetch_vectors
                    - similarity_search
                    - fetch_ids
                topK:
                  type: string
                  description: >
                    __Top K Similar Vectors__: Specify the number of top similar
                    vectors to retrieve.

                    Applicable when `query_type` is `similarity_search`  or
                    `fetch_ids`.
                  default: '20'
                pinecone.filter:
                  type: string
                  description: >
                    __Search Filter__: Specify a filter to refine which vectors
                    are retrieved from the database.

                    Applicable when `query_type` is `similarity_search`.
                  default: ''
                search_by:
                  type: string
                  description: >
                    __Search By Criteria__: Specify the type of search to
                    perform for similarity search.

                    - `dense_vector` (Dense Vector): Provide a dense vector for
                    similarity search.

                    - `vector_id` (Vector Identifier): Provide the unique
                    identifier of the vector to fetch.


                    Applicable when `query_type` is `similarity_search`.
                  default: dense_vector
                  enum:
                    - dense_vector
                    - vector_id
                dense_vector:
                  type: string
                  description: >
                    __Dense Vector__: Provide the dense vector for similarity
                    search.


                    Required when `query_type` is `similarity_search` and 
                    `search_by` is `dense_vector`.
                sparse_vector_indices:
                  type: string
                  description: >
                    __Sparse Vector Indices__: List the indices of non-zero
                    values in the sparse vector for similarity search.


                    Applicable when `query_type` is `similarity_search` and 
                    `search_by` is `dense_vector`.
                sparse_vector_values:
                  type: string
                  description: >
                    __Sparse Vector Values__: Provide the values corresponding
                    to the indices of the sparse vector for similarity search.


                    Applicable when `query_type` is `similarity_search` and 
                    `search_by` is `dense_vector`.
                vector_id:
                  type: string
                  description: >
                    __Vector Identifier__: Unique identifier of the vector to
                    fetch.


                    This field is required when using the `similarity_search`
                    query type and `search_by` is `vector_id`.
                pinecone.prefix:
                  type: string
                  description: >
                    __Pinecone Prefix__: Specify a prefix to refine which
                    vectors are retrieved from the database.


                    Applicable when `query_type` is `similarity_search` or
                    `fetch_vectors`.
                prinecone.includeValues:
                  type: boolean
                  description: >
                    __Include Values?__: Set this field to `true` to include the
                    values of the vectors in the output.

                    Applicable when `query_type` is `similarity_search`.
                  default: true
                pinecone.includeMetadata:
                  type: boolean
                  description: >
                    __Include Metadata?__: Set this field to `true` to include
                    the metadata of the vectors in the output.

                    Applicable when `query_type` is `similarity_search`.
                  default: true
    postgres_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    redshift_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    s3_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    s3_iceberg_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - start.cron
                - iceberg.warehouse.dir
                - iceberg.table.name
                - iceberg.timetravel.modes
              properties:
                start.cron:
                  type: string
                  description: >
                    __Check for data__: The interval at which Nexla should scan
                    this source for new data. This must be in the form of a cron
                    expression.
                  example: 0 0 22 10 11 ? 2022
                iceberg.warehouse.dir:
                  type: string
                  description: >
                    __Warehouse Directory__: Path to the directory containing
                    the Iceberg table. 

                    Nexla uses the path-based Hadoop catalog to discover tables
                    in S3. So if your Iceberg table `sales` is in
                    `s3://my-nexla-bucket/product/sales`, then set this property
                    to `my-nexla-bucket`.
                iceberg.table.name:
                  type: string
                  description: >
                    __Table Name__: Name of the table from which data will be
                    read. 

                    Nexla uses the path-based Hadoop catalog to discover tables
                    in S3. So if your Iceberg table `sales` is in
                    `s3://my-nexla-bucket/product/sales`, then set this property
                    to `product.sales` to read from the table.
                iceberg.timetravel.modes:
                  type: string
                  enum:
                    - none
                    - branch
                    - tag
                    - timestamp
                    - snapshot
                    - incremental
                  description: >
                    __Table Scan Modes__: Select the mode to query the table
                    using Apache Iceberg time travel features.

                    The default value can be used to skip timetravel features.
                    The other modes can be used to query table as-of a branch,
                    tag, timestamp, snapshot or read appended data between two
                    snapshots.


                    * `none` - (Do not use time travel features) Select this
                    mode if you do not want to use any time travel features and
                    want to read the latest data from the table.

                    * `branch` - (Branch) Select this mode if you want to query
                    the table as of a branch.

                    * `tag` - (Tag) Select this mode if you want to query the
                    table as of a tag.

                    * `timestamp` - (Timestamp) Select this mode if you want to
                    query the table as of a timestamp.

                    * `snapshot` - (Snapshot) Select this mode if you want to
                    query the table as of a snapshot.

                    * `incremental` - (Incremental) Select this mode if you want
                    to read appended data between two snapshots.
                iceberg.timetravel.as.of.branch:
                  type: string
                  description: >
                    __Branch to Query__: Branch to query using Apache Iceberg
                    time travel features. Not compatible with time travel by
                    timestamp.


                    __Applicable and required__ if `iceberg.timetravel.modes` is
                    set to `branch`.
                iceberg.timetravel.as.of.tag:
                  type: string
                  description: >
                    __Tag to Query__: Tag to query using Apache Iceberg time
                    travel features. Not compatible with time travel by
                    timestamp.


                    __Applicable and required__ if `iceberg.timetravel.modes` is
                    set to `tag`.
                iceberg.timetravel.as.of.snapshot:
                  type: string
                  description: >
                    __Snapshot ID to Query__: Snapshot ID to query using Apache
                    Iceberg time travel features.


                    __Applicable and required__ if `iceberg.timetravel.modes` is
                    set to `snapshot`.
                iceberg.timetravel.as.of.timestamp:
                  type: string
                  description: >
                    __Timestamp to Query__: Timestamp to query using Apache
                    Iceberg time travel features. Supported formats: `YYYY-MM-DD
                    HH:MM:SS` or Unix timestamp in seconds.


                    __Applicable and required__ if `iceberg.timetravel.modes` is
                    set to `timestamp`.
                iceberg.incremental.start-snapshot-id:
                  type: string
                  description: >
                    __Snapshot ID to start reading from__: Read appended data
                    between two snapshots with the incremental read feature.
                    This is the starting snapshot ID and is required for this
                    feature. Incremental reads are not compatible with other
                    time travel features nor with upserts and deletes.


                    __Applicable and required__ if `iceberg.timetravel.modes` is
                    set to `incremental`.
                iceberg.incremental.end-snapshot-id:
                  type: string
                  description: >
                    __Snapshot ID to end reading at__: Read appended data
                    between two snapshots with the incremental read feature.
                    This is the ending snapshot ID and is optional, if the
                    starting snapshot ID is specified but the ending snapshot ID
                    is not provided will read all subsequent data. Incremental
                    reads are not compatible with other time travel features nor
                    with upserts and deletes.


                    __Applicable__ if `iceberg.timetravel.modes` is set to
                    `incremental`.
    sharepoint_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    snowflake_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    soap_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - start.cron
                - soap.wsdl.url
                - soap.service
                - soap.binding
                - soap.operation
                - soap.port.type
                - soap.service.port
                - soap.params
              properties:
                start.cron:
                  type: string
                  description: >
                    __Scheduling Frequency__: The interval at which Nexla should
                    scan this source for new data. This must in the form of a
                    cron expression.
                  example: 0 0 22 10 11 ? 2022
                soap.wsdl.url:
                  type: string
                  description: >
                    __WSDL URL__: Enter the WSDL URL of the Soap service to
                    which you wish to connect.
                soap.service:
                  type: string
                  description: >
                    __SOAP Service Name__: Enter the name of the SOAP Service
                    that you wish to access.
                soap.binding:
                  type: string
                  description: >
                    __SOAP Binding Name__: Enter the name of the SOAP binding
                    element.


                    The SOAP binding element defines the message format and
                    protocol details for each port. The binding element has two
                    attributes: the name attribute and the type attribute.
                soap.operation:
                  type: string
                  description: >
                    __SOAP Operation Name__: Select the operation for the
                    binding that you wish to access.
                soap.port.type:
                  type: string
                  description: >
                    __SOAP Binding Port Type__: Enter the port type of the SOAP
                    binding element.


                    The SOAP binding element defines the message format and
                    protocol details for each port. The binding element has two
                    attributes: the name attribute and the type attribute.
                soap.service.port:
                  type: string
                  description: >
                    __SOAP Service Port__: Select the Service Port that you wish
                    to access.
                soap.params:
                  type: string
                  description: >
                    __Operation Parameters and Values__: Enter a dictionary of
                    operation parameters and relevant operation parameter values
                    for this source.


                    example:

                    ```
                      {
                          "TrackRequest/ClientDetail/AccountNumber": "12345",
                          "TrackRequest/TransactionDetail/Localization/LanguageCode": "EN"
                      }
                    ```
                  additionalProperties:
                    type: string
                    x-additionalPropertiesName: soap_operation_param
                    description: >
                      __SOAP Operation Parameter__: Operation parameter whose
                      value needs to be configured.
    sqlserver_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithCDCSupport'
    sybase_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    teradata_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/WithoutCDCSupport'
    tibco_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/stream_data_source'
        - type: object
          properties:
            source_config:
              type: object
              required:
                - source.type
                - source.name
              properties:
                source.type:
                  type: string
                  enum:
                    - topic
                    - queue
                  description: |
                    Select whether the source is a `topic` or `queue`.
                source.name:
                  type: string
                  description: >
                    __Topic or Queue Name__: Configure the topic or queue from
                    which data needs to be
                    ingested.                                                    
    webdav_data_source:
      allOf:
        - $ref: '#/components/schemas/data_source'
        - $ref: '#/components/schemas/file_data_source'
    data_set_schema:
      type: object
      properties:
        properties:
          type: object
          additionalProperties:
            type: string
            x-additionalPropertiesName: nexset_attribute_name
        $schema:
          type: string
          format: url
        $schema-id:
          type: integer
    UserSimplified:
      type: object
      properties:
        id:
          type: integer
        full_name:
          type: string
        email:
          type: string
        email_verified_at:
          type: string
          format: date-time
    OrgSimplified:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        email_domain:
          type: string
        email:
          type: string
        client_identifier:
          type: string
        org_webhook_host:
          type: string
    DataSource:
      type: object
      properties:
        id:
          type: integer
          format: int32
        owner_id:
          type: integer
          format: int32
        org_id:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
          format: nullable
        status:
          type: string
        source_type:
          type: string
        connector:
          type: object
          properties:
            id:
              type: integer
              format: int32
            type:
              type: string
            connection_type:
              type: string
            name:
              type: string
            description:
              type: string
            nexset_api_compatible:
              type: boolean
        vendor_id:
          type: string
          format: nullable
    DataSetBrief:
      type: object
      properties:
        id:
          type: integer
        owner_id:
          type: integer
        org_id:
          type: integer
        name:
          type: string
        description:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    DataSinkSimplified:
      type: object
      properties:
        id:
          type: integer
          format: int32
        owner_id:
          type: integer
          format: int32
        org_id:
          type: integer
          format: int32
        name:
          type: string
        status:
          type: string
        sink_type:
          type: string
    DataSet:
      type: object
      properties:
        id:
          type: integer
          format: int32
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        name:
          type: string
        description:
          type: string
        status:
          type: string
        data_source_id:
          type:
            - integer
            - 'null'
          description: >
            Id of the data source this Nexset was detected from. This is only
            relevant for detected Nexsets.
        data_source:
          $ref: '#/components/schemas/DataSource'
          description: >
            Details about the data source this Nexset was detected from. This is
            only relevant for detected Nexsets.
        parent_data_sets:
          type: array
          description: >
            Details about the Nexset this Nexset is derived from. This element
            is empty in case of detected Nexsets and has 1 item in case of
            derived Nexsets.
          items:
            minItems: 0
            maxItems: 1
            $ref: '#/components/schemas/DataSetBrief'
        data_sinks:
          type: array
          description: |
            Details about every data sink this Nexset is directly connected to.
          items:
            $ref: '#/components/schemas/DataSinkSimplified'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        transform_id:
          type:
            - integer
            - 'null'
          description: >
            The ID of the Transform entity that has been used to create the
            output of this Nexset from the parent Nexset.


            This element is null for detected Nexsets.
        output_schema:
          type: object
          description: |
            JSON schema of this Nexset's output.
        copied_from_id:
          type: integer
          format: nullable
          description: >
            Reference ID of the Nexset that this Nexset was created as a copy
            of. This is only valid if the Nexset was created by issuing a
            request to the `copy` endpoint of another Nexset.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        tags:
          type: array
          items:
            type: string
        flow_type:
          type: string
          description: |
            The flow type of the origin node.
    DataSetMutable:
      allOf:
        - oneOf:
            - type: object
              properties:
                has_custom_transform:
                  type: boolean
                  enum:
                    - false
                  description: >
                    Set this to `false` to indicate that the payload contains
                    the `transform` code that should be used for creating the
                    output schema.
                transform:
                  type: object
                  description: |
                    Transform code that should be applied on the parent Nexset.
            - type: object
              properties:
                has_custom_transform:
                  type: boolean
                  enum:
                    - true
                  description: >
                    Set this to `true` to indicate that the payload contains the
                    `transform_id` of a transform that should be applied for
                    creating the output schema.
                transform_id:
                  type: integer
                  description: >
                    Id of a reusable record transform that should be applied on
                    the parent Nexset.
        - type: object
          properties:
            name:
              type: string
            description:
              type: string
            parent_data_set_id:
              type: integer
              description: >
                Nexset ID of the parent Nexset on which all the rules should be
                applied for creating this Nexset.
            output_schema_annotations:
              type: object
              description: >
                You can document details about important Nexset attributes by
                annotating them with short descriptions.


                Set descriptions for all such attributes by adding them to this
                object. Attributes should be added in standard JSON schema path
                format. You can refer to Nexset's output schema structure for
                guidance.
              properties:
                properties:
                  additionalProperties:
                    x-additionalPropertiesName: nexset_attribute_name
                    type: object
                    properties:
                      description:
                        type: string
                        description: |
                          Set a short description for this attribute.
            output_schema_validation_enabled:
              type: boolean
              description: >
                Set this to true and attach the relevant
                `output_validation_schema` if you want all records to be
                validated against some JSON schema validation rules.


                Records that fail validation will be routed to the Nexset error
                queue instead of the Nexset output.
            output_validation_schema:
              type: object
              description: >
                You can set JSON Schema validation rules that should be applied
                on every record of this Nexset.


                See
                https://json-schema.org/learn/getting-started-step-by-step.html
                for guidance on writing JSON schema validation rules.
              additionalProperties:
                x-additionalPropertiesName: json_schema_validation_rule
                type:
                  - object
                  - string
            data_sinks:
              type: array
              description: >
                You can choose to attach one or more data sinks to this Nexset.
                Each data sink will receive the output of this Nexset when the
                Nexset generates output records.
              items:
                anyOf:
                  - type: integer
                    description: |
                      The ID of the data sink.
                  - type: object
                    description: >
                      The payload for creating a Nexla data sink with this
                      request. The platform will automatically create a data
                      sink and attach its ID as a reference.
            custom_config:
              type: object
              description: >
                `Reserved for Nexla UI`: This field is used by Nexla UI for
                display instructions when displaying this Nexset on the UI. This
                entry has no impact on how the Nexla data plane processes data
                for this Nexset.
            tags:
              type: array
              items:
                type: string
    DataSetCreate:
      allOf:
        - $ref: '#/components/schemas/DataSetMutable'
        - required:
            - name
            - parent_data_set_id
            - has_custom_transform
    data_sink:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        data_credentials_id:
          type: integer
          description: >
            __Credential ID__: Nexla data credential that contains all
            authentication information for this destination.
        data_set_id:
          type: integer
          description: >
            __Nexset ID__: Set the Nexset ID whose output records will be
            written out to this destination.   
        sink_type:
          type: string
          description: |
            __Connector Type__: Connector codename.
      discriminator:
        propertyName: sink_type
        mapping:
          as400: '#/components/schemas/as400_data_sink'
          azure_blb: '#/components/schemas/azure_blb_data_sink'
          azure_data_lake: '#/components/schemas/azure_data_lake_data_sink'
          azure_synapse: '#/components/schemas/azure_synapse_data_sink'
          bigquery: '#/components/schemas/bigquery_data_sink'
          box: '#/components/schemas/box_data_sink'
          cloudsql_mysql: '#/components/schemas/cloudsql_mysql_data_sink'
          cloudsql_postgres: '#/components/schemas/cloudsql_postgres_data_sink'
          cloudsql_sqlserver: '#/components/schemas/cloudsql_sqlserver_data_sink'
          confluent_kafka: '#/components/schemas/confluent_kafka_data_sink'
          data_map: '#/components/schemas/data_map_data_sink'
          databricks: '#/components/schemas/databricks_data_sink'
          delta_lake_azure_blb: '#/components/schemas/delta_lake_azure_blb_data_sink'
          delta_lake_azure_data_lake: '#/components/schemas/delta_lake_azure_data_lake_data_sink'
          delta_lake_s3: '#/components/schemas/delta_lake_s3_data_sink'
          dropbox: '#/components/schemas/dropbox_data_sink'
          dynamodb: '#/components/schemas/dynamodb_data_sink'
          email: '#/components/schemas/email_data_sink'
          firebase: '#/components/schemas/firebase_data_sink'
          firebolt: '#/components/schemas/firebolt_data_sink'
          ftp: '#/components/schemas/ftp_data_sink'
          gcp_alloydb: '#/components/schemas/gcp_alloydb_data_sink'
          gcp_spanner: '#/components/schemas/gcp_spanner_data_sink'
          gcs: '#/components/schemas/gcs_data_sink'
          gdrive: '#/components/schemas/gdrive_data_sink'
          google_pubsub: '#/components/schemas/google_pubsub_data_sink'
          jms: '#/components/schemas/jms_data_sink'
          kafka: '#/components/schemas/kafka_data_sink'
          min_io_s3: '#/components/schemas/min_io_s3_data_sink'
          mongo: '#/components/schemas/mongo_data_sink'
          mysql: '#/components/schemas/mysql_data_sink'
          netsuite_jdbc: '#/components/schemas/netsuite_jdbc_data_sink'
          oracle: '#/components/schemas/oracle_data_sink'
          oracle_autonomous: '#/components/schemas/oracle_autonomous_data_sink'
          pinecone: '#/components/schemas/pinecone_data_sink'
          postgres: '#/components/schemas/postgres_data_sink'
          redshift: '#/components/schemas/redshift_data_sink'
          rest: '#/components/schemas/rest_data_sink'
          s3: '#/components/schemas/s3_data_sink'
          s3_iceberg: '#/components/schemas/s3_iceberg_data_sink'
          sharepoint: '#/components/schemas/sharepoint_data_sink'
          snowflake: '#/components/schemas/snowflake_data_sink'
          snowflake_dcr: '#/components/schemas/snowflake_dcr_data_sink'
          sqlserver: '#/components/schemas/sqlserver_data_sink'
          teradata: '#/components/schemas/teradata_data_sink'
          tibco: '#/components/schemas/tibco_data_sink'
    database_data_sink:
      type: object
      properties:
        create_destination:
          type: boolean
          description: >
            __Create Table In Destination__ If the desired table doesn't exist
            in your database, you can instruct Nexla to create a table when this
            destination is first activated. 


            Default Value: `false` 
        sink_config:
          type: object
          required:
            - sink_type
            - table
            - insert.mode
            - mapping
          properties:
            database:
              type: string
              description: >
                __Database__: If the Destination credentials allow access to
                multiple databases, specify the database to which the
                destination table belongs. This is only needed if the
                `data_credentials` entry for this destination is not limited to
                one database.
            table:
              type: string
              description: >
                __Table__: Set the table to which you wish to push Nexset
                records.
            insert.mode:
              type: string
              enum:
                - INSERT
                - UPSERT
              description: >
                __Table Update Mode__: Select whether records should be inserted
                or upserted into the database.
            primary.key:
              type: string
              description: >
                __Primary Key Columns__: Set all columns that should be set as
                primary keys of the table. For multiple columns, enter a
                comma-separated list of column names.


                __Required__ if `insert.mode` is set to `UPSERT`
            mapping:
              type: object
              required:
                - mode
                - tracker_mode
              description: >
                __Mapping__: Set rules for how Nexset record attributes should
                be written into Database Columns.
              properties:
                mode:
                  type: string
                  enum:
                    - manual
                  description: >
                    Most databases require manual mapping of attributes into
                    columns. With manual mapping, you can set a single attribute
                    to be written into multiple columns. Additionally, you can
                    specify the desired data format for each column.



                    * `auto`: Automatically map attributes to database columns.
                    Column data types will be inferred from record values, and
                    the nesting of attributes will be preserved. __Only
                    available for select warehouses and databases.__


                    * `manual`: Explicitly define attribute mapping and database
                    columns.
                mapping:
                  type: object
                  description: >
                    __Attribute to Database Column Mapping__: Define how
                    attributes should be mapped to database columns.


                    __Required__ if `mapping.mode` is `manual`


                    __Object Definition Rules__: 


                    1. Each Nexset record attribute that needs to be written to
                    one or more columns should be listed as a property of this
                    `mapping` object. In the example, the properties are
                    `nexset_attr_1` and `nexset_attr_2`.


                    2. Each database column to which the attribute needs to be
                    written is a property of the attribute object above. In the
                    example, `nexset_attr_1` is set to write to columns
                    `db_col_1` and `db_col_2`.


                    3. Each database column property has a value that defines
                    the desired data format allowed by the database. Here, data
                    written to `db_col_1` will be written as `TEXT`.


                    __Example__
                      ```
                      {
                          "nexset_attr_1":
                          {
                              "db_col_1": "TEXT",
                              "db_col_2": "TEXT"
                          },
                          "nexset_attr_2":

                          {
                              "db_col_3": "FLOAT64"
                          }
                      }
                    ```
                  additionalProperties:
                    type: object
                    x-additionalPropertiesName: nexset_attribute_name
                    description: >-
                      __Property Name__:  Attribute name of each nexset
                      attribute that needs to be written to one or more columns.
                      Use dot notation for attributes that are present as nested
                      properties inside a Nexset Record.
                    additionalProperties:
                      type: string
                      x-additionalPropertiesName: db_column_name
                      description: >-
                        __Property Name__: Database column name"(s)" of the
                        column"(s)" to which this attribute needs to be written.


                        __Property Value__: Data format of the data in the
                        column"(s)".


                        1. Each datatase column to which attribute needs to be
                        written is a property of this object.


                        2. Each property has a value that defines the desired
                        data format allowed by the database.
                tracker_mode:
                  type: string
                  enum:
                    - NONE
                    - RECORD
                  description: >
                    __Tracker Mode__: Each record that flows through Nexla has
                    an associated unique tracker ID. Set this to `RECORD` to
                    configure the tracker ID to be written out to a database
                    column along with the Nexset record.


                    * `NONE`: The tracker ID won't be written to the database.

                    * `RECORD`: The short form tracker ID containing all
                    required lineage information will be written out in the
                    relevant column.
                tracker_name:
                  type: string
                  description: >
                    __Column Name for Nexla Tracker__: Name of the column used
                    for the Nexla record tracker information.


                    __Applicabale and Required__ if `tracker.mode` is set to
                    `RECORD`
                             
            upsert.nulls:
              type: boolean
              description: >
                __Allow column updates with nulls__: Set as false to allow
                partial upserting of a record with only non-null values.


                Only valid if `insert.mode` is `UPSERT`


                Default Value: `true`
    as400_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - TINYINT
                            - SMALLINT
                            - MEDIUMINT
                            - INT
                            - BIGINT
                            - DECIMAL
                            - FLOAT
                            - DOUBLE
                            - BIT
                            - BOOLEAN
                            - BOOL
                            - CHAR
                            - VARCHAR(4096)
                            - BINARY
                            - VARBINARY(65535)
                            - TINYBLOB
                            - BLOB
                            - MEDIUMBLOB
                            - LONGBLOB
                            - TINYTEXT
                            - TEXT
                            - MEDIUMTEXT
                            - LONGTEXT
                            - ENUM
                            - SET
                            - DATE
                            - DATETIME
                            - TIMESTAMP
                            - YEAR
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    file_data_sink:
      type: object
      properties:
        sink_config:
          type: object
          required:
            - sink_type
            - path
            - data_format
          properties:
            path:
              type: string
              description: >
                __Path to Write__: Set the path to which you want to write all
                files.
            output.dir.name.pattern:
              type: string
              description: >
                __Subfolder Path Format__: You can configure the platform to
                automatically create subfolders and partition files into those
                subfolders.


                Use Nexla system macros like `{YYYY}`, `{MM}`, etc. to create
                date-time subfolders. You can also split folders by values of an
                attribute in the Nexset by using the macro
                `{record.<attribute-name>}`.


                Default Value: `{YYYY}/{MM}/{dd}`
            file.name.prefix:
              type: string
              description: >
                __Custom File Name Prefix__: Generated file names are in the
                format <prefix>-<nexset-identifier>-<randomizer>. Set this
                property to define the prefix of each file.


                You can use Nexla system macros like `{YYYY}`, `{MM}`, etc. to
                create date-time patterns. 
            max.file.size.mb:
              type: integer
              description: >
                __Maximum File Size (in MB)__: The maximum size (MB) of each
                generated file. Data will automatically be partitioned into
                multiple files.


                Default Value: `4096`
            data_format:
              type: string
              enum:
                - csv
                - tsv
                - json
                - xml
                - xlsx
                - edi
                - avro
                - parquet
                - orc
                - fw
              description: >
                __File Format__: Set the output format of the generated files.


                * `csv`: Files where column values are separated by commas.

                * `tsv`: Files where column values are separated by tabs.

                * `json`: Files where each row is a valid JSON object. Note that
                this is a JSON-line file with a `.json` extension.

                * `xlsx`: Excel files.

                * `edi`: EDI files.

                * `avro`: AVRO files.

                * `parquet`: Parquet files.

                * `orc`: ORC files.

                * `fw`: Fixed width files where each column has a fixed width.
            xml.root:
              type: string
              description: >
                __Parent XML Tag__: Data from each record is wrapped around a
                parent XML tag when writing to XML files. Set the wrapper tag
                that should be used. The default wrapper tag is `root`.


                Only valid if `data_format` is `orc`


                Default Value: `root`
            orc.compress:
              type: string
              enum:
                - none
                - zlib
                - snappy
                - lzo
                - lz4
              description: >
                __ORC Compression Type__: Select the type of compression
                algorithm that should be used to compress file contents into ORC
                files.


                Only valid if `data_format` is `orc`


                Default Value: `zlib`
            write.header:
              type: boolean
              description: >
                __Write Attribute Names As Header?__: Set this option if you
                want the attribute names to be added as a header row on each
                file.


                Only applicable if `data_format` is `fw`.


                Default Value: `true`
            field.lengths:
              type: string
              description: >
                __Length of Each Field in File__: Enter the length of each field
                in the file. This should be entered as a comma-separated list of
                numbers, for ex: `10,12,8,15,20`.


                Only applicable if `data_format` is `fw`.
            padding.character:
              type: string
              description: >
                __Padding Character__: Choose or type the character that should
                be used to separate fields. For ex: `_`. 


                Only applicable if `data_format` is `fw`.

                Default: single space ` `


                Common Values: 

                * ` `: Single Space

                * `` : No Padding

                * `,`: Comma

                * `\\t`: Tab

                * `\\n`: Newline

                * `;`: Semicolon

                * `|`: Pipe

                * `^`: Caret           
            line.separator:
              type: string
              description: >
                __Line Separation Character__: Specify the character that should
                be recognized by the platform as an indicator of a new line. 


                Only applicable if `data_format` is `fw`.


                Default:  `\\n`


                Common Values: 

                * `\\t`: Tab

                * `\\n`: Newline
            mapping:
              type: object
              required:
                - mode
                - tracker_mode
              description: >
                __Mapping__: Set rules for how Nexset record attributes should
                be written into the generated files.
              properties:
                mode:
                  type: string
                  enum:
                    - auto
                    - manual
                  description: >
                    Based on the desired `data_format`, Nexla automatically
                    converts Nexset records into appropriate contents in output
                    files.


                    However, for some `data_formats` such as `csv` that support
                    the concept of additional rules like the column order, you
                    can choose to manually assign Nexset attributes to output
                    row mapping.



                    * `auto` : Automatically map Nexset attributes to output
                    files. Recommended for data_formats `json`, `xml`, `edi`,
                    `avro`, `parquet`, and `orc`. 


                    * `manual`: Explicitly define attribute mapping and columns
                    in the output file. Recommended for data_formats `csv`,
                    `tsv`, `xlsx`, and `GOOGLE_SPREADSHEET`.
                mapping:
                  type: object
                  description: >
                    __Attribute to File Column Mapping__: Define how attributes
                    should be mapped to database columns.


                    __Required__ if `mapping.mode` is `manual`


                    __Object Definition Rules__: 


                    Each Nexset record attribute that needs to be written to one
                    or more columns should be listed as a property of this
                    `mapping` object. In the example, the properties are
                    `nexset_attr_1` and `nexset_attr_2`.


                    __Example__
                      ```
                      {
                          "nexset_attr_1": [
                              "file_col_1",
                              "file_col_2"
                            ],
                          "nexset_attr_2": [
                              "file_col_3"
                            ]
                      }
                    ```
                  additionalProperties:
                    type: array
                    x-additionalPropertiesName: nexset_attribute_name
                    description: >
                      Property Name: The Nexset attribute name that needs to be
                      written out.


                      Property Value: The array of file column header names for
                      this attribute.
                    items:
                      type: string
                fields_order:
                  type: array
                  format: strings
                  description: >
                    __Field Order__: The order of the column names in the output
                    file.


                    __Required__ if `mapping.mode` is `manual`
                header_template:
                  type: string
                  description: >
                    __Optional Header Content__: You can choose to add a
                    predefined header in each generated output file. The format
                    of this string should match the format of a row of data in
                    that `data_format`.


                    For example, if the `data_format` is `xml`, the header would
                    be an XML object like `<hdate>{now}</hdate>`, but if the
                    desired value is a JSON string, it would be
                    `"{\"header\":\"{now}\"}`.


                    Note that this field supports Nexla date-time macros like
                    `{now}`.
                tracker_mode:
                  type: string
                  enum:
                    - NONE
                    - RECORD
                  description: >
                    __Tracker Mode__: Each record that flows through Nexla has
                    an associated unique tracker ID. Set this to `RECORD` to
                    configure the tracker ID to be written out to a column along
                    with the Nexset record.


                    * `NONE`: The tracker won't be written to the database.

                    * `RECORD`: The short-form tracker containing all required
                    lineage information will be written out in the relevant
                    column.
                tracker_name:
                  type: string
                  description: >
                    __Column Name for Nexla Tracker__: The column name for the
                    Nexla record tracker information.


                    __Applicabale and Required__ if `tracker.mode` is set to
                    `RECORD`.    
    azure_blb_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    azure_data_lake_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    azure_synapse_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT
                            - SMALLINT
                            - TINYINT
                            - BIT
                            - NUMERIC
                            - MONEY
                            - SMALLMONEY
                            - REAL
                            - DATETIME
                            - SMALLDATETIME
                            - CHAR(3000)
                            - VARCHAR(100)
                            - VARCHAR(3000)
                            - VARCHAR(max)
                            - TEXT
                            - NCHAR
                            - NVARCHAR
                            - NTEXT
                            - BINARY
                            - VARBINARY
                            - TABLE
                            - UNIQUEIDENTIFIER
                            - DECIMAL(18, 4)
                            - FLOAT(12)
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    bigquery_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                partitioning.column:
                  type: string
                  description: >
                    __Partitioning Column__: You can choose to have the data
                    partitioned by a specific column when it is written to the
                    destination table. Set the partitioning column if you wish
                    to leverage that capability.
                clustering.columns:
                  type: string
                  description: >
                    __Clustering Columns__: You can choose to leverage column
                    clustering when data is written to the destination tables.
                    Set this value to a comma-separated list of columns that
                    should be used for clustering.
                mapping:
                  type: object
                  properties:
                    mode:
                      type: string
                      enum:
                        - auto
                        - manual
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BOOLEAN
                            - DATE
                            - DATETIME
                            - TIME
                            - TIMESTAMP
                            - FLOAT64
                            - INT64
                            - STRING
                            - NUMERIC
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    box_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    cloudsql_mysql_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - TINYINT
                            - SMALLINT
                            - MEDIUMINT
                            - INT
                            - BIGINT
                            - DECIMAL
                            - FLOAT
                            - DOUBLE
                            - BIT
                            - BOOLEAN
                            - BOOL
                            - CHAR
                            - VARCHAR(4096)
                            - BINARY
                            - VARBINARY(65535)
                            - TINYBLOB
                            - BLOB
                            - MEDIUMBLOB
                            - LONGBLOB
                            - TINYTEXT
                            - TEXT
                            - MEDIUMTEXT
                            - LONGTEXT
                            - ENUM
                            - SET
                            - DATE
                            - DATETIME
                            - TIMESTAMP
                            - YEAR
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    cloudsql_postgres_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT8
                            - BIGSERIAL
                            - SERIAL8
                            - BIT
                            - BIT_VARYING
                            - VARBIT
                            - BOOLEAN
                            - BOOL
                            - BOX
                            - BYTEA
                            - CHAR
                            - VARCHAR
                            - CHARACTER VARYING
                            - CIDR
                            - CIRCLE
                            - DATE
                            - DOUBLE PRECISION
                            - INET
                            - INTEGER
                            - INT
                            - INT4
                            - INTERVAL
                            - JSON
                            - JSONB
                            - LINE
                            - LSEG
                            - MACADDR
                            - MONEY
                            - NUMERIC
                            - DECIMAL
                            - PATH
                            - PG_LSN
                            - POINT
                            - POLYGON
                            - REAL
                            - FLOAT4
                            - SMALLINT
                            - INT2
                            - SMALLSERIAL
                            - SERIAL2
                            - SERIAL
                            - SERIAL4
                            - TEXT
                            - TIME
                            - TIMETZ
                            - TIMESTAMP
                            - TIMESTAMPTZ
                            - TSQUERY
                            - TSVECTOR
                            - TXID_SNAPSHOT
                            - UUID
                            - XML
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    cloudsql_sqlserver_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT
                            - SMALLINT
                            - TINYINT
                            - BIT
                            - NUMERIC
                            - MONEY
                            - SMALLMONEY
                            - REAL
                            - DATETIME
                            - SMALLDATETIME
                            - CHAR(3000)
                            - VARCHAR(100)
                            - VARCHAR(3000)
                            - VARCHAR(max)
                            - TEXT
                            - NCHAR
                            - NVARCHAR
                            - NTEXT
                            - BINARY
                            - VARBINARY
                            - TABLE
                            - UNIQUEIDENTIFIER
                            - DECIMAL(18, 4)
                            - FLOAT(12)
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    stream_data_sink:
      type: object
      properties:
        sink_config:
          type: object
          required:
            - sink_type
    confluent_kafka_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/stream_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - topic
              properties:
                topic:
                  type: string
                  description: |
                    __Topic__: Select the topic for your data.
                include.metadata:
                  type: boolean
                  description: >
                    __Include Nexla Metadata in Message?__: Enable this check to
                    include Nexla metadata as part of the message.

                    Default value: `false`
                message.key:
                  type: string
                  description: >
                    __Attribute used as Message Key__: Set the Nexset record
                    attribute that will be used as a key for the Kafka message.
    data_map_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          required:
            - data_map
          properties:
            sink_config:
              type: object
              required:
                - mapping
              properties:
                mapping:
                  type: object
                  required:
                    - mode
                  description: >
                    __Mapping__: Rules for how Nexset record attributes should
                    be written into Nexla Dynamic Lookup columns.
                  properties:
                    mode:
                      type: string
                      enum:
                        - auto
                      description: >
                        __Mapping Mode__: Setting this to `auto` instructs the
                        platform to automatically create column names to match
                        attribute names.
            data_map:
              type: object
              required:
                - name
                - map_primary_key
              properties:
                name:
                  type: string
                  description: >
                    __Lookup Name__: This destination will create and be linked
                    to a Nexla Lookup. You can choose a different name for the
                    lookup, although we usually recommend using the same name.
                map_primary_key:
                  type: string
                  description: >
                    __Primary Key__: Set the Nexset attribute that should be
                    used as a primary key in the lookup.
                emit_data_default:
                  type: boolean
                  description: >
                    __Return Default Values__: If this value is set to true, any
                    query for lookup rows will return the default values of a
                    column if the Nexset record does not contain that attribute.


                    Default value: `true`
                data_defaults:
                  type: object
                  description: >
                    __Column Default Values__: You can set default values for
                    any column if a value for that column is not present in a
                    Nexset row. 


                    Example: 
                      ```
                        {
                          "attr1" : "NA",
                          "attr2": ""
                        }

                      ```
                  additionalProperties:
                    type: string
                    x-additionalPropertiesName: nexset_attribute_name
                    description: >
                      Property Name: Nexset attribute for which you wish to
                      specify a default value.


                      Property Value: Default value of this attribute. 
    databricks_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mode:
                      type: string
                      enum:
                        - auto
                        - manual
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - SMALLINT
                            - INT2
                            - INTEGER
                            - INT
                            - INT4
                            - BIGINT
                            - INT8
                            - DECIMAL(18,4)
                            - NUMERIC(18,4)
                            - REAL
                            - FLOAT4
                            - DOUBLE PRECISION
                            - FLOAT8
                            - BOOLEAN
                            - BOOL
                            - CHAR
                            - CHARACTER
                            - VARCHAR(65535)
                            - CHARACTER VARYING
                            - DATE
                            - TIMESTAMP
                            - TIMESTAMPTZ
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    delta_lake_azure_blb_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - path
                - data_format
              properties:
                path:
                  type: string
                  description: >
                    __Path to Write__: Set the path to which you want to write
                    all files.
                output.dir.name.pattern:
                  type: string
                  description: >
                    __Subfolder Path Format__: You can configure the platform to
                    automatically create subfolders and partition files into
                    those subfolders.


                    Use Nexla system macros like `{YYYY}`, `{MM}`, etc. to
                    create date-time subfolders. You can also split folders
                    based on the values of an attribute in the Nexset by using
                    the macro `{record.<attribute-name>}`.


                    Default Value: `{YYYY}/{MM}/{dd}`
                data_format:
                  type: string
                  enum:
                    - delta
                  description: >
                    __File Format__: Set the output format of the generated
                    files.
                delta.table.insert.mode:
                  type: string
                  enum:
                    - Insert
                    - Update
                  description: >
                    __Insertion Mode__: Select this mode if you wish to always
                    add new records to the table.


                    * `Insert`: __Append / Insert new records__ - Select this
                    mode if you wish to always add new records to the table.


                    * `Update`: __Update Records in Table__ - Select this mode
                    if you wish to update existing records anytime the table
                    already contains records with matching keys.


                    Default value: `Insert`
                delta.table.keys:
                  type: string
                  description: >
                    __Record Identifier Keys/Fields__: Enter the fields/keys
                    that will be used for matching during updating. This entry
                    should be in the form of a comma-separated string.


                    __Applicable and required__ if `delta.table.insert.mode` is
                    `Update`
    delta_lake_azure_data_lake_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - path
                - data_format
              properties:
                path:
                  type: string
                  description: >
                    __Path to Write__: Set the path to which you want to write
                    all files.
                output.dir.name.pattern:
                  type: string
                  description: >
                    __Subfolder Path Format__: You can configure the platform to
                    automatically create subfolders and partition files into
                    those subfolders.


                    Use Nexla system macros like `{YYYY}`, `{MM}`, etc. to
                    create date-time sub-folders. You can also split folders
                    based on the values of an attribute in the Nexset by using
                    the macro `{record.<attribute-name>}`.


                    Default Value: `{YYYY}/{MM}/{dd}`
                data_format:
                  type: string
                  enum:
                    - delta
                  description: >
                    __File Format__: Set the output format of the generated
                    files.
                delta.table.insert.mode:
                  type: string
                  enum:
                    - Insert
                    - Update
                  description: >
                    __Insertion Mode__: Select this mode if you wish to always
                    add new records to the table.


                    * `Insert`: __Append / Insert new records__ - Select this
                    mode if you wish to always add new records to the table.


                    * `Update`: __Update Records in Table__ - Select this mode
                    if you wish to update existing records anytime the table
                    already contains records with matching keys.


                    Default value: `Insert`
                delta.table.keys:
                  type: string
                  description: >
                    __Record Identifier Keys/Fields__: Enter the fields/keys
                    that will be used for matching during updating. This entry
                    should be in the form of a comma-separated string.


                    __Applicable and required__ if `delta.table.insert.mode` is
                    `Update`
    delta_lake_s3_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - path
                - data_format
              properties:
                path:
                  type: string
                  description: >
                    __Path to Write__: Set the path to which you want to write
                    all files.
                output.dir.name.pattern:
                  type: string
                  description: >
                    __Subfolder Path Format__: You can configure the platform to
                    automatically create subfolders and partition files into
                    those subfolders.


                    Use Nexla system macros like `{YYYY}`, `{MM}`, etc. to
                    create date-time sub-folders. You can also split folders
                    based on the values of an attribute in the Nexset by using
                    the macro `{record.<attribute-name>}`.


                    Default Value: `{YYYY}/{MM}/{dd}`
                data_format:
                  type: string
                  enum:
                    - delta
                  description: >
                    __File Format__: Set the output format of the generated
                    files.
                delta.table.insert.mode:
                  type: string
                  enum:
                    - Insert
                    - Update
                  description: >
                    __Insertion Mode__: Select this mode if you wish to always
                    add new records to the table.


                    * `Insert`: __Append / Insert new records__ - Select this
                    mode if you wish to always add new records to the table.


                    * `Update`: __Update Records in Table__ - Select this mode
                    if you wish to update existing records anytime the table
                    already contains records with matching keys.


                    Default value: `Insert`
                delta.table.keys:
                  type: string
                  description: >
                    __Record Identifier Keys/Fields__: Enter the fields/keys
                    that will be used for matching during updating. This entry
                    should be in the form of a comma-separated string.


                    __Applicable and required__ if `delta.table.insert.mode` is
                    `Update`
    dropbox_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    nosql_data_sink:
      type: object
      properties:
        sink_config:
          type: object
          required:
            - sink_type
            - database
            - collection
          properties:
            database:
              type: string
              description: >
                __Database__: If the destination credentials allow access to
                multiple databases, specify the database to which the
                destination collection belongs.


                __Required__ if the `data_credentials` access for this
                destination is not limited to one database.
            collection:
              type: string
              description: >
                __Collection__: Set the collection in which you wish to create
                documents.
    dynamodb_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/nosql_data_sink'
    email_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    firebase_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/nosql_data_sink'
    firebolt_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                firebolt.table.type:
                  type: string
                  enum:
                    - FACT
                    - DIMENSION
                  description: >
                    __Firebolt Table Type__: Set the type of Firebolt table to
                    which this destination is to be mapped.
                             
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - INT
                            - INTEGER
                            - BIGINT
                            - LONG
                            - FLOAT
                            - DOUBLE
                            - DOUBLE PRECISION
                            - BOOLEAN
                            - VARCHAR
                            - TEXT
                            - STRING
                            - DATE
                            - DATETIME
                            - TIMESTAMP
                            - ARRAY
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    ftp_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    gcp_alloydb_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT8
                            - BIGSERIAL
                            - SERIAL8
                            - BIT
                            - BIT_VARYING
                            - VARBIT
                            - BOOLEAN
                            - BOOL
                            - BOX
                            - BYTEA
                            - CHAR
                            - VARCHAR
                            - CHARACTER VARYING
                            - CIDR
                            - CIRCLE
                            - DATE
                            - DOUBLE PRECISION
                            - INET
                            - INTEGER
                            - INT
                            - INT4
                            - INTERVAL
                            - JSON
                            - JSONB
                            - LINE
                            - LSEG
                            - MACADDR
                            - MONEY
                            - NUMERIC
                            - DECIMAL
                            - PATH
                            - PG_LSN
                            - POINT
                            - POLYGON
                            - REAL
                            - FLOAT4
                            - SMALLINT
                            - INT2
                            - SMALLSERIAL
                            - SERIAL2
                            - SERIAL
                            - SERIAL4
                            - TEXT
                            - TIME
                            - TIMETZ
                            - TIMESTAMP
                            - TIMESTAMPTZ
                            - TSQUERY
                            - TSVECTOR
                            - TXID_SNAPSHOT
                            - UUID
                            - XML
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    gcp_spanner_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - ARRAY
                            - BOOL
                            - BYTES
                            - DATE
                            - JSON
                            - INT64
                            - NUMERIC
                            - FLOAT64
                            - STRING
                            - TIMESTAMP
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    gcs_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    gdrive_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - path
                - data_format
              properties:
                path:
                  type: string
                  description: >
                    __Path to Write__: Set the path to which you want to write
                    all files. 


                    For Google Drive, this is the unique ID of the file/folder
                    into which you want to write the data.


                    Example: `1MZhNV996K77b-kLYC4yIdG7PJiUUGBwV`
                ui.display_path:
                  type: string
                  description: >
                    __Path (display format)__: This should be the human-readable
                    Google Drive path. This is not required but is useful for
                    keeping track of the actual folder path.


                    Example: `demo/demodata`
                ui.selected_file_mime_type:
                  type: string
                  enum:
                    - application/vnd.google-apps.spreadsheet
                  description: >
                    You can choose to always write the Nexset records to a
                    specific Google spreadsheet instead of creating new files in
                    a Google Drive folder.


                    Add this property and set its value to
                    `application/vnd.google-apps.spreadsheet` if you want to
                    write your data to a specific spreadsheet instead of
                    creating new files in the target folder.
                output.dir.name.pattern:
                  type: string
                  description: >
                    __Subfolder Path Format__: You can configure the platform to
                    automatically create sub-folders and partition files into
                    those sub-folders.


                    Use Nexla system macros like `{YYYY}`, `{MM}`, etc. to
                    create datetime sub-folders. You can also split folders
                    based on the values of an attribute in the Nexset by using
                    the macro `{record.<attribute-name>}`.


                    Default Value: `{YYYY}/{MM}/{dd}`


                    __Applicable__: Only if `ui.selected_file_mime_type` is
                    absent
                file.name.prefix:
                  type: string
                  description: >
                    __Custom File Name Prefix__: Generated file names are in the
                    format <prefix>-<nexset-identifier>-<randomizer>. Set this
                    property to define the prefix of each file.


                    You can use Nexla system macros like `{YYYY}`, `{MM}`, etc.
                    to create datetime patterns.


                    __Applicable__: Only if `ui.selected_file_mime_type` is
                    absent
                max.file.size.mb:
                  type: integer
                  description: >
                    __Maximum File Size (in MB)__: The maximum size (MB) of each
                    generated file. Data will be automatically partitioned into
                    multiple files.


                    Default Value: `4096`


                    __Applicable__: Only if `ui.selected_file_mime_type` is
                    absent
                data_format:
                  type: string
                  enum:
                    - csv
                    - tsv
                    - json
                    - xml
                    - xlsx
                    - edi
                    - avro
                    - parquet
                    - orc
                    - GOOGLE_SPREADSHEET
                  description: >
                    __File Format__: Set the output format of the generated
                    files.
                insert.mode:
                  type: string
                  enum:
                    - OVERWRITE
                    - INSERT_ROWS
                  description: >
                    __Row Insertion Mode__:  If you are writing the Nexset to a
                    specific sheet, choose whether Nexla should completely
                    overwrite an existing sheet while writing out data during
                    the latest execution or always append new records as new
                    rows.


                    __Applicable and required__: only if
                    `ui.selected_file_mime_type` is
                    `application/vnd.google-apps.spreadsheet`.
                range:
                  type: string
                  description: >
                    __Configure Sheet Name And Starting Cell__: If you are
                    writing the Nexset to a specific sheet, you can configure
                    the name of the sheet and/or starting cell for the data
                    output.


                    This is an optional step that allows you to define the exact
                    sheet name and/or starting cell for the generated
                    spreadsheet.


                    __Applicable__: only if `ui.selected_file_mime_type` is
                    `application/vnd.google-apps.spreadsheet`.
                clear.range:
                  type: string
                  description: >
                    __Cell Range To Clear Before Writing Data__: If you are
                    writing the Nexset to a specific sheet, you can configure
                    the platform to clear a specific cell range before writing a
                    new batch of records.


                    __Applicable__: only if `ui.selected_file_mime_type` is
                    `application/vnd.google-apps.spreadsheet`.
        - $ref: '#/components/schemas/file_data_sink'
    google_pubsub_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/stream_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - topic
              properties:
                topic:
                  type: string
                  description: |
                    __Topic__: Select the topic for your data.
                subscription:
                  type: string
                  description: >
                    __Subscription__: Set the subscription name if you are
                    choosing to create a new topic.
                include.metadata:
                  type: boolean
                  description: >
                    __Include Nexla Metadata in Message?__: Enable this check to
                    include Nexla metadata as part of the message.


                    Default value: `false`
                message.key:
                  type: string
                  description: >
                    __Attribute used as Message Key__: Set the Nexset record
                    attribute that will be used as a key for the Kafka message.
    jms_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/stream_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - target.type
                - target.name
                - writer.type
              properties:
                target.type:
                  type: string
                  enum:
                    - topic
                    - queue
                  description: >
                    __Type of Destination__: Select whether this destination is
                    a topic or a queue.
                target.name:
                  type: string
                  description: >
                    __Topic / Queue Name  __: Configure the name of the
                    topic/queue where data should be written.
                writer.type:
                  type: string
                  enum:
                    - csv
                    - tsv
                    - txt
                    - xml
                    - json
                  description: >
                    __Data Format__: Select the data format parser to be used
                    for data written to this topic or queue. This is usually
                    `json`.
    kafka_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/stream_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - topic
              properties:
                topic:
                  type: string
                  description: |
                    __Topic__: Select the topic for your data.
                include.metadata:
                  type: boolean
                  description: >
                    __Include Nexla Metadata in Message?__: Enable this check to
                    include Nexla metadata as part of the message.

                    Default value: `false`
                message.key:
                  type: string
                  description: >
                    __Attribute used as Message Key__: Set the Nexset record
                    attribute that will be used as a key for the Kafka message.
    min_io_s3_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    mongo_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/nosql_data_sink'
    mysql_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - TINYINT
                            - SMALLINT
                            - MEDIUMINT
                            - INT
                            - BIGINT
                            - DECIMAL
                            - FLOAT
                            - DOUBLE
                            - BIT
                            - BOOLEAN
                            - BOOL
                            - CHAR
                            - VARCHAR(4096)
                            - BINARY
                            - VARBINARY(65535)
                            - TINYBLOB
                            - BLOB
                            - MEDIUMBLOB
                            - LONGBLOB
                            - TINYTEXT
                            - TEXT
                            - MEDIUMTEXT
                            - LONGTEXT
                            - ENUM
                            - SET
                            - DATE
                            - DATETIME
                            - TIMESTAMP
                            - YEAR
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    netsuite_jdbc_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT8
                            - BIGSERIAL
                            - SERIAL8
                            - BIT
                            - BIT_VARYING
                            - VARBIT
                            - BOOLEAN
                            - BOOL
                            - BOX
                            - BYTEA
                            - CHAR
                            - VARCHAR
                            - CHARACTER VARYING
                            - CIDR
                            - CIRCLE
                            - DATE
                            - DOUBLE PRECISION
                            - INET
                            - INTEGER
                            - INT
                            - INT4
                            - INTERVAL
                            - JSON
                            - JSONB
                            - LINE
                            - LSEG
                            - MACADDR
                            - MONEY
                            - NUMERIC
                            - DECIMAL
                            - PATH
                            - PG_LSN
                            - POINT
                            - POLYGON
                            - REAL
                            - FLOAT4
                            - SMALLINT
                            - INT2
                            - SMALLSERIAL
                            - SERIAL2
                            - SERIAL
                            - SERIAL4
                            - TEXT
                            - TIME
                            - TIMETZ
                            - TIMESTAMP
                            - TIMESTAMPTZ
                            - TSQUERY
                            - TSVECTOR
                            - TXID_SNAPSHOT
                            - UUID
                            - XML
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    oracle_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - VARCHAR2(3000)
                            - VARCHAR2(3000)
                            - NUMBER(10,0)
                            - NUMBER(1,0)
                            - BINARY_FLOAT
                            - BINARY_DOUBLE
                            - RAW(2000)
                            - LONG RAW
                            - CHAR(2000)
                            - NCHAR(2000)
                            - BLOB
                            - DATE
                            - INTERVAL YEAR TO MONTH
                            - INTERVAL DAY TO SECOND
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    oracle_autonomous_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - VARCHAR2(3000)
                            - VARCHAR2(3000)
                            - NUMBER(10,0)
                            - NUMBER(1,0)
                            - BINARY_FLOAT
                            - BINARY_DOUBLE
                            - RAW(2000)
                            - LONG RAW
                            - CHAR(2000)
                            - NCHAR(2000)
                            - BLOB
                            - DATE
                            - TIMESTAMP
                            - INTERVAL YEAR TO MONTH
                            - INTERVAL DAY TO SECOND
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    vector_db_data_sink:
      type: object
      properties:
        create_destination:
          type: boolean
          description: >
            __Create Table In Destination__ If the desired table doesn't exist
            in your database, you can instruct Nexla to create a table when this
            destination is first activated. 


            Default Value: `false` 
        sink_config:
          type: object
          required:
            - sink_type
            - table
            - insert.mode
            - mapping
          properties:
            database:
              type: string
              description: >
                __Database__: If the Destination credentials allow access to
                multiple databases, specify the database to which the
                destination table belongs. This is only needed if the
                `data_credentials` entry for this destination is not limited to
                one database.
            table:
              type: string
              description: >
                __Table__: Set the table to which you wish to push Nexset
                records.
            insert.mode:
              type: string
              enum:
                - INSERT
                - UPSERT
              description: >
                __Table Update Mode__: Select whether records should be inserted
                or upserted into the database.
            primary.key:
              type: string
              description: >
                __Primary Key Columns__: Set all columns that should be set as
                primary keys of the table. For multiple columns, enter a
                comma-separated list of column names.


                __Required__ if `insert.mode` is set to `UPSERT`
            mapping:
              type: object
              required:
                - mode
                - tracker_mode
              description: >
                __Mapping__: Set rules for how Nexset record attributes should
                be written into Database Columns.
              properties:
                mode:
                  type: string
                  enum:
                    - manual
                  description: >
                    Most databases require manual mapping of attributes into
                    columns. With manual mapping, you can set a single attribute
                    to be written into multiple columns. Additionally, you can
                    specify the desired data format for each column.



                    * `auto`: Automatically map attributes to database columns.
                    Column data types will be inferred from record values, and
                    the nesting of attributes will be preserved. __Only
                    available for select warehouses and databases.__


                    * `manual`: Explicitly define attribute mapping and database
                    columns.
                mapping:
                  type: object
                  description: >
                    __Attribute to Database Column Mapping__: Define how
                    attributes should be mapped to database columns.


                    __Required__ if `mapping.mode` is `manual`


                    __Object Definition Rules__: 


                    1. Each Nexset record attribute that needs to be written to
                    one or more columns should be listed as a property of this
                    `mapping` object. In the example, the properties are
                    `nexset_attr_1` and `nexset_attr_2`.


                    2. Each database column to which the attribute needs to be
                    written is a property of the attribute object above. In the
                    example, `nexset_attr_1` is set to write to columns
                    `db_col_1` and `db_col_2`.


                    3. Each database column property has a value that defines
                    the desired data format allowed by the database. Here, data
                    written to `db_col_1` will be written as `TEXT`.


                    __Example__
                      ```
                      {
                          "nexset_attr_1":
                          {
                              "db_col_1": "TEXT",
                              "db_col_2": "TEXT"
                          },
                          "nexset_attr_2":

                          {
                              "db_col_3": "FLOAT64"
                          }
                      }
                    ```
                  additionalProperties:
                    type: object
                    x-additionalPropertiesName: nexset_attribute_name
                    description: >-
                      __Property Name__:  Attribute name of each nexset
                      attribute that needs to be written to one or more columns.
                      Use dot notation for attributes that are present as nested
                      properties inside a Nexset Record.
                    additionalProperties:
                      type: string
                      x-additionalPropertiesName: db_column_name
                      description: >-
                        __Property Name__: Database column name"(s)" of the
                        column"(s)" to which this attribute needs to be written.


                        __Property Value__: Data format of the data in the
                        column"(s)".


                        1. Each datatase column to which attribute needs to be
                        written is a property of this object.


                        2. Each property has a value that defines the desired
                        data format allowed by the database.
                tracker_mode:
                  type: string
                  enum:
                    - NONE
                    - RECORD
                  description: >
                    __Tracker Mode__: Each record that flows through Nexla has
                    an associated unique tracker ID. Set this to `RECORD` to
                    configure the tracker ID to be written out to a database
                    column along with the Nexset record.


                    * `NONE`: The tracker ID won't be written to the database.

                    * `RECORD`: The short form tracker ID containing all
                    required lineage information will be written out in the
                    relevant column.
                tracker_name:
                  type: string
                  description: >
                    __Column Name for Nexla Tracker__: Name of the column used
                    for the Nexla record tracker information.


                    __Applicabale and Required__ if `tracker.mode` is set to
                    `RECORD`
                             
            upsert.nulls:
              type: boolean
              description: >
                __Allow column updates with nulls__: Set as false to allow
                partial upserting of a record with only non-null values.


                Only valid if `insert.mode` is `UPSERT`


                Default Value: `true`
    pinecone_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - database
                - collection
              properties:
                database:
                  type: string
                  description: >
                    __Index__: Enter the name of the index where the vectors
                    will be stored.
                collection:
                  type: string
                  description: >
                    __Namespace__: Set the namespace to store the vectors within
                    the selected Pinecone database.

                    You can use the default namespace or specify a custom
                    namespace.
                  default: ''
                vector_mapping:
                  type: array
                  items:
                    type: string
                  description: >
                    __Vector Mapping__: Enter the mapping of the vector fields
                    to the columns in the collection.
                pinecone.upsert.parallelism:
                  type: number
                  description: >
                    __Upsert Parallelism__: Enter the number of parallel upserts
                    to be performed.
                  default: 1
        - $ref: '#/components/schemas/vector_db_data_sink'
    postgres_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT8
                            - BIGSERIAL
                            - SERIAL8
                            - BIT
                            - BIT_VARYING
                            - VARBIT
                            - BOOLEAN
                            - BOOL
                            - BOX
                            - BYTEA
                            - CHAR
                            - VARCHAR
                            - CHARACTER VARYING
                            - CIDR
                            - CIRCLE
                            - DATE
                            - DOUBLE PRECISION
                            - INET
                            - INTEGER
                            - INT
                            - INT4
                            - INTERVAL
                            - JSON
                            - JSONB
                            - LINE
                            - LSEG
                            - MACADDR
                            - MONEY
                            - NUMERIC
                            - DECIMAL
                            - PATH
                            - PG_LSN
                            - POINT
                            - POLYGON
                            - REAL
                            - FLOAT4
                            - SMALLINT
                            - INT2
                            - SMALLSERIAL
                            - SERIAL2
                            - SERIAL
                            - SERIAL4
                            - TEXT
                            - TIME
                            - TIMETZ
                            - TIMESTAMP
                            - TIMESTAMPTZ
                            - TSQUERY
                            - TSVECTOR
                            - TXID_SNAPSHOT
                            - UUID
                            - XML
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    redshift_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                partitioning.column:
                  type: string
                  description: >
                    __Partitioning Column__: You can choose to have the data
                    partitioned by a specific column when it is written to the
                    destination table. Set the partitioning column if you wish
                    to leverage that capability.
                clustering.columns:
                  type: string
                  description: >
                    __Clustering Columns__: You can choose to leverage column
                    clustering when data is written to the destination tables.
                    Set this value to a comma-separated list of columns that
                    should be used for clustering.        
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - SMALLINT
                            - INT2
                            - INTEGER
                            - INT
                            - INT4
                            - BIGINT
                            - INT8
                            - DECIMAL(18,4)
                            - NUMERIC(18,4)
                            - REAL
                            - FLOAT4
                            - DOUBLE PRECISION
                            - FLOAT8
                            - BOOLEAN
                            - BOOL
                            - CHAR
                            - CHARACTER
                            - VARCHAR(65535)
                            - CHARACTER VARYING
                            - DATE
                            - TIMESTAMP
                            - TIMESTAMPTZ
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    rest_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - url.template
                - method
                - content.type
                - body.template
              properties:
                url.template:
                  type: string
                  description: >
                    __URL__: Set the URL you wish to send data to.

                    You can use Nexla system macros like `{YYYY}`, `{MM}`, etc.,
                    and the output will be automatically converted into the
                    corresponding time values. You can also set dynamic URLs
                    based on the values of an attribute in the record by using
                    the macro `{record.<attribute-name>}`.
                method:
                  type: string
                  enum:
                    - POST
                    - PUT
                    - GET
                    - PATCH
                    - DELETE
                  description: >
                    __Method__: HTTP method used for this rest endpoint. This
                    will usually be `POST`, `PUT`, `GET`, `PATCH`, or `DELETE`.
                content.type:
                  type: string
                  enum:
                    - application/json
                    - application/xml
                  description: >
                    __Content Format__: Content format used for this rest
                    endpoint. Usually, this will be `application/json`.
                body.template:
                  type: string
                  description: >
                    __Nexset Record to Payload Template__: In the case of 1 API
                    call per Nexset record, you can customize how a Nexset
                    record is added to the API payload. The record itself is
                    referenced as a `{message.json}` macro.

                    Default and recommended value: `{message.json}`

                    Note:

                    1. Usually, we recommend formatting the API payload with a
                    Nexset transform.

                    2. This property should not be used to format the payload
                    when multiple Nexset records have to be batched together
                    into 1 API call. In this case, please use the `batch.mode`
                    and `body.transform.function` properties.
                batch.mode:
                  type: boolean
                  description: >
                    __Would you like to batch your records together?__: Select
                    this option if you would like to combine multiple records in
                    each API request. You can set the batching algorithm by
                    configuring the related properties.

                    Default Value: `false`

                    __Supported__ only if `content.type` is `application/json`.
                max.poll.records:
                  type: integer
                  description: >
                    __Maximum Poll Records__: Set the maximum number of records
                    that can be batched together when combining multiple records
                    into an API call.

                    __Applicable and required__ if `batch.mode` is `true`.
                body.transform.function:
                  type: string
                  description: >
                    __Batching Algorithm__: You can define how the platform
                    should combine multiple records in a single API call with a
                    Scala function. Use `messages` to reference records within
                    your Scala function.

                    Sample Scala Functions:

                    1. Payload: JSON array of records:

                    `"body.transform.function": "messages"`

                    2. Payload: JSON object containing array of records as a
                    property (e.g., items):

                    `"body.transform.function": "Map(\"items\" -> messages)"`

                    3. Payload: JSON object with each record modified before
                    batching:

                    `"body.transform.function": "Map(\"items\"-> messages.map(m
                    => {\nm.put(\"attributes\" , Map(\"type\"-> \"Account\"))\n
                    m\n})\n)"`

                    will result in

                    `{
                      "items:[
                      { ...record1, "attributes": {"type": "Account"}}, 
                      { ...record2, "attributes": {"type": "Account"}}
                      ]
                    }`
                create.datasource:
                  type: boolean
                  description: >
                    __Capture API Response__: Set this to `true` if you would
                    like to capture the API response for each API call.
                    Responses, along with requests, will be pushed to an
                    autogenerated Nexla webhook.

                    Default value: `false`.
    s3_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    s3_iceberg_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - iceberg.warehouse.dir
                - iceberg.table.name
              properties:
                iceberg.warehouse.dir:
                  type: string
                  description: >
                    __Warehouse Directory__: Path to the directory where you
                    want the Iceberg table to be created/updated.

                    Nexla uses the path-based Hadoop catalog to write to tables
                    in S3. So if you wish to write to Iceberg table `sales` in
                    `s3://my-nexla-bucket/product/sales`, then set this property
                    to `my-nexla-bucket/product`.
                iceberg.table.name:
                  type: string
                  description: >
                    __Table name__: Name of the table where data will be
                    appended.

                    Nexla uses the path-based Hadoop catalog to write to tables
                    in S3. So if you wish to write to Iceberg table `sales` in
                    `s3://my-nexla-bucket/product/sales`, then set this property
                    to `sales` to write to the table.
                iceberg.insert.mode:
                  type: string
                  enum:
                    - insert
                    - upsert
                  description: >
                    __Update Mode__: Select the mode to insert data into the
                    table. The default mode is `insert` which appends data to
                    the table. The `upsert` mode will update records if they
                    already exist in the table.
                  default: upsert
                iceberg.id-fields:
                  type: string
                  description: >
                    __ID Fields for Upserts__: Comma separated list of column
                    names that will be used to identify records for upserts. If
                    this field is not set, Nexla will append data to the table.
                cdc.enabled:
                  type: boolean
                  description: >
                    __Enable Change Data Capture (CDC)__: Select this option if
                    you would like the platform to monitor database transaction
                    logs for ingesting data.

                    Note that your DBA will need to grant necessary Change Data
                    Capture permissions for Nexla to access transaction logs.
                    Contact Nexla support for relevant instructions.

                    If there are limitations preventing you from enabling CDC
                    controls on your database, you can still setup this source
                    for incremental ingestion by disabling this option and
                    instead selecting incremental table ingestion rules.
                  default: true
                table_name_prefix:
                  type: string
                  description: |
                    __Table name prefix__: Prefix for table name.
                table_name_suffix:
                  type: string
                  description: |
                    __Table name suffix__: Suffix for table name.
                iceberg.partition-keys:
                  type: string
                  description: >
                    __Partition keys__: Comma separated list of column names to
                    use for partitioning when creating a new table. If the table
                    already exists we will not modify the table spec and this
                    option will be ignored.
    sharepoint_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/file_data_sink'
    snowflake_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                partitioning.column:
                  type: string
                  description: >
                    __Partitioning Column__: You can choose to have the data
                    partitioned by a specific column when it is written to the
                    destination table. Set the partitioning column if you wish
                    to leverage that capability.
                clustering.columns:
                  type: string
                  description: >
                    __Clustering Columns__: You can choose to leverage column
                    clustering when data is written to the destination tables.
                    Set this value to a comma-separated list of columns that
                    should be used for clustering.        
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - NUMBER
                            - DECIMAL
                            - NUMERIC
                            - INT
                            - INTEGER
                            - BIGINT
                            - SMALLINT
                            - FLOAT
                            - FLOAT4
                            - FLOAT8
                            - DOUBLE
                            - DOUBLE PRECISION
                            - REAL
                            - VARCHAR
                            - CHAR
                            - CHARACTER
                            - STRING
                            - TEXT
                            - BINARY
                            - VARBINARY
                            - BOOLEAN
                            - DATE
                            - DATETIME
                            - TIME
                            - TIMESTAMP
                            - TIMESTAMP_LTZ
                            - TIMESTAMP_NTZ
                            - TIMESTAMP_TZ
                            - VARIANT
                            - OBJECT
                            - ARRAY
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    snowflake_dcr_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - cleanroom.consumer.accountname
              properties:
                partitioning.column:
                  type: string
                  description: >
                    __Partitioning Column__: You can choose to have the data
                    partitioned by a specific column when it is written to the
                    destination table. Set the partitioning column if you wish
                    to leverage that capability.
                clustering.columns:
                  type: string
                  description: >
                    __Clustering Columns__: You can choose to leverage column
                    clustering when data is written to the destination tables.
                    Set this value to a comma-separated list of columns that
                    should be used for clustering. 
                cleanroom.consumer.accountname:
                  type: string
                  description: >
                    __Account Name for Consumer__: Set the account name for the
                    consumer. This can be retrieved using select
                    current-account()
                cleanroom.join.keys:
                  type: string
                  description: >
                    __Join Key Columns__: Select the columns on which the
                    cleanroom queries have to be joined.
                cleanroom.dimensions:
                  type: string
                  description: >
                    __Dimension Columns__: Select the columns to be treated as
                    cleanroom dimension columns.
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - NUMBER
                            - DECIMAL
                            - NUMERIC
                            - INT
                            - INTEGER
                            - BIGINT
                            - SMALLINT
                            - FLOAT
                            - FLOAT4
                            - FLOAT8
                            - DOUBLE
                            - DOUBLE PRECISION
                            - REAL
                            - VARCHAR
                            - CHAR
                            - CHARACTER
                            - STRING
                            - TEXT
                            - BINARY
                            - VARBINARY
                            - BOOLEAN
                            - DATE
                            - DATETIME
                            - TIME
                            - TIMESTAMP
                            - TIMESTAMP_LTZ
                            - TIMESTAMP_NTZ
                            - TIMESTAMP_TZ
                            - VARIANT
                            - OBJECT
                            - ARRAY
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    sqlserver_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BIGINT
                            - INT
                            - SMALLINT
                            - TINYINT
                            - BIT
                            - NUMERIC
                            - MONEY
                            - SMALLMONEY
                            - REAL
                            - DATETIME
                            - SMALLDATETIME
                            - CHAR(3000)
                            - VARCHAR(100)
                            - VARCHAR(3000)
                            - VARCHAR(max)
                            - TEXT
                            - NCHAR
                            - NVARCHAR
                            - NTEXT
                            - BINARY
                            - VARBINARY
                            - TABLE
                            - UNIQUEIDENTIFIER
                            - DECIMAL(18, 4)
                            - FLOAT(12)
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    teradata_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/database_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              properties:
                mapping:
                  type: object
                  properties:
                    mapping:
                      type: object
                      additionalProperties:
                        type: object
                        x-additionalPropertiesName: nexset_attribute_name
                        description: >-
                          __Property Name__:  Attribute name of each nexset
                          attribute that needs to be written to one or more
                          columns. Use dot notation for attributes that are
                          present as nested properties inside a Nexset Record.
                        additionalProperties:
                          type: string
                          enum:
                            - BYTEINT
                            - SMALLINT
                            - INTEGER
                            - BIGINT
                            - FLOAT
                            - DOUBLE PRECISION
                            - VARCHAR
                            - VARBYTE(64000)
                            - DATE
                            - TIME
                            - TIMESTAMP
                          x-additionalPropertiesName: db_column_name
                          description: >-
                            __Property Name__: Database column name"(s)" of the
                            column"(s)" to which this attribute needs to be
                            written.


                            __Property Value__: Data format of the data in the
                            column"(s)".


                            1. Each datatase column to which attribute needs to
                            be written is a property of this object.


                            2. Each property has a value that defines the
                            desired data format allowed by the database.
    tibco_data_sink:
      allOf:
        - $ref: '#/components/schemas/data_sink'
        - $ref: '#/components/schemas/stream_data_sink'
        - type: object
          properties:
            sink_config:
              type: object
              required:
                - target.type
                - target.name
                - writer.type
              properties:
                target.type:
                  type: string
                  enum:
                    - topic
                    - queue
                  description: |
                    Select whether this destination is a topic or a queue.
                target.name:
                  type: string
                  description: >
                    __Topic / Queue Name  __: Configure the name of the
                    topic/queue where data should be written.
                writer.type:
                  type: string
                  enum:
                    - csv
                    - tsv
                    - txt
                    - xml
                    - json
                  description: >
                    __Data Format__: Select the data format parser for the data
                    to be written to this topic or queue. This is usually
                    `json`.      
    DataMap:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
        public:
          type: boolean
        managed:
          type: boolean
        data_type:
          type: string
          example: string
        data_format:
          type: string
          format: nullable
        data_sink_id:
          type: string
          format: nullable
        emit_data_default:
          type: boolean
        use_versioning:
          type: boolean
        map_primary_key:
          type: string
          example: id
        data_defaults:
          type: object
        updated_at:
          type: string
          format: date-time
          example: '2021-07-26T21:29:58.000Z'
        created_at:
          type: string
          format: date-time
          example: '2021-07-26T21:29:58.000Z'
        owner:
          type: object
          properties:
            id:
              type: integer
              format: int32
            full_name:
              type: string
            email:
              type: string
              format: email
        org:
          $ref: '#/components/schemas/OrgSimplified'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        data_set_id:
          type: integer
          format: nullable
        map_entry_count:
          type: integer
          format: int32
          example: 200
        map_entry_schema:
          type: object
        tags:
          type: array
          items:
            type: string
    DataMapBase:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        map_primary_key:
          type: string
          example: id
          description: >
            Key name which should be used as the primary key for looking up rows
            in this data map.
        data_defaults:
          type: object
          description: >
            The default values to use for any key if the key is not present in
            the corresponding row.
          additionalProperties:
            type:
              - string
              - number
            x-additionalPropertiesName: data_map_key
            description: >
              Enter the data map key and corresponding default value you wish to
              be assigned to that key. 
        emit_data_default:
          type: boolean
          description: >
            This property defines whether a lookup query should return values
            with applicable default values for missing properties in the row.
        tags:
          type: array
          items:
            type: string
    DataMapCreate:
      allOf:
        - $ref: '#/components/schemas/DataMapBase'
        - type: object
          required:
            - name
            - data_type
        - type: object
          properties:
            data_map:
              type: array
              description: >
                Enter an array of data map entries if you wish to seed this data
                map with some rows of data while creating the data map. 


                You can also update data map rows by calling the endpoint for
                updating entries.
              items:
                type: object
                additionalProperties:
                  type:
                    - string
                    - number
                  x-additionalPropertiesName: data_map_key
                  description: >
                    Each property in this object should be keyed by the desired
                    key name and the value should be equal to the desired value
                    of that key. 
    DataMapMutable:
      allOf:
        - $ref: '#/components/schemas/DataMapBase'
    ResourceType:
      type: string
      enum:
        - transform
    DataCredentialBrief:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
    CodeType:
      type: string
      enum:
        - jolt_standard
        - jolt_custom
    OutputType:
      type: string
      enum:
        - record
    Transform:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        name:
          type: string
          example: test
        resource_type:
          $ref: '#/components/schemas/ResourceType'
        reusable:
          type: boolean
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        data_credentials:
          allOf:
            - $ref: '#/components/schemas/DataCredentialBrief'
            - format: nullable
        runtime_data_credentials:
          allOf:
            - $ref: '#/components/schemas/DataCredentialBrief'
            - format: nullable
        description:
          type: string
          example: test
        code_type:
          $ref: '#/components/schemas/CodeType'
        output_type:
          $ref: '#/components/schemas/OutputType'
        code_config:
          type: object
        custom_config:
          type: object
          format: nullable
        code_encoding:
          type: string
          example: none
        code:
          type: array
          items:
            type: object
        managed:
          type: boolean
        data_sets:
          type: array
          items:
            type: integer
        copied_from_id:
          type: integer
          format: nullable
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        tags:
          type: array
          items:
            type: string
    TransformMutable:
      type: object
      required:
        - name
        - output_type
        - reusable
        - code
        - code_type
        - code_encoding
      properties:
        name:
          type: string
        description:
          type: string
        output_type:
          type: string
          enum:
            - record
          description: >
            Type of code container. This must be set to `record` to signify that
            this code container is to be used to convert an input record of a
            Nexset into an output record for that Nexset.
        reusable:
          type: boolean
          description: >
            Whether or not this transform can be referenced by multiple Nexsets.
            This should always be `true` for reusable record transforms.     
        code_type:
          type: string
          enum:
            - jolt_custom
            - jolt_standard
          description: >-
            Type of code in the `code` block. Use `jolt_custom` if the code in
            the code block is a `python` or `javascript` transform code block
            wrapped inside a Jolt operation block.
        code_encoding:
          type: string
          enum:
            - none
          description: >
            Whether or not the code in the `code` block is encoded. Set this to
            `none` for reusable record transforms.
        code:
          description: >
            Code to be executed for transforming records. 

            If you wish to execute a Python or Javascript code snippet during
            transformation, you'll need to `base64`-encode that code snippet and
            wrap it inside the following Jolt operation object.


            For example, if you want to execute this Python code as a reusable
            record transform 

            ```python

            def transform(input, metadata, args):
              # Sample python transform to pass all attributes through
            return input

            ```

            the corresponding `code` object would be

            ```json

            [
              {
                "operation": "nexla.custom",
                "spec": {
                  "language": "python",
                  "encoding": "base64",
                  "script": "ZGVmIHRyYW5zZm9ybShpbnB1dCwgbWV0YWRhdGEsIGFyZ3MpOgogICMgU2FtcGxlIHB5dGhvbiB0cmFuc2Zvcm0gdG8gcGFzcyBhbGwgYXR0cmlidXRlcyB0aHJvdWdoCiAgcmV0dXJuIGlucHV0"
                }
              }
            ]

            ```  
          oneOf:
            - type: array
              items:
                type: object
                properties:
                  operation:
                    type: string
                    enum:
                      - nexla.custom
                    description: >
                      Jolt operation for this code block. For `python` and
                      `javascript`, it must be `nexla.custom`.
                  spec:
                    type: object
                    description: >
                      Jolt specification for this block. See the Python example
                      above for sample specs.
                    properties:
                      language:
                        type: string
                        enum:
                          - python
                          - javascript
                        description: |
                          Code language of the encoded script.
                      encoding:
                        type: string
                        enum:
                          - base64
                        description: >
                          Python or Javascript code snippets must always be
                          Base64-encoded.
                      script:
                        type: string
                        description: >
                          Base64-encoded Python or Javascript code snippet that
                          must be executed for transforming records.
            - type: array
              items:
                type: object
                additionalProperties:
                  type: object
                  x-additionalPropertiesName: Jolt operation block
                  description: >
                    Standard Jolt operation blocks to be executed for
                    transforming records.                  
        custom_config:
          type: object
          description: >
            Configuration block useful for converting code into Nexla UI's
            Nexset Designer Rule blocks. 


            This should not be sent in the payload unless the transform is being
            created using the Nexla UI's Nexset Designer screen.
        tags:
          type: array
          items:
            type: string
    code_containers_OutputType:
      type: string
      enum:
        - record
        - attribute
    code_containers_CodeType:
      type: string
      enum:
        - jolt_standard
        - jolt_custom
        - python
        - javascript
    CodeContainerMutable:
      type: object
      required:
        - name
        - output_type
        - reusable
        - code
        - code_type
        - code_encoding
      properties:
        name:
          type: string
          example: test
        description:
          type: string
          example: test
        data_credentials_id:
          type: integer
          format: nullable
          description: >
            Credential ID for accessing the code repository (e.g., Github). This
            is for code containers in which the code is saved in a remote
            repository.


            Note that this is not required for script connectors in which the
            script is hosted in a Nexla Github repository.
        runtime_data_credentials_id:
          type: integer
          format: nullable
          description: >
            > Note: This is an alpha property that is likely to be
            deprecated/replaced in a future release.


            Credential ID for the file store. This is required code blocks used
            for parsing files.
        output_type:
          $ref: '#/components/schemas/code_containers_OutputType'
        code_type:
          $ref: '#/components/schemas/code_containers_CodeType'
        code_encoding:
          type: string
          enum:
            - none
            - base64
          description: >
            Whether or not the code in the `code` block is encoded. Set this to
            `none` for reusable record transforms.      
        code:
          description: >
            Code to be executed in this code container.


            Please refer to the endpoints for `transforms`,
            `attribute_transforms` and `validators` for respective `code` block
            requirements.
          oneOf:
            - type: string
            - type: array
              items:
                type: object
                properties:
                  operation:
                    type: string
                    example: nexla.custom
                  spec:
                    type: object
                    properties:
                      language:
                        type: string
                        example: python
                      encoding:
                        type: string
                        example: base64
                      script:
                        type: string
        reusable:
          type: boolean
          description: >
            Whether or not this transform can be referenced by multiple
            resources. This should always be `true` for reusable record and
            attribute transforms.       
        tags:
          type: array
          items:
            type: string
        custom_config:
          type: object
    code_containers_ResourceType:
      type: string
      enum:
        - source
        - sink
        - transform
        - error
        - validator
    CodeContainer:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        name:
          type: string
          example: test
        resource_type:
          $ref: '#/components/schemas/code_containers_ResourceType'
        reusable:
          type: boolean
        public:
          type: boolean
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        data_credentials:
          allOf:
            - $ref: '#/components/schemas/DataCredentialBrief'
            - format: nullable
        runtime_data_credentials:
          allOf:
            - $ref: '#/components/schemas/DataCredentialBrief'
            - format: nullable
        description:
          type: string
          example: test
        code_type:
          $ref: '#/components/schemas/code_containers_CodeType'
        output_type:
          $ref: '#/components/schemas/code_containers_OutputType'
        code_config:
          type: object
        custom_config:
          type: object
          format: nullable
        code_encoding:
          type: string
          example: none
        code:
          type: array
          items:
            type: object
            properties:
              operation:
                type: string
                example: nexla.custom
              spec:
                type: object
                properties:
                  language:
                    type: string
                    example: python
                  encoding:
                    type: string
                    example: base64
                  script:
                    type: string
                    example: >-
                      ZGVmIHRyYW5zZm9ybShpbnB1dCwgbWV0YWRhdGEsIGFyZ3MpOgogICMgU2FtcGxlIHB5dGhvbiB0cmFuc2Zvcm0gdG8gcGFzcyBhbGwgYXR0cmlidXRlcyB0aHJvdWdoCiAgcmV0dXJuIGlucHV0
        managed:
          type: boolean
        data_sets:
          type: array
          items:
            type: integer
        copied_from_id:
          type: integer
          format: nullable
        updated_at:
          type: string
          format: date-time
          example: '2023-01-24T03:26:43.000Z'
        created_at:
          type: string
          format: date-time
          example: '2023-01-24T03:26:43.000Z'
        tags:
          type: array
          items:
            type: string
    attribute_transforms_CodeType:
      type: string
      enum:
        - python
        - javascript
    attribute_transforms_OutputType:
      type: string
      enum:
        - attribute
    AttributeTransform:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        name:
          type: string
          example: test
        resource_type:
          $ref: '#/components/schemas/ResourceType'
        reusable:
          type: boolean
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        data_credentials:
          allOf:
            - $ref: '#/components/schemas/DataCredentialBrief'
            - format: nullable
        runtime_data_credentials:
          allOf:
            - $ref: '#/components/schemas/DataCredentialBrief'
            - format: nullable
        description:
          type: string
          example: test
        code_type:
          $ref: '#/components/schemas/attribute_transforms_CodeType'
        output_type:
          $ref: '#/components/schemas/attribute_transforms_OutputType'
        code_config:
          type: object
        custom_config:
          type: object
          format: nullable
        code_encoding:
          type: string
          example: none
        code:
          type: string
        managed:
          type: boolean
        data_sets:
          type: array
          items:
            type: integer
        copied_from_id:
          type: integer
          format: nullable
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        tags:
          type: array
          items:
            type: string
    AttributeTransformMutable:
      type: object
      required:
        - name
        - output_type
        - reusable
        - code
        - code_type
        - code_encoding
      properties:
        name:
          type: string
        description:
          type: string
        output_type:
          type: string
          enum:
            - attribute
          description: >
            Type of code container. This must be set to `attribute` to signify
            that this code container is to be used for generating the value of
            an output attribute.
        reusable:
          type: boolean
          description: >
            Whether or not this transform can be referenced by multiple Nexsets.
            This should always be `true` for reusable transforms.     
        code_type:
          type: string
          enum:
            - python
            - javascipt
          description: Type of code in the code block.
        code_encoding:
          type: string
          enum:
            - base64
          description: >
            Whether or not the code in the `code` block is encoded. Set this to
            `base64` for reusable attribute transforms.
        code:
          type: string
          description: >
            Code to be executed for transforming records. 

            If you wish to execute a Python or Javascript code snippet during
            transformation, you'll need to `base64`-encode that code snippet.


            For example, if you want to execute this Python code as a reusable
            record transform 

            ```python

            def transformAttribute(input, metadata, args):
              return input.get(args[0])
            ```

            the corresponding `code` value would be

            ```

            ZGVmIHRyYW5zZm9ybUF0dHJpYnV0ZShpbnB1dCwgbWV0YWRhdGEsIGFyZ3MpOgogIHJldHVybiBpbnB1dC5nZXQoYXJnc1swXSk=

            ```                  
        custom_config:
          type: object
          description: >
            Configuration block useful for converting code into Nexla UI's
            Nexset Designer Rule blocks. 


            This should not be sent in the payload unless the transform is being
            created using the Nexla UI's Nexset Designer screen.
        tags:
          type: array
          items:
            type: string
    OrgsUpdate:
      type: object
      properties:
        name:
          type: string
        owner_id:
          type: integer
        billing_owner_id:
          type: integer
        email_domain:
          type: string
        client_identifier:
          type: string
          description: >
            Recommended but not required. This is a unique identifier for the
            organization in the environment. This identifier is especially
            useful for organizations that are using SSO. 


            Recommendation: Use the organization's domain name. Apply variants
            if a company needs more than one organization account in the
            environment.       
        enable_nexla_password_login:
          type: boolean
          description: >
            Set to `false` if an organization requires no user to be allowed
            username-password-based access. Applicable for organizations who use
            GSuite email or have SSO enabled.


            Default value: `true`
    OrgMembershipStatus:
      type: string
      enum:
        - ACTIVE
        - DEACTIVATED
      description: >
        Indicates whether the user's membership in this organization is active
        or not.


        If the membership is DEACTIVATED the user can no longer access the
        account but the resources owned by them will still be accessible by the
        organization administrators.
    UserStatus:
      type: string
      enum:
        - ACTIVE
        - DEACTIVATED
        - SOURCE_COUNT_CAPPED
        - SOURCE_DATA_CAPPED
        - TRIAL_EXPIRED
      description: >
        Indicates the user's account status across all organizations they are
        members of.
    OrgMember:
      type: object
      properties:
        id:
          type: integer
          description: Nexla User ID of this user.
        full_name:
          type: string
        email:
          type: string
        is_admin?:
          type: boolean
          description: >
            Indicates whether this user is an administrator for the organization
            or not.
        access_role:
          $ref: '#/components/schemas/AccessRoles'
        org_membership_status:
          $ref: '#/components/schemas/OrgMembershipStatus'
        user_status:
          $ref: '#/components/schemas/UserStatus'
    OrgMemberMutable:
      oneOf:
        - type: object
          required:
            - id
          properties:
            id:
              type: integer
              description: Nexla User ID of the user to be added or updated.
            access_role:
              $ref: '#/components/schemas/AccessRoles'
        - type: object
          required:
            - email
          properties:
            email:
              type: string
              description: >
                Email ID of the user to be added or updated. If a user with this
                Email ID already exists on the platform then the API will update
                that account with this membership rule.
            access_role:
              $ref: '#/components/schemas/AccessRoles'
    OrgMemberList:
      type: object
      properties:
        members:
          type: array
          items:
            $ref: '#/components/schemas/OrgMemberMutable'
    OrgMemberDelete:
      type: object
      properties:
        members:
          type: array
          items:
            oneOf:
              - type: object
                required:
                  - id
                properties:
                  id:
                    type: integer
                    description: Nexla User ID of the user who should be removed.
              - type: object
                required:
                  - email
                properties:
                  email:
                    type: string
                    description: |
                      Email ID of the user who should be removed.      
    TeamMemberResponseSchema:
      type: object
      properties:
        id:
          type: integer
          description: |
            Unique ID of the user. 
        email:
          type: string
          format: email
          description: |
            Email ID of the user. 
        admin:
          type: boolean
          description: |
            Reflects whether the user is an administrator of this team or not.
    Team:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        member:
          type: boolean
        members:
          type: array
          items:
            $ref: '#/components/schemas/TeamMemberResponseSchema'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        tags:
          type: array
          items:
            type: string
    TeamMemberRequestSchema:
      oneOf:
        - type: object
          properties:
            id:
              type: integer
              description: |
                Unique ID of the user. 
            admin:
              type: boolean
              description: >
                Reflects whether the user is an administrator of this team or
                not.
        - type: object
          properties:
            email:
              type: string
              format: email
              description: |
                Email ID of the user.
            admin:
              type: boolean
              description: >
                Reflects whether the user is an administrator of this team or
                not.        
    TeamMutable:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        members:
          type: array
          items:
            $ref: '#/components/schemas/TeamMemberRequestSchema'
    TeamCreate:
      allOf:
        - $ref: '#/components/schemas/TeamMutable'
        - type: object
          required:
            - name
    TeamMemberList:
      type: object
      properties:
        members:
          type: array
          items:
            $ref: '#/components/schemas/TeamMemberResponseSchema'
    ProjectDataFlow:
      type: object
      properties:
        id:
          type: integer
          description: |
            Unique identifier of this flow.
        project_id:
          type: integer
          description: |
            Unique identifier of the project this flow belongs to.      
        data_source_id:
          type: integer
          format: nullable
          description: >
            The ID of the data source which is the root node of this flow chain.


            Unless the flow chain has been created from a shared Nexset, flow
            definitions start from the source as the root node. This property
            reflects the source that is the root node of this flow.
        data_set_id:
          type: integer
          format: nullable
          description: >
            The ID of the Nexset which is the root node of this flow chain.


            This property is not null only if the flow was created from a shared
            Nexset. In that case, this value reflects the ID of the derived
            dataset created from the shared Nexset.  
        updated_at:
          type: string
          example: '2023-01-31T01:39:54.000Z'
        created_at:
          type: string
          example: '2023-01-31T01:39:54.000Z'
    Project:
      type: object
      properties:
        id:
          type: integer
          format: int32
          description: |
            Unique identifier of this project.
        owner:
          type: object
          properties:
            id:
              type: integer
              format: int32
            full_name:
              type: string
              example: John Johnson
            email:
              type: string
              example: example@nexla.com
        org:
          type: object
          properties:
            id:
              type: integer
              format: int32
            name:
              type: string
              example: Nexla
            email_domain:
              type: string
              example: nexla.com
            client_identifier:
              type: string
              format: nullable
        name:
          type: string
          example: test project
        description:
          type: string
          example: it's a test project
        data_flows:
          type: array
          description: >
            List of all flows that are part of this project.


            > Note: This is a deprecated format of representing flows. We
            recommend using the `flows` entry in this object.
          items:
            $ref: '#/components/schemas/ProjectDataFlow'
        flows:
          type: array
          description: >
            List of all flows that are part of this project.


            > Note: This is a new recommeded format of representing flows. We
            recommend using this format which uses unique flow ids instead of
            the `data_flows` object.
          items:
            $ref: '#/components/schemas/ProjectDataFlow'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        tags:
          type: array
          items:
            type: string
        copied_from_id:
          type: string
          format: nullable
        updated_at:
          type: string
          format: date-time
          example: '2023-01-31T01:39:54.000Z'
        created_at:
          type: string
          format: date-time
          example: '2023-01-31T01:39:54.000Z'
    ProjectFlowIdentifier:
      anyOf:
        - type: object
          properties:
            data_source_id:
              type: integer
              description: >
                The ID of the data source which is the root node of this flow
                chain.


                Unless the flow chain has been created from a shared Nexset,
                flow definitions start from the source as the root node. This
                property reflects the source that is the root node of this
                flow.          
        - type: object
          properties:
            data_set_id:
              type: integer
              description: >
                The ID of the Nexset which is the root node of this flow chain.


                This property is not null only if the flow was created from a
                shared Nexset. In that case, this value reflects the ID of the
                derived dataset created from the shared Nexset.           
    ProjectFlowList:
      type: object
      properties:
        data_flows:
          type: array
          items:
            $ref: '#/components/schemas/ProjectFlowIdentifier'
    ProjectMutable:
      allOf:
        - type: object
          properties:
            name:
              type: string
              example: test project
            description:
              type: string
              example: it's a test project
        - $ref: '#/components/schemas/ProjectFlowList'
    ProjectCreate:
      allOf:
        - $ref: '#/components/schemas/ProjectMutable'
        - required:
            - name
    ProjectFlowListFlowNodes:
      type: object
      properties:
        flows:
          type: array
          items:
            type: integer
            description: |
              Unique ID of the flow node.
    UserTier:
      type: string
      enum:
        - FREE
        - TRIAL
        - PAID
        - FREE_FOREVER
      description: >
        Indicates whether a user is on a paid, free, or trial account. Used to
        determine limits on records processed by the account.
    OrgMembership:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        is_admin?:
          type: boolean
        org_membership_status:
          $ref: '#/components/schemas/OrgMembershipStatus'
    User:
      type: object
      properties:
        id:
          type: integer
        email:
          type: string
          format: email
        full_name:
          type: string
        super_user:
          type: boolean
        impersonated:
          type: boolean
        default_org:
          type: object
          properties:
            id:
              type: integer
            name:
              type: string
          additionalProperties: false
        user_tier:
          $ref: '#/components/schemas/UserTier'
        status:
          $ref: '#/components/schemas/UserStatus'
        account_locked:
          type: boolean
        org_memberships:
          type: array
          items:
            $ref: '#/components/schemas/OrgMembership'
        email_verified_at:
          type: string
          format: date-time
        tos_signed_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
      additionalProperties: false
    UserAdmin:
      oneOf:
        - type: string
          enum:
            - '*'
        - type: boolean
        - type: array
          items:
            type: object
            properties:
              admin:
                type: boolean
              org_id:
                type: integer
    UsersCreateRequired:
      type: object
      required:
        - full_name
        - email
      properties:
        full_name:
          type: string
        email:
          type: string
        default_org_id:
          type: integer
        status:
          $ref: '#/components/schemas/UserStatus'
        user_tier_id:
          type: integer
        user_tier:
          type: string
        password:
          type: string
        tos_signed_at:
          type: string
          format: date-time
        admin:
          $ref: '#/components/schemas/UserAdmin'
    AccountSummary:
      type: object
      properties:
        data_sources:
          type: object
          properties:
            counts:
              type: object
              properties:
                total:
                  type: integer
                  format: int32
                owner:
                  type: integer
                  format: int32
                collaborator:
                  type: integer
                  format: int32
                active:
                  type: integer
                  format: int32
                paused:
                  type: integer
                  format: int32
                draft:
                  type: integer
                  format: int32
        data_sets:
          type: object
          properties:
            counts:
              type: object
              properties:
                total:
                  type: integer
                  format: int32
                owner:
                  type: integer
                  format: int32
                collaborator:
                  type: integer
                  format: int32
                active:
                  type: integer
                  format: int32
                paused:
                  type: integer
                  format: int32
                draft:
                  type: integer
                  format: int32
        data_sinks:
          type: object
          properties:
            counts:
              type: object
              properties:
                total:
                  type: integer
                  format: int32
                owner:
                  type: integer
                  format: int32
                collaborator:
                  type: integer
                  format: int32
                active:
                  type: integer
                  format: int32
                paused:
                  type: integer
                  format: int32
                draft:
                  type: integer
                  format: int32
        data_maps:
          type: object
          properties:
            counts:
              type: object
              properties:
                total:
                  type: integer
                  format: int32
                owner:
                  type: integer
                  format: int32
                collaborator:
                  type: integer
                  format: int32
    UserExpanded:
      allOf:
        - $ref: '#/components/schemas/User'
        - type: object
          properties:
            account_summary:
              $ref: '#/components/schemas/AccountSummary'
    UsersUpdate:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        status:
          $ref: '#/components/schemas/UserStatus'
        user_tier_id:
          type: integer
        user_tier:
          type: string
        password:
          type: string
        password_confirmation:
          type: string
        password_current:
          type: string
        tos_signed_at:
          type: string
          format: date-time
        admin:
          $ref: '#/components/schemas/UserAdmin'
    Notification:
      type: object
      properties:
        id:
          type: integer
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        access_roles:
          $ref: '#/components/schemas/AccessRoles'
        level:
          type: string
        resource_id:
          type: integer
        resource_type:
          type: string
        message_id:
          type: integer
        message:
          type: string
        read_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
    NotificationTypeCategory:
      type: string
      enum:
        - PLATFORM
        - SYSTEM
        - DATA
    NotificationEventType:
      type: string
      enum:
        - SHARE
        - CREATE
        - DELETE
        - UPDATE
        - ACTIVATE
        - PAUSE
        - METRICS
        - RESETPASS
        - ERROR_AGGREGATED
        - ERROR
        - MONITOR
        - WRITE
        - EMPTY_DATA
        - READ_START
        - READ_DONE
        - WRITE_START
        - WRITE_DONE
    NotificationResourceType:
      type: string
      enum:
        - ORG
        - USER
        - DATA_FLOW
        - CUSTOM_DATA_FLOW
        - SOURCE
        - DATASET
        - SINK
    NotificationType:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        category:
          $ref: '#/components/schemas/NotificationTypeCategory'
        default:
          type: boolean
        status:
          type: boolean
        event_type:
          $ref: '#/components/schemas/NotificationEventType'
        resource_type:
          $ref: '#/components/schemas/NotificationResourceType'
    NotificationChannel:
      type: string
      enum:
        - APP
        - EMAIL
        - SMS
        - SLACK
        - WEBHOOKS
    NotificationChannelSetting:
      type: object
      properties:
        id:
          type: integer
        owner_id:
          type: integer
        org_id:
          type: integer
        channel:
          $ref: '#/components/schemas/NotificationChannel'
        config:
          type: object
          additionalProperties:
            type: string
            x-additionalPropertiesName: config_property
            description: >
              Set the relevant configuration properties based on the type of
              notification channel.    
    NotificationChannelSettingUpdate:
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/NotificationChannel'
        config:
          type: object
          additionalProperties:
            type: string
            x-additionalPropertiesName: config_property
            description: >
              Set the relevant configuration properties based on the type of
              notification channel. 
    NotificationChannelSettingCreateRequired:
      allOf:
        - $ref: '#/components/schemas/NotificationChannelSettingUpdate'
        - type: object
          required:
            - channel
            - config
    NotificationSettingStatus:
      type: string
      description: >
        Whether or not the user should be notified about this event for this
        resource on the selected channel.
      enum:
        - PAUSED
        - ACTIVE
    NotificationSetting:
      type: object
      properties:
        id:
          type: integer
        org_id:
          type: integer
        owner_id:
          type: integer
        channel:
          $ref: '#/components/schemas/NotificationChannel'
        notification_resource_type:
          $ref: '#/components/schemas/NotificationResourceType'
        resource_id:
          type: integer
        config:
          type: object
        priority:
          type: integer
        status:
          $ref: '#/components/schemas/NotificationSettingStatus'
        notification_type_id:
          type: integer
        name:
          type: string
        description:
          type: string
        code:
          type: integer
        category:
          type: string
        event_type:
          $ref: '#/components/schemas/NotificationEventType'
        resource_type:
          $ref: '#/components/schemas/NotificationResourceType'
    NotificationSettingUpdate:
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/NotificationChannel'
        status:
          $ref: '#/components/schemas/NotificationSettingStatus'
        config:
          type: object
          description: >
            Configuration properties for customizing the criteria for firing the
            event.
          additionalProperties:
            type: string
            x-additionalPropertiesName: config_property
            description: >
              Set the relevant configuration properties if you want to override
              the default platform settings.    
        notification_resource_type:
          $ref: '#/components/schemas/NotificationResourceType'
        resource_id:
          type: integer
        checked:
          type: boolean
        notification_channel_setting_id:
          type: integer
        notification_type_id:
          type: integer
    NotificationSettingCreateRequired:
      allOf:
        - $ref: '#/components/schemas/NotificationSettingUpdate'
        - type: object
          required:
            - channel
            - notification_type_id
    NotificationSettingResourceStatus:
      type: string
      enum:
        - INIT
        - PAUSED
        - ACTIVE
        - RATE_LIMITED
    NotificationSettingTypeView:
      type: object
      properties:
        setting_id:
          type: integer
          format: int32
        org_id:
          type: integer
          format: int32
        owner_id:
          type: integer
          format: int32
        channel:
          $ref: '#/components/schemas/NotificationChannel'
        resource_type:
          $ref: '#/components/schemas/NotificationResourceType'
        resource_id:
          type: integer
          format: int32
        setting_config:
          type: string
          format: nullable
        priority:
          type: integer
          format: int32
        status:
          $ref: '#/components/schemas/NotificationSettingStatus'
        notification_type_id:
          type: integer
          format: int32
        setting_created_at:
          type: string
        setting_updated_at:
          type: string
        notification_type_name:
          type: string
        notification_type_description:
          type: string
        notification_type_code:
          type: integer
          format: int32
        notification_type_category:
          type: string
        notification_type_event_type:
          $ref: '#/components/schemas/NotificationEventType'
        resource_owner_id:
          type: integer
          format: int32
        resource_org_id:
          type: integer
          format: int32
        resource_name:
          type: string
        resource_description:
          type: string
        resource_status:
          $ref: '#/components/schemas/NotificationSettingResourceStatus'
    DashboardMetricSet:
      type: object
      properties:
        records:
          type: integer
          format: int32
          description: >
            The total number of records that were processed for this resource
            during the past 24 hours.           
        size:
          type: integer
          format: int32
          description: >
            The total volume (in bytes) of records that were processed for this
            resource during the past 24 hours.            
        errors:
          type: integer
          format: int32
          description: >
            The total number of data processing errors that occurred on this
            resource during the past 24 hours.         
        status:
          type: string
          enum:
            - OK
            - WARNING
            - ERROR
          description: >
            Indicates whether the platform identified this resource's
            performance during the last 24 hours as something that might require
            attention or not. 
    ResourceMetricDaily:
      type: object
      properties:
        time:
          type: string
          format: date
          description: |
            The date (in UTC) that the metrics in this entry are applicable for.
        records:
          type: integer
          format: int32
          description: >
            The total number of records that were processed on the date
            indicated by the `time` property.                 
        size:
          type: integer
          format: int32
          description: >
            The total volume (in bytes) of records that were processed on the
            date indicated by the `time` property.           
        errors:
          type: integer
          format: int32
          description: >
            The total number of data processing errors that occurred on the date
            indicated by the `time` property. 
    ResourceMetricByRun:
      type: object
      properties:
        runId:
          type: integer
          description: >
            The run ID / ingestion cycle the the metrics in this entry are
            applicable for.
        lastWritten:
          type: integer
          description: >
            The destination write batch id the the metrics in this entry are
            applicable for. 


            > *Note*: This entry is present and applicable only if the request
            was made for a destination *and* the request was for grouping by
            `lastWritten` instead of `runId`
        dataSetId:
          type: integer
          description: >
            The Nexset ID these records were applicable for. For a data source,
            this indicates the nexset that received the records these metrics
            correspond to. For a data sink, this indicates the nexset that had
            the records these metrics correspond to.        
        records:
          type: integer
          format: int32
          description: >
            The total number of records that were processed during the ingestion
            cycle indicated by `runId`                
        size:
          type: integer
          format: int32
          description: >
            The total volume (in bytes) of records that processed during the
            ingestion cycle indicated by `runId`            
        errors:
          type: integer
          format: int32
          description: >
            The total number of data processing errors that occurred during the
            ingestion cycle indicated by `runId` 
    FlowResourceMetric:
      type: object
      properties:
        id:
          type: integer
        metric:
          type: object
          properties:
            records:
              type: integer
            size:
              type: integer
            errors:
              type: integer
    FlowLogEntry:
      type: object
      properties:
        timestamp:
          type: integer
          format: unix epoch in milliseconds
          example: 1695442864636
          description: |
            Timestamp at which this log entry was generated.
        resource_id:
          type: integer
          description: |
            The ID of the resource that generated this log entry.
        resource_type:
          type: string
          description: |
            The type of flow resource that generated this log entry.  
          enum:
            - SOURCE
            - DATASET
            - SINK
        log:
          type: string
          example: Processed records=100, errors=0, size=94162"
          description: >
            Detailed information about the data processing events on the flow
            resource.
        log_type:
          type: string
          description: >
            Indicates the type of event reflected by log entry.


            * `SUMMARY`: Log entry describing high level summary of data
            processing event.

            * `LOG`: Log entry describing details of data processing status.
          enum:
            - LOG
            - SUMMARY
        severity:
          type: string
          description: |
            Indicates the severity of the event reflected by this log entry.
          enum:
            - INFO
            - WARNING
            - ERROR
    LogEntry:
      type: object
      properties:
        id:
          type: integer
          format: int32
          description: |
            Unique ID of this change event.
        item_type:
          type: string
          example: DataSource
          description: |
            The type of resource that the change was performed on.
        item_id:
          type: integer
          format: int32
          description: |
            Unique ID of resource that the change was performed on.
        event:
          type: string
          example: association_added
          description: |
            The type of change event that was executed.
        change_summary:
          type: array
          items:
            type: string
            example: status
            description: >
              Summary of types of changes executed during this change event.
              This is usually a comma-separated list of properties or types of
              properties that were modified as a result of some user action.
        object_changes:
          type: object
          description: >
            This object contains before and after information on each property
            that was modified as a result of this change event.


            Each key in this object is the name of the property that was
            modified. The value of each property is a 2-element array. The first
            element shows the value of the property before the change event was
            executed and the second element shows the value of this property
            after the change event was executed. 


            For example, the values below should be interpreted as resource
            `status` was changed from `ACTIVE` to `PAUSED` and resource `name`
            was changed from `before` to `after`. 


            ```
             {
               "status": ["ACTIVE", "PAUSED"],
               "name": ["before", "after"]

             }

            ```     
          additionalProperties:
            x-additionalPropertiesName: property_name
            description: >
              The object key shows the resource property name that was modified.
              The value of each property is a 2-element array. The first element
              shows the value of the property before the change event was
              executed and the second element shows the value of this property
              after the change event was executed. 
            type: array
            items:
              type:
                - string
                - number
                - integer
                - boolean
                - object
                - array
                - 'null'
              minItems: 2
              maxItems: 2
        association_resource:
          type: object
          format: nullable
          description: >
            Sometimes change events result in updates to relationships between
            resources. This object reflects information about the resource
            relationship that was modified.
          properties:
            type:
              type: string
              description: >
                The resource type of the resource whose relationship with this
                resource was modified.
            id:
              type: integer
              format: int32
              description: >
                The ID of the resource whose relationship with this resource was
                modified.          
        request_ip:
          type: string
          format: ipv4
          example: 1.2.3.4
          description: |
            IP Address of the device where this change event request originated.
        request_user_agent:
          type: string
          description: >
            User Agent of the browser where this change event request
            originated.
        request_url:
          type: string
          format: url
          description: >
            Nexla UI or API URL that was accessed by the user to trigger this
            change event.
        user:
          type: object
          description: >
            Details about the user who triggered this change event. Note that if
            changes were triggered by a Nexla support team member acting on
            behalf of a user then this field reflects information about that
            user while `impersonator_id` reflects information about the Nexla
            support team member.
          properties:
            id:
              type: integer
              format: int32
            email:
              type: string
              format: email
              example: user@nexla.com
        impersonator_id:
          type: string
          format: nullable
          description: >
            If the changes were made by a Nexla support team member acting on
            behalf of a user then this field reflects information about the
            Nexla support team member.      
        org_id:
          type: integer
          format: int32
          description: |
            The ID of the organization that this resource belongs to.
        owner_id:
          type: integer
          format: int32
          description: |
            The ID of the user that this resource belongs to.  
        owner_email:
          type: string
          description: |
            Email ID of the user that this resource belongs to. 
        created_at:
          type: string
          format: date-time
          example: '2022-11-08T22:51:47.720Z'
    QuarantineResourceType:
      type: string
      enum:
        - ORG
        - USER
        - FLOW
        - PIPELINE
        - DATA_FLOW
        - CUSTOM_DATA_FLOW
        - SOURCE
        - DATASET
        - SINK
    DataCredential:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        access_roles:
          type: array
          items:
            type: string
        credentials_version:
          type: string
        managed:
          type: boolean
        credentials_type:
          type: string
        connector:
          type: object
          properties:
            id:
              type: integer
            type:
              type: string
            connection_type:
              type: string
            name:
              type: string
            description:
              type: string
            nexset_api_compatible:
              type: boolean
        api_keys:
          type: array
        credentials_non_secure_data:
          type: object
          additionalProperties:
            type:
              - string
              - object
              - integer
            x-additionalPropertiesName: credential_property
        verified_status:
          type: string
        verified_at:
          type: string
          format: date-time
        copied_from_id:
          type: integer
          format: nullable
        updated_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        tags:
          type: array
    QuarantineSetting:
      type: object
      properties:
        id:
          type: integer
          format: int32
        owner:
          $ref: '#/components/schemas/UserSimplified'
        org:
          $ref: '#/components/schemas/OrgSimplified'
        resource_type:
          $ref: '#/components/schemas/QuarantineResourceType'
        resource_id:
          type: integer
          format: int32
        config:
          type: object
          properties:
            start.cron:
              type: string
            path:
              type: string
          example:
            start.cron: 0 50 18 1 1/1 ? *
            path: /nexla_error_data/export
        data_credentials_id:
          type: integer
          format: int32
        credentials_type:
          type: string
          example: gdrive
        data_credentials:
          $ref: '#/components/schemas/DataCredential'
    QuarantineSettingMutable:
      type: object
      properties:
        data_credentials_id:
          type: integer
          description: >
            Nexla data credential to a file storage system where all error data
            should be exported. Configure the base folder within the location
            accessible by this credential by setting an appropriate value for
            `configure["path"]`.
        config:
          type: object
          required:
            - start.cron
            - path
          properties:
            start.cron:
              type: string
              description: >
                The interval at which Nexla should scan all quarantined records
                in the user's account and export them to the specified file
                storage.


                This should be a valid cron expression.
            path:
              type: string
              description: >
                The base folder where all quarantined records will be exported.
                Nexla will automatically create subfolder tree in this base
                folder when exporting error data files. These subfolders will be
                of the pattern
                `<base-path>/<nexla-env-code>/<resource-type>/<resource-id>/<yyyy>/<MM>/<dd>/<unique-file-name>.json`
          example:
            start.cron: 0 50 18 1 1/1 ? *
            path: /nexla_error_data/export
    QuarantineSettingCreate:
      allOf:
        - $ref: '#/components/schemas/QuarantineSettingMutable'
        - type: object
          required:
            - data_credentials_id
            - config
    ResponseOrgAccessor:
      type: object
      properties:
        type:
          type: string
          enum:
            - ORG
        email_domain:
          type: string
          example: nexla.com
        client_identifier:
          type: string
          format: nullable
    ResponseTeamAccessor:
      type: object
      properties:
        type:
          type: string
          enum:
            - TEAM
        name:
          type: string
    ResponseUserAccessor:
      type: object
      properties:
        type:
          type: string
          enum:
            - USER
        email:
          type: string
          example: example@nexla.com
    AccessorsResponseSchema:
      allOf:
        - oneOf:
            - $ref: '#/components/schemas/ResponseOrgAccessor'
            - $ref: '#/components/schemas/ResponseTeamAccessor'
            - $ref: '#/components/schemas/ResponseUserAccessor'
        - type: object
          properties:
            access_roles:
              $ref: '#/components/schemas/AccessRoles'
            created_at:
              type: string
              format: date-time
              example: '2021-04-06T21:02:17.000Z'
            updated_at:
              type: string
              format: date-time
              example: '2021-04-06T21:02:17.000Z'
    RequestUserAccessor:
      type: object
      properties:
        type:
          type: string
          enum:
            - USER
          description: >
            Choose this option if the access permissions should be granted to a
            user. 


            >  Note: Users can belong to multiple organizations. The platform
            allows granting access permission across organization boundaries
            only for Nexset `sharer` access role. 
        id:
          type: integer
          description: |
            Unique ID of the user that should be granted this permission. 
        email:
          type: string
          example: example@nexla.com
          description: >
            `Optional`: Only user-id or email is required to identify the user
            who should be granted this access permission.  
        org_id:
          type: integer
          description: >
            Users can belong to multiple organizations. Specify the org_id to
            explicitly set the organization context for this access permission.
            If this is not specified the platform will try to automatically
            assign the permission to the user's default organization (when
            granting sharer access on a Nexset) or to the current organization
            (for all other access roles).
    RequestTeamAccessor:
      type: object
      properties:
        type:
          type: string
          enum:
            - TEAM
          description: >
            Choose this option if the access permissions should be granted to a
            team.       
        id:
          type: integer
          description: |
            Unique ID of the team that should be granted this permission.
    RequestOrgAccessor:
      type: object
      properties:
        type:
          type: string
          enum:
            - ORG
          description: >
            Choose this option if the access permissions should be granted to an
            entire organization.      
        id:
          type: integer
          description: >
            Unique ID of the organization that should be granted this
            permission.
    AccessorsMutable:
      allOf:
        - oneOf:
            - $ref: '#/components/schemas/RequestUserAccessor'
            - $ref: '#/components/schemas/RequestTeamAccessor'
            - $ref: '#/components/schemas/RequestOrgAccessor'
        - type: object
          properties:
            access_roles:
              $ref: '#/components/schemas/AccessRoles'
    AccessorsRequestSchema:
      type: object
      properties:
        accessors:
          type: array
          items:
            $ref: '#/components/schemas/AccessorsMutable'
    UserBrief:
      type: object
      properties:
        id:
          type: integer
        full_name:
          type: string
        email:
          type: string
        org:
          type: integer
        impersonated:
          type: boolean
        impersonator:
          allOf:
            - $ref: '#/components/schemas/UserSimplified'
            - type: object
              properties:
                org:
                  type: integer
    OrgMembershipToken:
      type: object
      properties:
        api_key:
          type: string
        status:
          $ref: '#/components/schemas/OrgMembershipStatus'
        is_admin?:
          type: boolean
    Token:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
          enum:
            - Bearer
        expires_in:
          type: integer
        user:
          $ref: '#/components/schemas/UserBrief'
        org_membership:
          $ref: '#/components/schemas/OrgMembershipToken'
        org:
          $ref: '#/components/schemas/OrgSimplified'
    nexset_record:
      type: object
      additionalProperties:
        type: string
        x-additionalPropertiesName: attribute_name
        description: |
          Property Name: Attribute name in the record.

          Property Value: Attribute value in the record.
  responses:
    data_credential_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                name:
                  type: string
                description:
                  type:
                    - string
                    - 'null'
                owner:
                  $ref: '#/components/schemas/owner'
                org:
                  $ref: '#/components/schemas/org'
                access_roles:
                  $ref: '#/components/schemas/AccessRoles'
                credentials_version:
                  type: string
                credentials_type:
                  type: string
                connector:
                  type: object
                  properties:
                    id:
                      type: integer
                    type:
                      type: string
                    connection_type:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    nexset_api_compatible:
                      type: boolean
                verified_status:
                  type: string
                verified_at:
                  type: string
                  format: date-time
                copied_from_id:
                  type:
                    - integer
                    - 'null'
                updated_at:
                  type: string
                  format: date-time
                created_at:
                  type: string
                  format: date-time
                vendor:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                    connection_type:
                      type: string
                template_config:
                  type:
                    - object
                    - 'null'
    data_credential_one:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              description:
                type: string
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              credentials_version:
                type: string
              managed:
                type: boolean
              credentials_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              api_keys:
                type: array
              credentials_non_secure_data:
                type: object
                additionalProperties:
                  type:
                    - string
                    - object
                    - integer
                  x-additionalPropertiesName: credential_property
              verified_status:
                type: string
              verified_at:
                type: string
                format: date-time
              copied_from_id:
                type: 'null'
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
              tags:
                type: array
    probe_tree:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/probe_tree_common'
    probe_sample:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - ok
                description: >
                  Response status code from the third-party storage system to
                  which this credential connects. `Ok` indicates that the
                  request resulted in a valid response from the storage system.
              message:
                type: string
                enum:
                  - Ok
                description: >
                  Message string indicating response validity from the
                  underlying storage system. `Ok` indicates that the request
                  resulted in a valid response from the storage system.

                  Errors are returned as relevant message strings indicating the
                  failure reasons.
              connection_type:
                allOf:
                  - $ref: '#/components/schemas/ConnectorTypeFile'
                  - $ref: '#/components/schemas/ConnectorTypeDatabase'
                  - $ref: '#/components/schemas/ConnectorTypeNoSql'
                  - $ref: '#/components/schemas/ConnectorTypeKafka'
                  - $ref: '#/components/schemas/ConnectorTypeVectorDB'
                  - type: string
                    enum:
                      - rest
                  - type: string
                    enum:
                      - soap
              output:
                oneOf:
                  - type: object
                    description: >
                      Response structure of sample file content from a file-type
                      store.
                    properties:
                      contentType:
                        type: string
                        description: >
                          File content type. Usually, this is
                          `application/json`, `text/plain`, or
                          `application/binary`.
                      statusCode:
                        type: integer
                        description: >
                          Storage system status code for the sample request.
                          Usually, this is 200 for a successful sample attempt
                          and other status codes for unsuccessful sample
                          attempts.
                      response:
                        type: string
                        description: |
                          Sample lines from the file. 
                  - type: object
                    description: >
                      Response structure of sample rows from a database-type
                      store.
                    properties:
                      contentType:
                        type: string
                        description: >
                          Response content type. Usually, this is
                          `application/json`.
                      statusCode:
                        type: integer
                        description: >
                          Storage system status code for the sample request.
                          Usually, this is 200 for a successful sample attempt
                          and other status codes for unsuccessful sample
                          attempts.
                      response:
                        type: object
                        properties:
                          columns:
                            type: array
                            description: |
                              An array of column names in the sample response.
                            items:
                              type: string
                          data:
                            type: array
                            description: |
                              An array of data rows in the sample response.
                            items:
                              type: object
                              additionalProperties:
                                type:
                                  - integer
                                  - string
                                  - object
                                x-additionalPropertiesName: column_name
                                description: |
                                  Value of the column in this row of data.
                  - type: object
                    description: >
                      The response structure for sample documents from a NoSQL
                      document store.
                    properties:
                      contentType:
                        type: string
                        enum:
                          - application/json
                        description: >
                          Response content type. Usually, this is
                          `application/json`.
                      statusCode:
                        type: integer
                        description: >
                          Storage system status code for the sample request.
                          Usually, this is 200 for a successful sample attempt
                          and other status codes for unsuccessful sample
                          attempts.
                      response:
                        type: string
                        description: >
                          JSON string in which each key is a document name and
                          the value of each key is the content of the
                          corresponding document.
                  - type: object
                    description: >
                      The response structure for the API response from a
                      rest/soap connector.
                    properties:
                      contentType:
                        type: string
                        description: >
                          Connector response content type. Usually, this is
                          `application/json`, `text/plain`, or
                          `application/binary`.
                      statusCode:
                        type: integer
                        description: >
                          Storage system status code for the sample request.
                          Usually, this is 200 for a successful sample attempt
                          and other status codes for unsuccessful sample
                          attempts.
                      response:
                        type: string
                        description: >
                          API response from the 3rd party (connector)
                          API.                  

                            
                                           
    FlowsMany:
      description: Success
      content:
        application/json:
          schema:
            allOf:
              - type: object
                properties:
                  flows:
                    $ref: '#/components/schemas/FlowNodes'
              - $ref: '#/components/schemas/FlowElements'
    FlowsOne:
      description: Success
      content:
        application/json:
          schema:
            allOf:
              - type: object
                properties:
                  flows:
                    type: array
                    minItems: 1
                    maxItems: 1
                    items:
                      $ref: '#/components/schemas/FlowOriginNode'
              - $ref: '#/components/schemas/FlowElements'
    data_source_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                name:
                  type: string
                description:
                  type:
                    - string
                    - 'null'
                status:
                  type: string
                ingest_method:
                  type: string
                source_format:
                  type: string
                managed:
                  type: boolean
                code_container_id:
                  type:
                    - integer
                    - 'null'
                copied_from_id:
                  type:
                    - integer
                    - 'null'
                created_at:
                  type: string
                  format: date-time
                updated_at:
                  type: string
                  format: date-time
                source_type:
                  type: string
                connector_type:
                  type: string
                connector:
                  type: object
                  properties:
                    id:
                      type: integer
                    type:
                      type: string
                    connection_type:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    nexset_api_compatible:
                      type: boolean
                access_roles:
                  $ref: '#/components/schemas/AccessRoles'
                auto_generated:
                  type: boolean
                owner:
                  $ref: '#/components/schemas/owner'
                org:
                  $ref: '#/components/schemas/org'
                data_sets:
                  type: array
                tags:
                  type: array
                flow_type:
                  type: string
                run_ids:
                  type: array
                has_template:
                  type: boolean
                vendor_endpoint:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                vendor:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                    connection_type:
                      type: string
    data_source_one:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              name:
                type: string
              description:
                type: 'null'
              status:
                type: string
              data_sets:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: integer
                    id:
                      type: integer
                    owner_id:
                      type: integer
                    org_id:
                      type: integer
                    name:
                      type: string
                    description:
                      type: string
                    updated_at:
                      type: string
                      format: date-time
                    created_at:
                      type: string
                      format: date-time
              ingest_method:
                type: string
              source_format:
                type: string
              source_config:
                type: object
                description: >
                  The source configuration properties that were set as
                  `source_config` in the payload-to-source create/update API
                  calls.
                additionalProperties:
                  type: string
                  x-additionalPropertiesName: source_config_property
              poll_schedule:
                type: 'null'
              managed:
                type: boolean
              code_container_id:
                type: 'null'
              source_type:
                type: string
              connector_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              api_keys:
                type: array
              auto_generated:
                type: boolean
              data_credentials:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  owner:
                    $ref: '#/components/schemas/owner'
                  org:
                    $ref: '#/components/schemas/org'
                  access_roles:
                    $ref: '#/components/schemas/AccessRoles'
                  credentials_version:
                    type: string
                  managed:
                    type: boolean
                  credentials_type:
                    type: string
                  connector:
                    type: object
                    properties:
                      id:
                        type: integer
                      type:
                        type: string
                      connection_type:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      nexset_api_compatible:
                        type: boolean
                  api_keys:
                    type: array
                  credentials_non_secure_data:
                    type: object
                    additionalProperties:
                      type:
                        - string
                        - object
                        - integer
                      x-additionalPropertiesName: credential_property
                  verified_status:
                    type: string
                  verified_at:
                    type: string
                    format: date-time
                  copied_from_id:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  tags:
                    type: array
              run_ids:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                    created_at:
                      type: string
                      format: date-time
              copied_from_id:
                type: 'null'
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
              tags:
                type: array
              flow_type:
                type: string
    data_source_one_expand:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              name:
                type: string
              description:
                type: 'null'
              status:
                type: string
              data_sets:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: integer
                    id:
                      type: integer
                    owner_id:
                      type: integer
                    org_id:
                      type: integer
                    name:
                      type: string
                    description:
                      type: string
                    updated_at:
                      type: string
                      format: date-time
                    created_at:
                      type: string
                      format: date-time
                    sample_service_id:
                      type:
                        - 'null'
                    source_schema:
                      $ref: '#/components/schemas/data_set_schema'
                    transform:
                      type: object
                      properties:
                        version:
                          type: integer
                        data_maps:
                          type: array
                        transforms:
                          type: array
                        custom_config:
                          type: object
                    output_schema:
                      $ref: '#/components/schemas/data_set_schema'
              ingest_method:
                type: string
              source_format:
                type: string
              source_config:
                type: object
                additionalProperties:
                  type: string
              poll_schedule:
                type: 'null'
              managed:
                type: boolean
              code_container_id:
                type: 'null'
              source_type:
                type: string
              connector_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              api_keys:
                type: array
              auto_generated:
                type: boolean
              data_credentials:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  owner:
                    $ref: '#/components/schemas/owner'
                  org:
                    $ref: '#/components/schemas/org'
                  access_roles:
                    $ref: '#/components/schemas/AccessRoles'
                  credentials_version:
                    type: string
                  managed:
                    type: boolean
                  credentials_type:
                    type: string
                  connector:
                    type: object
                    properties:
                      id:
                        type: integer
                      type:
                        type: string
                      connection_type:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      nexset_api_compatible:
                        type: boolean
                  api_keys:
                    type: array
                  credentials_non_secure_data:
                    type: object
                    additionalProperties:
                      type:
                        - string
                        - object
                        - integer
                      x-additionalPropertiesName: credential_property
                  verified_status:
                    type: string
                  verified_at:
                    type: string
                    format: date-time
                  copied_from_id:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  tags:
                    type: array
              run_ids:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                    created_at:
                      type: string
                      format: date-time
              copied_from_id:
                type: 'null'
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
              tags:
                type: array
    data_sets_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/DataSet'
    data_sets_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DataSet'
    data_sets_sample:
      description: Success
      content:
        application/json:
          schema:
            oneOf:
              - type: array
                description: Output samples without metadata
                items:
                  type: object
                  additionalProperties:
                    x-additionalPropertiesName: record_attribute
                    type:
                      - number
                      - string
                      - boolean
                      - array
                      - object
                    description: |
                      Contents of the record in this sample.
              - type: array
                items:
                  type: object
                  properties:
                    rawMessage:
                      type: object
                      description: |
                        Contents of the record in this sample.
                      additionalProperties:
                        x-additionalPropertiesName: record_attribute
                        type:
                          - number
                          - string
                          - boolean
                          - array
                          - object
                    nexlaMetaData:
                      type: object
                      description: |
                        Metadata about this record.
                      properties:
                        sourceType:
                          type: string
                          example: GDRIVE
                        ingestTime:
                          type: integer
                          format: int64
                          example: 1657222945906
                        sourceOffset:
                          type: integer
                          format: int32
                          example: 0
                        sourceKey:
                          type: string
                          example: aBcDeFg
                        topic:
                          type: string
                          format: nullable
                        resourceType:
                          type: string
                          example: SOURCE
                        resourceId:
                          type: integer
                          format: int32
                          example: 1
                        trackerId:
                          type: object
                          additionalProperties:
                            x-additionalPropertiesName: tracker_info
                            type: string
                            description: |
                              Details about the Nexla lineage tracker.
                        eof:
                          type: boolean
                        lastModified:
                          type: integer
                          format: int64
                          example: 1656524615000
                        runId:
                          type: integer
                          format: int64
                          example: 1657222941374
                        tags:
                          type: object
                          additionalProperties:
                            x-additionalPropertiesName: tag_key
                            type: string
                        flow_type:
                          type: string
                          example: streaming
    data_sink_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                name:
                  type: string
                description:
                  type:
                    - string
                    - 'null'
                status:
                  type: string
                data_set_id:
                  type:
                    - integer
                    - 'null'
                data_map_id:
                  type:
                    - integer
                    - 'null'
                data_source_id:
                  type:
                    - 'null'
                sink_format:
                  type:
                    - 'null'
                sink_schedule:
                  type:
                    - 'null'
                in_memory:
                  type: boolean
                managed:
                  type: boolean
                copied_from_id:
                  type:
                    - integer
                    - 'null'
                updated_at:
                  type: string
                  format: date-time
                created_at:
                  type: string
                  format: date-time
                sink_type:
                  type: string
                connector_type:
                  type: string
                connector:
                  type: object
                  properties:
                    id:
                      type: integer
                    type:
                      type: string
                    connection_type:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    nexset_api_compatible:
                      type: boolean
                access_roles:
                  $ref: '#/components/schemas/AccessRoles'
                owner:
                  $ref: '#/components/schemas/owner'
                org:
                  $ref: '#/components/schemas/org'
                data_set:
                  type:
                    - object
                    - 'null'
                  properties:
                    id:
                      type: integer
                    owner_id:
                      type: integer
                    org_id:
                      type: integer
                    name:
                      type: string
                    description:
                      type: string
                    status:
                      type: string
                    copied_from_id:
                      type:
                        - integer
                        - 'null'
                    created_at:
                      type: string
                      format: date-time
                    updated_at:
                      type: string
                      format: date-time
                data_map:
                  type:
                    - object
                    - 'null'
                  properties:
                    id:
                      type: integer
                    owner_id:
                      type: integer
                    org_id:
                      type: integer
                    name:
                      type: string
                    description:
                      type: string
                    public:
                      type: boolean
                    created_at:
                      type: string
                      format: date-time
                    updated_at:
                      type: string
                      format: date-time
                tags:
                  type: array
                flow_type:
                  type: string
                has_template:
                  type: boolean
                vendor_endpoint:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                vendor:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                    connection_type:
                      type: string
    data_sink_one:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              name:
                type: string
              description:
                type: 'null'
              status:
                type: string
              data_set_id:
                type: integer
              data_map_id:
                type: 'null'
              data_source_id:
                type: 'null'
              sink_format:
                type: 'null'
              sink_config:
                type: object
                description: >
                  The destination configuration properties that were set as
                  `sink_config` in the payload-to-destination create/update API
                  calls.
                additionalProperties:
                  type: string
                  x-additionalPropertiesName: sink_config_property
              sink_schedule:
                type: 'null'
              in_memory:
                type: boolean
              managed:
                type: boolean
              sink_type:
                type: string
              connector_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              data_set:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
              data_credentials:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  owner:
                    $ref: '#/components/schemas/owner'
                  org:
                    $ref: '#/components/schemas/org'
                  access_roles:
                    $ref: '#/components/schemas/AccessRoles'
                  credentials_version:
                    type: string
                  managed:
                    type: boolean
                  credentials_type:
                    type: string
                  connector:
                    type: object
                    properties:
                      id:
                        type: integer
                      type:
                        type: string
                      connection_type:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      nexset_api_compatible:
                        type: boolean
                  api_keys:
                    type: array
                  credentials_non_secure_data:
                    type: object
                    additionalProperties:
                      type:
                        - string
                        - object
                        - integer
                      x-additionalPropertiesName: credential_property
                  verified_status:
                    type: string
                  verified_at:
                    type: string
                    format: date-time
                  copied_from_id:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  tags:
                    type: array
              copied_from_id:
                type: 'null'
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
              tags:
                type: array
              flow_type:
                type: string
    data_sink_one_expand:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              name:
                type: string
              description:
                type: 'null'
              status:
                type: string
              data_set_id:
                type: integer
              data_map_id:
                type: 'null'
              data_source_id:
                type: 'null'
              sink_format:
                type: 'null'
              sink_config:
                type: object
                description: >
                  The destination configuration properties that were set as
                  `sink_config` in the payload-to-destination create/update API
                  calls.
                additionalProperties:
                  type: string
                  x-additionalPropertiesName: sink_config_property
              sink_schedule:
                type: 'null'
              in_memory:
                type: boolean
              managed:
                type: boolean
              sink_type:
                type: string
              connector_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              data_set:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  output_schema:
                    $ref: '#/components/schemas/data_set_schema'
                  status:
                    type: string
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  version:
                    type: integer
              data_credentials:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  owner:
                    $ref: '#/components/schemas/owner'
                  org:
                    $ref: '#/components/schemas/org'
                  access_roles:
                    $ref: '#/components/schemas/AccessRoles'
                  credentials_version:
                    type: string
                  managed:
                    type: boolean
                  credentials_type:
                    type: string
                  connector:
                    type: object
                    properties:
                      id:
                        type: integer
                      type:
                        type: string
                      connection_type:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      nexset_api_compatible:
                        type: boolean
                  api_keys:
                    type: array
                  credentials_non_secure_data:
                    type: object
                    additionalProperties:
                      type:
                        - string
                        - object
                        - integer
                      x-additionalPropertiesName: credential_property
                  verified_status:
                    type: string
                  verified_at:
                    type: string
                    format: date-time
                  copied_from_id:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  tags:
                    type: array
              copied_from_id:
                type: 'null'
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
              tags:
                type: array
    data_maps_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/DataMap'
    data_maps_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DataMap'
    data_map_entries:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              additionalProperties:
                type:
                  - string
                  - number
                x-additionalPropertiesName: data_map_entry
                description: >
                  An array of objects where each object is a row from the data
                  map.          
                    
    Transform:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Transform'
    code_containers_one_Transform:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Transform'
    CodeContainer:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CodeContainer'
    AttributeTransform:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AttributeTransform'
    code_containers_one_AttributeTransform:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AttributeTransform'
    code_containers_many_CodeContainer:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CodeContainer'
    orgs_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                name:
                  type: string
                description:
                  type:
                    - string
                    - 'null'
                email_domain:
                  type: string
                email:
                  type:
                    - string
                    - 'null'
                  format: email
                client_identifier:
                  type:
                    - string
                    - 'null'
                org_webhook_host:
                  type: string
                  format: url
                default_cluster_id:
                  type: integer
                access_roles:
                  $ref: '#/components/schemas/AccessRoles'
                owner:
                  type: object
                  properties:
                    id:
                      type: integer
                    email:
                      type: string
                      format: email
                    full_name:
                      type: string
                    super_user:
                      type: boolean
                    impersonated:
                      type: boolean
                    default_org:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                    user_tier:
                      type:
                        - 'null'
                    status:
                      type: string
                    account_locked:
                      type: boolean
                    org_memberships:
                      type: array
                    email_verified_at:
                      type: string
                      format: date-time
                    tos_signed_at:
                      type:
                        - string
                        - 'null'
                      format: date-time
                    updated_at:
                      type: string
                      format: date-time
                    created_at:
                      type: string
                      format: date-time
                billing_owner:
                  type: object
                  properties:
                    id:
                      type: integer
                    email:
                      type: string
                      format: email
                    full_name:
                      type: string
                    super_user:
                      type: boolean
                    impersonated:
                      type: boolean
                    default_org:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                    user_tier:
                      type:
                        - 'null'
                    status:
                      type: string
                    account_locked:
                      type: boolean
                    org_memberships:
                      type: array
                    email_verified_at:
                      type: string
                      format: date-time
                    tos_signed_at:
                      type:
                        - string
                        - 'null'
                      format: date-time
                    updated_at:
                      type: string
                      format: date-time
                    created_at:
                      type: string
                      format: date-time
                admins:
                  type: array
                org_tier:
                  type:
                    - object
                    - 'null'
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                    record_count_limit:
                      type: integer
                    record_count_limit_time:
                      type: string
                    data_source_count_limit:
                      type: integer
                    trial_period_days:
                      type: integer
                members_default_access_role:
                  type: string
                status:
                  type: string
                default_reusable_code_container_access_role:
                  type: string
                require_org_admin_to_publish:
                  type: boolean
                require_org_admin_to_subscribe:
                  type: boolean
                email_domain_verified_at:
                  type:
                    - string
                    - 'null'
                  format: date-time
                name_verified_at:
                  type:
                    - string
                    - 'null'
                  format: date-time
                enable_nexla_password_login:
                  type: boolean
                updated_at:
                  type: string
                  format: date-time
                created_at:
                  type: string
                  format: date-time
    orgs_one:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              description:
                type: 'null'
              cluster_id:
                type: integer
              new_cluster_id:
                type: 'null'
              cluster_status:
                type: string
              email_domain:
                type: string
              email:
                type: 'null'
              client_identifier:
                type: string
              org_webhook_host:
                type: string
                format: url
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              owner:
                type: object
                properties:
                  id:
                    type: integer
                  email:
                    type: string
                    format: email
                  full_name:
                    type: string
                  impersonated:
                    type: boolean
                  default_org:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                  user_tier:
                    type: 'null'
                  status:
                    type: string
                  account_locked:
                    type: boolean
                  org_memberships:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                        is_admin?:
                          type: boolean
                        org_membership_status:
                          type: string
                  email_verified_at:
                    type: string
                    format: date-time
                  tos_signed_at:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
              billing_owner:
                type: object
                properties:
                  id:
                    type: integer
                  email:
                    type: string
                    format: email
                  full_name:
                    type: string
                  impersonated:
                    type: boolean
                  default_org:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                  user_tier:
                    type: 'null'
                  status:
                    type: string
                  account_locked:
                    type: boolean
                  org_memberships:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                        is_admin?:
                          type: boolean
                        org_membership_status:
                          type: string
                  email_verified_at:
                    type: string
                    format: date-time
                  tos_signed_at:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
              admins:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                    full_name:
                      type: string
                    email:
                      type: string
                      format: email
              org_tier:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  display_name:
                    type: string
                  record_count_limit:
                    type: integer
                  record_count_limit_time:
                    type: string
                  data_source_count_limit:
                    type: integer
                  trial_period_days:
                    type: integer
              members_default_access_role:
                type: string
              status:
                type: string
              default_reusable_code_container_access_role:
                type: string
              require_org_admin_to_publish:
                type: boolean
              require_org_admin_to_subscribe:
                type: boolean
              email_domain_verified_at:
                type: 'null'
              name_verified_at:
                type: 'null'
              enable_nexla_password_login:
                type: boolean
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
    org_members:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrgMember'
    teams_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Team'
    teams_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Team'
    team_members:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TeamMemberList'
    projects_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Project'
    projects_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Project'
    ProjectFlowsOld:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProjectDataFlow'
    users_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/User'
    users_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'
    users_many_expand:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/UserExpanded'
    users_one_expand:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UserExpanded'
    notifications_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Notification'
    notifications_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Notification'
    notifications_count:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              count:
                type: integer
    notification_types_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NotificationType'
    notification_types_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotificationType'
    notification_channel_settings_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NotificationChannelSetting'
    notification_channel_settings_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotificationChannelSetting'
    notification_settings_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NotificationSetting'
    notification_settings_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotificationSetting'
    notification_settings_many_type:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NotificationSettingTypeView'
    flows_account_metrics:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                description: >
                  Status of the report request. This must be `200` or `Ok` for
                  the metrics object in the response to be considered valid.
              metrics:
                type: array
                items:
                  type: object
                  properties:
                    data:
                      type: object
                      properties:
                        records:
                          type: integer
                          format: int32
                          description: >
                            The total number of records processed during the
                            specified time range. 
                        size:
                          type: integer
                          format: int32
                          description: >
                            The total volume of records processed (in bytes)
                            during the specified time
                            range.                     
                    start_time:
                      type: string
                      format: date-time
                    end_time:
                      type: string
                      format: date-time
    flows_dashboard:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                description: >
                  Status of the report request. This must be `200` or `Ok` for
                  the metrics object in the response to be considered
                  valid.          
              metrics:
                type: object
                properties:
                  sources:
                    type: object
                    additionalProperties:
                      $ref: '#/components/schemas/DashboardMetricSet'
                      x-additionalPropertiesName: data_source_id
                  sinks:
                    type: object
                    additionalProperties:
                      $ref: '#/components/schemas/DashboardMetricSet'
                      x-additionalPropertiesName: data_sink_id
                  datasets:
                    type: object
                    additionalProperties:
                      $ref: '#/components/schemas/DashboardMetricSet'
                      x-additionalPropertiesName: data_set_id
                  start_time:
                    type: string
                    format: date-time
                  end_time:
                    type: string
                    format: date-time
    user_metrics:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              metrics:
                type: array
                items:
                  type: object
                  properties:
                    time:
                      type: string
                      format: date
                      description: >
                        The date (in UTC) that the metrics in this entry are
                        applicable for.
                    records:
                      type: integer
                      format: int32
                      description: >
                        The total number of records that were processed on the
                        date indicated by the `time` property.                 
                    size:
                      type: integer
                      format: int32
                      description: >
                        The total volume (in bytes) of records that were
                        processed on the date indicated by the `time`
                        property.           
                    errors:
                      type: integer
                      format: int32
                      description: >
                        The total number of data processing errors that occurred
                        on the date indicated by the `time` property. 
              status:
                type: integer
                format: int32
                description: >
                  Status of the report request. This must be `200` or `Ok` for
                  the metrics object in the response to be considered
                  valid.          
    ResourceMetricsDaily:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              metrics:
                type: array
                items:
                  $ref: '#/components/schemas/ResourceMetricDaily'
              status:
                type: integer
                format: int32
                description: >
                  Status of the report request. This must be `200` or `Ok` for
                  the metrics object in the response to be considered
                  valid.          
    ResourceMetricsByRuns:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              metrics:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ResourceMetricByRun'
                  meta:
                    type: object
                    description: >
                      A special metadata object that indicates the relevant
                      response Nexla metadata for the metrics  responses. This
                      is useful for iterating through multiple pages of valid
                      data.
                    properties:
                      currentPage:
                        type: integer
                        description: |
                          Current page that this response corresponds to.
                      pageCount:
                        type: integer
                        description: >
                          Total number of valid pages of metrics data given the
                          current page size.  
                      totalCount:
                        type: integer
                        description: >
                          Total number of metrics entries that are available for
                          this
                          resource.                                              
              status:
                type: integer
                format: int32
                description: >
                  Status of the report request. This must be `200` or `Ok` for
                  the metrics object in the response to be considered valid. 
    FlowMetricsResponse:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                description: >
                  Status of the report request. This must be 200 for the data
                  object in the response to be considered valid.               
              message:
                type: string
                description: >
                  Message signifying status of the report request. This must be
                  `Ok` for the data object in the response to be considered
                  valid.       
              metrics:
                type: object
                properties:
                  data:
                    description: >
                      Flow metrics data aggregated by resource id for the time
                      period specified. If the request includes `groupby=runId`
                      then the metrics are further grouped by `runId` to
                      separate number of records processed per run id per
                      resource.
                    oneOf:
                      - type: object
                        additionalProperties:
                          x-additionalPropertiesName: run_id
                          description: |
                            Response format if request includes `groupby=runId`.
                          type: object
                          properties:
                            data_sources:
                              type: array
                              items:
                                $ref: '#/components/schemas/FlowResourceMetric'
                            data_sets:
                              type: array
                              items:
                                $ref: '#/components/schemas/FlowResourceMetric'
                            data_sinks:
                              type: array
                              items:
                                $ref: '#/components/schemas/FlowResourceMetric'
                      - type: object
                        properties:
                          data_sources:
                            type: array
                            items:
                              $ref: '#/components/schemas/FlowResourceMetric'
                          data_sets:
                            type: array
                            items:
                              $ref: '#/components/schemas/FlowResourceMetric'
                          data_sinks:
                            type: array
                            items:
                              $ref: '#/components/schemas/FlowResourceMetric'
                  meta:
                    type: object
                    description: >
                      A special metadata object that indicates the relevant
                      response Nexla metadata for the metrics  responses. This
                      is useful for iterating through multiple pages of valid
                      data.
                    properties:
                      currentPage:
                        type: integer
                        description: |
                          Current page that this response corresponds to.
                      pageCount:
                        type: integer
                        description: >
                          Total number of valid pages of metrics data given the
                          current page size.  
                      totalCount:
                        type: integer
                        description: >
                          Total number of metrics entries that are available for
                          this resource. 
    FlowLogsResponse:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                description: >
                  Status of the report request. This must be 200 for the data
                  object in the response to be considered valid.               
              message:
                type: string
                description: >
                  Message signifying status of the report request. This must be
                  `Ok` for the data object in the response to be considered
                  valid.            
              logs:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/FlowLogEntry'
                  meta:
                    type: object
                    description: >
                      A special metadata object that indicates the relevant
                      response Nexla metadata for the responses. This is useful
                      for iterating through multiple pages of valid data.
                    properties:
                      current_page:
                        type: integer
                        description: |
                          Current page that this response corresponds to.
                      pages_count:
                        type: integer
                        description: >
                          Total number of valid pages of logs data given the
                          current page size.  
                      total_count:
                        type: integer
                        description: >
                          Total number of log entries that are available for
                          this resource.
                      org_id:
                        type: integer
                        description: |
                          The id of the organization this flow belongs to.  
                      run_id:
                        type: integer
                        description: >
                          The run id (denoting ingestion cycle) that these log
                          were generated as part of.                      
    quarantine_settings_one:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/QuarantineSetting'
    accessors_list:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AccessorsResponseSchema'
    token:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Token'
x-tagGroups:
  - name: Session
    tags:
      - Session Management
  - name: Integrate
    tags:
      - Flows
      - Sources
      - Destinations (Data Sinks)
      - Nexsets (Data Sets)
      - Credentials
      - Data Maps
      - Transforms
      - Projects
  - name: Monitor
    tags:
      - Notifications
      - Metrics
      - Audit Logs
      - Quarantine Settings
  - name: Collaborate
    tags:
      - Access Control
  - name: Account Management
    tags:
      - Organizations
      - Users
      - Teams
  - name: Real-Time Events
    tags:
      - Webhooks
  - name: Rate Limiting
    tags:
      - Limits
